Merge "Add missing LOW_LATENCY_OFFBODY_DETECT handling"
diff --git a/audio/effect/2.0/vts/functional/VtsHalAudioEffectV2_0TargetTest.cpp b/audio/effect/2.0/vts/functional/VtsHalAudioEffectV2_0TargetTest.cpp
index f6da213..15a564a 100644
--- a/audio/effect/2.0/vts/functional/VtsHalAudioEffectV2_0TargetTest.cpp
+++ b/audio/effect/2.0/vts/functional/VtsHalAudioEffectV2_0TargetTest.cpp
@@ -31,8 +31,10 @@
using android::hardware::audio::common::V2_0::AudioDevice;
using android::hardware::audio::common::V2_0::AudioHandleConsts;
using android::hardware::audio::common::V2_0::AudioMode;
+using android::hardware::audio::common::V2_0::AudioSource;
using android::hardware::audio::common::V2_0::Uuid;
using android::hardware::audio::effect::V2_0::AudioBuffer;
+using android::hardware::audio::effect::V2_0::EffectAuxChannelsConfig;
using android::hardware::audio::effect::V2_0::EffectBufferConfig;
using android::hardware::audio::effect::V2_0::EffectConfig;
using android::hardware::audio::effect::V2_0::EffectDescriptor;
@@ -278,6 +280,33 @@
EXPECT_EQ(Result::OK, ret2);
}
+TEST_F(AudioEffectHidlTest, GetConfigReverse) {
+ description("Verify that GetConfigReverse does not crash");
+ Return<void> ret =
+ effect->getConfigReverse([&](Result, const EffectConfig&) {});
+ EXPECT_TRUE(ret.isOk());
+}
+
+TEST_F(AudioEffectHidlTest, GetSupportedAuxChannelsConfigs) {
+ description("Verify that GetSupportedAuxChannelsConfigs does not crash");
+ Return<void> ret = effect->getSupportedAuxChannelsConfigs(
+ 0, [&](Result, const hidl_vec<EffectAuxChannelsConfig>&) {});
+ EXPECT_TRUE(ret.isOk());
+}
+
+TEST_F(AudioEffectHidlTest, GetAuxChannelsConfig) {
+ description("Verify that GetAuxChannelsConfig does not crash");
+ Return<void> ret = effect->getAuxChannelsConfig(
+ [&](Result, const EffectAuxChannelsConfig&) {});
+ EXPECT_TRUE(ret.isOk());
+}
+
+TEST_F(AudioEffectHidlTest, SetAuxChannelsConfig) {
+ description("Verify that SetAuxChannelsConfig does not crash");
+ Return<Result> ret = effect->setAuxChannelsConfig(EffectAuxChannelsConfig());
+ EXPECT_TRUE(ret.isOk());
+}
+
// Not generated automatically because AudioBuffer contains
// instances of hidl_memory which can't be compared properly
// in general case due to presence of handles.
@@ -394,6 +423,25 @@
EXPECT_EQ(Result::OK, ret);
}
+TEST_F(AudioEffectHidlTest, SetConfigReverse) {
+ description("Verify that SetConfigReverse does not crash");
+ Return<Result> ret =
+ effect->setConfigReverse(EffectConfig(), nullptr, nullptr);
+ EXPECT_TRUE(ret.isOk());
+}
+
+TEST_F(AudioEffectHidlTest, SetInputDevice) {
+ description("Verify that SetInputDevice does not crash");
+ Return<Result> ret = effect->setInputDevice(AudioDevice::IN_BUILTIN_MIC);
+ EXPECT_TRUE(ret.isOk());
+}
+
+TEST_F(AudioEffectHidlTest, SetAudioSource) {
+ description("Verify that SetAudioSource does not crash");
+ Return<Result> ret = effect->setAudioSource(AudioSource::MIC);
+ EXPECT_TRUE(ret.isOk());
+}
+
TEST_F(AudioEffectHidlTest, Offload) {
description("Verify that calling Offload methods works for an effect");
EffectOffloadParameter offloadParam;
@@ -434,17 +482,48 @@
EXPECT_EQ(Result::OK, ret2);
}
-// Testing getConfigReverse, getAuxChannelsConfig,
-// getSupportedAuxChannelsConfigs, setAudioSource, setConfigReverse,
-// setInputDevice doesn't make sense, because normally they are not supported by
-// the Equalizer, but it wouldn't be a problem if some vendor implementation
-// supports them, thus we can't test these methods neither for success, nor for
-// failure.
+TEST_F(AudioEffectHidlTest, Command) {
+ description("Verify that Command does not crash");
+ Return<void> ret = effect->command(0, hidl_vec<uint8_t>(), 0,
+ [&](int32_t, const hidl_vec<uint8_t>&) {});
+ EXPECT_TRUE(ret.isOk());
+}
-// command, getParameter, getSupportedConfigsForFeature,
-// getCurrentConfigForFeature, setCurrentConfigForFeature, setParameter are
-// opaque channels between vendor apps and HALs, and can't be meaningfully
-// tested with effects that don't support them.
+TEST_F(AudioEffectHidlTest, SetParameter) {
+ description("Verify that SetParameter does not crash");
+ Return<Result> ret =
+ effect->setParameter(hidl_vec<uint8_t>(), hidl_vec<uint8_t>());
+ EXPECT_TRUE(ret.isOk());
+}
+
+TEST_F(AudioEffectHidlTest, GetParameter) {
+ description("Verify that GetParameter does not crash");
+ Return<void> ret = effect->getParameter(
+ hidl_vec<uint8_t>(), 0, [&](Result, const hidl_vec<uint8_t>&) {});
+ EXPECT_TRUE(ret.isOk());
+}
+
+TEST_F(AudioEffectHidlTest, GetSupportedConfigsForFeature) {
+ description("Verify that GetSupportedConfigsForFeature does not crash");
+ Return<void> ret = effect->getSupportedConfigsForFeature(
+ 0, 0, 0, [&](Result, uint32_t, const hidl_vec<uint8_t>&) {});
+ EXPECT_TRUE(ret.isOk());
+}
+
+TEST_F(AudioEffectHidlTest, GetCurrentConfigForFeature) {
+ description("Verify that GetCurrentConfigForFeature does not crash");
+ Return<void> ret = effect->getCurrentConfigForFeature(
+ 0, 0, [&](Result, const hidl_vec<uint8_t>&) {});
+ EXPECT_TRUE(ret.isOk());
+}
+
+TEST_F(AudioEffectHidlTest, SetCurrentConfigForFeature) {
+ description("Verify that SetCurrentConfigForFeature does not crash");
+ Return<Result> ret =
+ effect->setCurrentConfigForFeature(0, hidl_vec<uint8_t>());
+ EXPECT_TRUE(ret.isOk());
+}
+
// The main test class for Equalizer Audio Effect HIDL HAL.
class EqualizerAudioEffectHidlTest : public AudioEffectHidlTest {
diff --git a/biometrics/fingerprint/2.1/vts/functional/VtsHalBiometricsFingerprintV2_1TargetTest.cpp b/biometrics/fingerprint/2.1/vts/functional/VtsHalBiometricsFingerprintV2_1TargetTest.cpp
index cd38f2e..d3f6612 100644
--- a/biometrics/fingerprint/2.1/vts/functional/VtsHalBiometricsFingerprintV2_1TargetTest.cpp
+++ b/biometrics/fingerprint/2.1/vts/functional/VtsHalBiometricsFingerprintV2_1TargetTest.cpp
@@ -23,6 +23,10 @@
#include <hidl/HidlTransportSupport.h>
#include <VtsHalHidlTargetTestBase.h>
+#include <cinttypes>
+#include <future>
+#include <utility>
+
using android::Condition;
using android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprint;
using android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback;
@@ -34,156 +38,423 @@
using android::Mutex;
using android::sp;
+namespace {
+
+static const uint32_t kTimeout = 3;
+static const std::chrono::seconds kTimeoutInSeconds = std::chrono::seconds(kTimeout);
+static const uint32_t kGroupId = 99;
+static const std::string kTmpDir = "/data/local/tmp/";
+static const uint32_t kIterations = 1000;
+
+// Wait for a callback to occur (signaled by the given future) up to the
+// provided timeout. If the future is invalid or the callback does not come
+// within the given time, returns false.
+template<class ReturnType>
+bool waitForCallback(
+ std::future<ReturnType> future,
+ std::chrono::milliseconds timeout = kTimeoutInSeconds) {
+ auto expiration = std::chrono::system_clock::now() + timeout;
+
+ EXPECT_TRUE(future.valid());
+ if (future.valid()) {
+ std::future_status status = future.wait_until(expiration);
+ EXPECT_NE(std::future_status::timeout, status)
+ << "Timed out waiting for callback";
+ if (status == std::future_status::ready) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+// Base callback implementation that just logs all callbacks by default
+class FingerprintCallbackBase : public IBiometricsFingerprintClientCallback {
+ public:
+ // implement methods of IBiometricsFingerprintClientCallback
+ virtual Return<void> onEnrollResult(uint64_t, uint32_t, uint32_t, uint32_t)
+ override {
+ ALOGD("Enroll callback called.");
+ return Return<void>();
+ }
+
+ virtual Return<void> onAcquired(uint64_t, FingerprintAcquiredInfo, int32_t)
+ override {
+ ALOGD("Acquired callback called.");
+ return Return<void>();
+ }
+
+ virtual Return<void> onAuthenticated(uint64_t, uint32_t, uint32_t,
+ const hidl_vec<uint8_t>&) override {
+ ALOGD("Authenticated callback called.");
+ return Return<void>();
+ }
+
+ virtual Return<void> onError(uint64_t, FingerprintError, int32_t)
+ override {
+ ALOGD("Error callback called.");
+ EXPECT_TRUE(false); // fail any test that triggers an error
+ return Return<void>();
+ }
+
+ virtual Return<void> onRemoved(uint64_t, uint32_t, uint32_t, uint32_t)
+ override {
+ ALOGD("Removed callback called.");
+ return Return<void>();
+ }
+
+ virtual Return<void> onEnumerate(uint64_t, uint32_t, uint32_t, uint32_t)
+ override {
+ ALOGD("Enumerate callback called.");
+ return Return<void>();
+ }
+};
+
+class EnumerateCallback : public FingerprintCallbackBase {
+ public:
+ virtual Return<void> onEnumerate(uint64_t deviceId, uint32_t fingerId,
+ uint32_t groupId, uint32_t remaining) override {
+ this->deviceId = deviceId;
+ this->fingerId = fingerId;
+ this->groupId = groupId;
+ this->remaining = remaining;
+
+ if(remaining == 0UL) {
+ promise.set_value();
+ }
+ return Return<void>();
+ }
+
+ uint64_t deviceId;
+ uint32_t fingerId;
+ uint32_t groupId;
+ uint32_t remaining;
+ std::promise<void> promise;
+};
+
+class ErrorCallback : public FingerprintCallbackBase {
+ public:
+ ErrorCallback(
+ bool filterErrors=false,
+ FingerprintError errorType=FingerprintError::ERROR_NO_ERROR) {
+ this->filterErrors = filterErrors;
+ this->errorType = errorType;
+ }
+
+ virtual Return<void> onError(uint64_t deviceId, FingerprintError error,
+ int32_t vendorCode) override {
+ if ((this->filterErrors && this->errorType == error) || !this->filterErrors) {
+ this->deviceId = deviceId;
+ this->error = error;
+ this->vendorCode = vendorCode;
+ promise.set_value();
+ }
+ return Return<void>();
+ }
+
+ bool filterErrors;
+ FingerprintError errorType;
+ uint64_t deviceId;
+ FingerprintError error;
+ int32_t vendorCode;
+ std::promise<void> promise;
+};
+
+class RemoveCallback : public FingerprintCallbackBase {
+ public:
+ RemoveCallback(uint32_t groupId) {
+ this->removeGroupId = groupId;
+ }
+
+ virtual Return<void> onRemoved(uint64_t, uint32_t, uint32_t groupId,
+ uint32_t remaining) override {
+ EXPECT_EQ(this->removeGroupId, groupId);
+ if(remaining == 0UL) {
+ promise.set_value();
+ }
+ return Return<void>();
+ }
+
+ uint32_t removeGroupId;
+ std::promise<void> promise;
+};
+
class FingerprintHidlTest : public ::testing::VtsHalHidlTargetTestBase {
+ public:
+ virtual void SetUp() override {
+ mService = ::testing::VtsHalHidlTargetTestBase::getService<IBiometricsFingerprint>();
+ ASSERT_FALSE(mService == nullptr);
-protected:
- class MyCallback : public IBiometricsFingerprintClientCallback {
+ // Create an active group
+ Return<RequestStatus> res = mService->setActiveGroup(kGroupId, kTmpDir);
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+ }
- // implement methods of IBiometricsFingerprintClientCallback
- virtual Return<void> onEnrollResult(uint64_t, uint32_t, uint32_t,
- uint32_t) override {
- callBackCalled();
- return Return<void>();
- }
+ virtual void TearDown() override {}
- virtual Return<void> onAcquired(uint64_t, FingerprintAcquiredInfo,
- int32_t) override {
- callBackCalled();
- return Return<void>();
- }
-
- virtual Return<void> onAuthenticated(uint64_t, uint32_t, uint32_t,
- const hidl_vec<uint8_t>&) override {
- callBackCalled();
- return Return<void>();
- }
-
- virtual Return<void> onError(uint64_t, FingerprintError error, int32_t)
- override {
- mTestCase->mErr = error;
- callBackCalled();
- return Return<void>();
- }
-
- virtual Return<void> onRemoved(uint64_t, uint32_t, uint32_t, uint32_t)
- override {
- callBackCalled();
- return Return<void>();
- }
-
- virtual Return<void> onEnumerate(uint64_t, uint32_t, uint32_t,
- uint32_t) override {
- callBackCalled();
- return Return<void>();
- }
-
- void callBackCalled () {
- mTestCase->mCallbackCalled = true;
- mTestCase->mCallbackCond.broadcast();
- }
-
- FingerprintHidlTest* mTestCase;
- public:
- MyCallback(FingerprintHidlTest* aTest) : mTestCase(aTest) {}
- };
-
- sp<MyCallback> mCallback;
- bool mCallbackCalled;
- Condition mCallbackCond;
- FingerprintError mErr;
- Mutex mLock;
- sp<IBiometricsFingerprint> mService;
- static const unsigned int kThresholdInSeconds = 3;
-
- void clearErr () {
- mErr = FingerprintError::ERROR_NO_ERROR;
- }
-
- // Timed callback mechanism. Will block up to kThresholdInSeconds,
- // returning true if callback was invoked in that time frame.
- bool waitForCallback(const unsigned int seconds = kThresholdInSeconds) {
- nsecs_t reltime = seconds_to_nanoseconds(seconds);
- Mutex::Autolock _l(mLock);
- nsecs_t endTime = systemTime() + reltime;
- while (!mCallbackCalled) {
- if (reltime == 0) {
- mCallbackCond.wait(mLock);
- } else {
- nsecs_t now = systemTime();
- if (now > endTime) {
- return false;
- }
- mCallbackCond.waitRelative(mLock, endTime - now);
- }
- }
- return true;
- }
-public:
- FingerprintHidlTest (): mCallbackCalled(false) {}
-
- virtual void SetUp() override {
- mService = ::testing::VtsHalHidlTargetTestBase::getService<IBiometricsFingerprint>();
-
- ASSERT_NE(mService, nullptr);
- clearErr();
-
- mCallback = new MyCallback(this);
- // TODO: instantly fail any test that receives a death notification
- }
-
- virtual void TearDown() override {}
+ sp<IBiometricsFingerprint> mService;
};
-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 = mService->setNotify(mCallback);
- EXPECT_NE(rc, 0UL);
+ sp<FingerprintCallbackBase> cb = new FingerprintCallbackBase();
+ Return<uint64_t> rc = mService->setNotify(cb);
+ ASSERT_NE(0UL, static_cast<uint64_t>(rc));
+}
+
+// Starting the service with null callback should succeed.
+TEST_F(FingerprintHidlTest, ConnectNullTest) {
+ Return<uint64_t> rc = mService->setNotify(NULL);
+ ASSERT_NE(0UL, static_cast<uint64_t>(rc));
+}
+
+// Pre-enroll should always return unique, cryptographically secure, non-zero number
+TEST_F(FingerprintHidlTest, PreEnrollTest) {
+ std::map<uint64_t, uint64_t> m;
+
+ for(unsigned int i = 0; i < kIterations; ++i) {
+ uint64_t res = static_cast<uint64_t>(mService->preEnroll());
+ EXPECT_NE(0UL, res);
+ m[res]++;
+ EXPECT_EQ(1UL, m[res]);
+ }
+}
+
+// Enroll with an invalid (all zeroes) HAT should fail.
+TEST_F(FingerprintHidlTest, EnrollInvalidHatTest) {
+ sp<ErrorCallback> cb = new ErrorCallback();
+ Return<uint64_t> rc = mService->setNotify(cb);
+ ASSERT_NE(0UL, static_cast<uint64_t>(rc));
+
+ uint8_t token[69];
+ for(int i=0; i<69; i++) {
+ token[i] = 0;
+ }
+
+ Return<RequestStatus> res = mService->enroll(token, kGroupId, kTimeout);
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+
+ // At least one call to onError should occur
+ ASSERT_TRUE(waitForCallback(cb->promise.get_future()));
+ ASSERT_NE(FingerprintError::ERROR_NO_ERROR, cb->error);
+}
+
+// Enroll with an invalid (null) HAT should fail.
+TEST_F(FingerprintHidlTest, EnrollNullTest) {
+ sp<ErrorCallback> cb = new ErrorCallback();
+ Return<uint64_t> rc = mService->setNotify(cb);
+ ASSERT_NE(0UL, static_cast<uint64_t>(rc));
+
+ uint8_t token[69];
+ Return<RequestStatus> res = mService->enroll(token, kGroupId, kTimeout);
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+
+ // At least one call to onError should occur
+ ASSERT_TRUE(waitForCallback(cb->promise.get_future()));
+ ASSERT_NE(FingerprintError::ERROR_NO_ERROR, cb->error);
+}
+
+// PostEnroll should always return within 3s
+TEST_F(FingerprintHidlTest, PostEnrollTest) {
+ sp<FingerprintCallbackBase> cb = new FingerprintCallbackBase();
+ Return<uint64_t> rc = mService->setNotify(cb);
+
+ auto start = std::chrono::system_clock::now();
+ Return<RequestStatus> res = mService->postEnroll();
+ auto elapsed = std::chrono::system_clock::now() - start;
+ ASSERT_GE(kTimeoutInSeconds, elapsed);
+}
+
+// getAuthenticatorId should always return non-zero numbers
+TEST_F(FingerprintHidlTest, GetAuthenticatorIdTest) {
+ Return<uint64_t> res = mService->getAuthenticatorId();
+ EXPECT_NE(0UL, static_cast<uint64_t>(res));
+}
+
+// Enumerate should always trigger onEnumerated(fid=0, rem=0) when there are no fingerprints
+TEST_F(FingerprintHidlTest, EnumerateTest) {
+ sp<EnumerateCallback> cb = new EnumerateCallback();
+ Return<uint64_t> rc = mService->setNotify(cb);
+ ASSERT_NE(0UL, static_cast<uint64_t>(rc));
+
+ // Callback will return when rem=0 is found
+ Return<RequestStatus> res = mService->enumerate();
+ ASSERT_TRUE(waitForCallback(cb->promise.get_future()));
+ EXPECT_EQ(0UL, cb->fingerId);
+ EXPECT_EQ(0UL, cb->remaining);
+
+}
+
+// Remove should succeed on any inputs
+// At least one callback with "remaining=0" should occur
+TEST_F(FingerprintHidlTest, RemoveFingerprintTest) {
+ // Register callback
+ sp<RemoveCallback> cb = new RemoveCallback(kGroupId);
+ Return<uint64_t> rc = mService->setNotify(cb);
+ ASSERT_NE(0UL, static_cast<uint64_t>(rc));
+
+ // Remove a fingerprint
+ Return<RequestStatus> res = mService->remove(kGroupId, 1);
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+
+ // At least one call to onRemove with remaining=0 should occur
+ ASSERT_TRUE(waitForCallback(cb->promise.get_future()));
+}
+
+// Remove should accept 0 to delete all fingerprints
+// At least one callback with "remaining=0" should occur.
+TEST_F(FingerprintHidlTest, RemoveAllFingerprintsTest) {
+ // Register callback
+ sp<RemoveCallback> cb = new RemoveCallback(kGroupId);
+ Return<uint64_t> rc = mService->setNotify(cb);
+ ASSERT_NE(0UL, static_cast<uint64_t>(rc));
+
+ // Remove all fingerprints
+ Return<RequestStatus> res = mService->remove(kGroupId, 0);
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+ ASSERT_TRUE(waitForCallback(cb->promise.get_future()));
+}
+
+// Active group should successfully set to a writable location.
+TEST_F(FingerprintHidlTest, SetActiveGroupTest) {
+ // Create an active group
+ Return<RequestStatus> res = mService->setActiveGroup(2, kTmpDir);
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+
+ // Reset active group
+ res = mService->setActiveGroup(kGroupId, kTmpDir);
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+}
+
+// Active group should fail to set to an unwritable location.
+TEST_F(FingerprintHidlTest, SetActiveGroupUnwritableTest) {
+ // Create an active group to an unwritable location (device root dir)
+ Return<RequestStatus> res = mService->setActiveGroup(3, "/");
+ ASSERT_NE(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+
+ // Reset active group
+ res = mService->setActiveGroup(kGroupId, kTmpDir);
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+}
+
+// Active group should fail to set to a null location.
+TEST_F(FingerprintHidlTest, SetActiveGroupNullTest) {
+ // Create an active group to a null location.
+ Return<RequestStatus> res = mService->setActiveGroup(4, nullptr);
+ ASSERT_NE(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+
+ // Reset active group
+ res = mService->setActiveGroup(kGroupId, kTmpDir);
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
}
// Cancel should always return ERROR_CANCELED from any starting state including
// the IDLE state.
TEST_F(FingerprintHidlTest, CancelTest) {
- Return<uint64_t> rc = mService->setNotify(mCallback);
- EXPECT_NE(rc, 0UL);
+ sp<ErrorCallback> cb = new ErrorCallback(true, FingerprintError::ERROR_CANCELED);
+ Return<uint64_t> rc = mService->setNotify(cb);
+ ASSERT_NE(0UL, static_cast<uint64_t>(rc));
- Return<RequestStatus> res = mService->cancel();
- // make sure callback was invoked within kThresholdInSeconds
- EXPECT_EQ(true, waitForCallback());
- // 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, mErr);
+ Return<RequestStatus> res = mService->cancel();
+ // check that we were able to make an IPC request successfully
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+
+ // make sure callback was invoked within kTimeoutInSeconds
+ ASSERT_TRUE(waitForCallback(cb->promise.get_future()));
+ // check error should be ERROR_CANCELED
+ ASSERT_EQ(FingerprintError::ERROR_CANCELED, cb->error);
}
-// 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 = mService->setNotify(mCallback);
- EXPECT_NE(rc, 0UL);
+// A call to cancel should succeed during enroll.
+TEST_F(FingerprintHidlTest, CancelEnrollTest) {
+ Return<RequestStatus> res = mService->setActiveGroup(kGroupId, kTmpDir);
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
- Return<RequestStatus> res = mService->authenticate(0, 0);
- // check that we were able to make an IPC request successfully
- EXPECT_EQ(RequestStatus::SYS_OK, res);
+ sp<ErrorCallback> cb = new ErrorCallback(true, FingerprintError::ERROR_CANCELED);
+ Return<uint64_t> rc = mService->setNotify(cb);
+ ASSERT_NE(0U, static_cast<uint64_t>(rc));
- res = mService->cancel();
- // make sure callback was invoked within kThresholdInSeconds
- EXPECT_EQ(true, waitForCallback());
- // 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, mErr);
+ uint8_t token[69];
+ res = mService->enroll(token, kGroupId, kTimeout);
+ // check that we were able to make an IPC request successfully
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+
+ res = mService->cancel();
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+
+ // make sure callback was invoked within kTimeoutInSeconds
+ ASSERT_TRUE(waitForCallback(cb->promise.get_future()));
+
+ // check error should be ERROR_CANCELED
+ ASSERT_EQ(FingerprintError::ERROR_CANCELED, cb->error);
}
+// A call to cancel should succeed during authentication.
+TEST_F(FingerprintHidlTest, CancelAuthTest) {
+ sp<ErrorCallback> cb = new ErrorCallback(true, FingerprintError::ERROR_CANCELED);
+ Return<uint64_t> rc = mService->setNotify(cb);
+ ASSERT_NE(0U, static_cast<uint64_t>(rc));
+
+ Return<RequestStatus> res = mService->authenticate(0, kGroupId);
+ // check that we were able to make an IPC request successfully
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+
+ res = mService->cancel();
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+
+ // make sure callback was invoked within kTimeoutInSeconds
+ ASSERT_TRUE(waitForCallback(cb->promise.get_future()));
+
+ // check error should be ERROR_CANCELED
+ ASSERT_EQ(FingerprintError::ERROR_CANCELED, cb->error);
+}
+
+// A call to cancel should succeed during authentication.
+TEST_F(FingerprintHidlTest, CancelRemoveTest) {
+ sp<ErrorCallback> cb = new ErrorCallback(true, FingerprintError::ERROR_CANCELED);
+ Return<uint64_t> rc = mService->setNotify(cb);
+ ASSERT_NE(0U, static_cast<uint64_t>(rc));
+
+ // Remove a fingerprint
+ Return<RequestStatus> res = mService->remove(kGroupId, 1);
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+
+ res = mService->cancel();
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+
+ // make sure callback was invoked within kTimeoutInSeconds
+ ASSERT_TRUE(waitForCallback(cb->promise.get_future()));
+
+ // check error should be ERROR_CANCELED
+ ASSERT_EQ(FingerprintError::ERROR_CANCELED, cb->error);
+}
+
+// A call to cancel should succeed during authentication.
+TEST_F(FingerprintHidlTest, CancelRemoveAllTest) {
+ sp<ErrorCallback> cb = new ErrorCallback(true, FingerprintError::ERROR_CANCELED);
+ Return<uint64_t> rc = mService->setNotify(cb);
+ ASSERT_NE(0U, static_cast<uint64_t>(rc));
+
+ // Remove a fingerprint
+ Return<RequestStatus> res = mService->remove(kGroupId, 0);
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+
+ res = mService->cancel();
+ ASSERT_EQ(RequestStatus::SYS_OK, static_cast<RequestStatus>(res));
+
+ // make sure callback was invoked within kTimeoutInSeconds
+ ASSERT_TRUE(waitForCallback(cb->promise.get_future()));
+
+ // check error should be ERROR_CANCELED
+ ASSERT_EQ(FingerprintError::ERROR_CANCELED, cb->error);
+}
+} // anonymous namespace
+
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;
+ ::testing::InitGoogleTest(&argc, argv);
+ int status = RUN_ALL_TESTS();
+ LOG(INFO) << "Test result = " << status;
+ return status;
}
+
diff --git a/bluetooth/1.0/Android.bp b/bluetooth/1.0/Android.bp
index 2373ceb..75cdcfc 100644
--- a/bluetooth/1.0/Android.bp
+++ b/bluetooth/1.0/Android.bp
@@ -32,6 +32,7 @@
],
out: [
"android/hardware/bluetooth/1.0/types.h",
+ "android/hardware/bluetooth/1.0/hwtypes.h",
"android/hardware/bluetooth/1.0/IBluetoothHci.h",
"android/hardware/bluetooth/1.0/IHwBluetoothHci.h",
"android/hardware/bluetooth/1.0/BnHwBluetoothHci.h",
diff --git a/boot/1.0/Android.bp b/boot/1.0/Android.bp
index 7265cc2..498c940 100644
--- a/boot/1.0/Android.bp
+++ b/boot/1.0/Android.bp
@@ -30,6 +30,7 @@
],
out: [
"android/hardware/boot/1.0/types.h",
+ "android/hardware/boot/1.0/hwtypes.h",
"android/hardware/boot/1.0/IBootControl.h",
"android/hardware/boot/1.0/IHwBootControl.h",
"android/hardware/boot/1.0/BnHwBootControl.h",
diff --git a/broadcastradio/1.0/default/BroadcastRadio.cpp b/broadcastradio/1.0/default/BroadcastRadio.cpp
index 45ffdb2..72cdc19 100644
--- a/broadcastradio/1.0/default/BroadcastRadio.cpp
+++ b/broadcastradio/1.0/default/BroadcastRadio.cpp
@@ -63,6 +63,7 @@
if (rc != 0) {
ALOGE("couldn't load radio module %s.%s (%s)",
RADIO_HARDWARE_MODULE_ID, classString, strerror(-rc));
+ mStatus = Result::INVALID_ARGUMENTS;
return;
}
rc = radio_hw_device_open(mod, &mHwDevice);
diff --git a/broadcastradio/1.0/vts/functional/VtsHalBroadcastradioV1_0TargetTest.cpp b/broadcastradio/1.0/vts/functional/VtsHalBroadcastradioV1_0TargetTest.cpp
index 4ec19c7..ebeadb1 100644
--- a/broadcastradio/1.0/vts/functional/VtsHalBroadcastradioV1_0TargetTest.cpp
+++ b/broadcastradio/1.0/vts/functional/VtsHalBroadcastradioV1_0TargetTest.cpp
@@ -48,21 +48,42 @@
using ::android::hardware::broadcastradio::V1_0::MetaData;
+#define RETURN_IF_SKIPPED \
+ if (skipped) { \
+ std::cout << "[ SKIPPED ] This device class is not supported. " << std::endl; \
+ return; \
+ }
+
// The main test class for Broadcast Radio HIDL HAL.
-class BroadcastRadioHidlTest : public ::testing::VtsHalHidlTargetTestBase {
+class BroadcastRadioHidlTest : public ::testing::VtsHalHidlTargetTestBase,
+ public ::testing::WithParamInterface<Class> {
protected:
virtual void SetUp() override {
+ ASSERT_EQ(nullptr, mRadio.get());
+
+ radioClass = GetParam();
+ skipped = false;
+
sp<IBroadcastRadioFactory> factory =
::testing::VtsHalHidlTargetTestBase::getService<IBroadcastRadioFactory>();
- if (factory != 0) {
- factory->connectModule(Class::AM_FM,
- [&](Result retval, const ::android::sp<IBroadcastRadio>& result) {
- if (retval == Result::OK) {
- mRadio = result;
- }
- });
+ ASSERT_NE(nullptr, factory.get());
+
+ Result connectResult;
+ factory->connectModule(radioClass, [&](Result ret, const sp<IBroadcastRadio>& radio) {
+ connectResult = ret;
+ mRadio = radio;
+ onCallback_l();
+ });
+ EXPECT_EQ(true, waitForCallback(kConnectCallbacktimeoutNs));
+ mCallbackCalled = false;
+
+ if (connectResult == Result::INVALID_ARGUMENTS) {
+ skipped = true;
+ return;
}
+ ASSERT_EQ(connectResult, Result::OK);
+
mTunerCallback = new MyCallback(this);
ASSERT_NE(nullptr, mRadio.get());
ASSERT_NE(nullptr, mTunerCallback.get());
@@ -175,9 +196,9 @@
}
- BroadcastRadioHidlTest() :
- mCallbackCalled(false), mBoolCallbackData(false),
- mResultCallbackData(Result::OK), mHwFailure(false) {}
+ BroadcastRadioHidlTest()
+ : mCallbackCalled(false), mBoolCallbackData(false), mResultCallbackData(Result::OK),
+ mHwFailure(false) {}
void onCallback_l() {
if (!mCallbackCalled) {
@@ -208,9 +229,12 @@
bool openTuner();
bool checkAntenna();
+ static const nsecs_t kConnectCallbacktimeoutNs = seconds_to_nanoseconds(1);
static const nsecs_t kConfigCallbacktimeoutNs = seconds_to_nanoseconds(10);
static const nsecs_t kTuneCallbacktimeoutNs = seconds_to_nanoseconds(30);
+ Class radioClass;
+ bool skipped;
sp<IBroadcastRadio> mRadio;
Properties mHalProperties;
sp<ITuner> mTuner;
@@ -225,13 +249,6 @@
bool mHwFailure;
};
-// A class for test environment setup (kept since this file is a template).
-class BroadcastRadioHidlEnvironment : public ::testing::Environment {
- public:
- virtual void SetUp() {}
- virtual void TearDown() {}
-};
-
namespace android {
namespace hardware {
namespace broadcastradio {
@@ -331,7 +348,8 @@
* - the implementation supports at least one tuner
* - the implementation supports at one band
*/
-TEST_F(BroadcastRadioHidlTest, GetProperties) {
+TEST_P(BroadcastRadioHidlTest, GetProperties) {
+ RETURN_IF_SKIPPED;
EXPECT_EQ(true, getProperties());
}
@@ -342,7 +360,8 @@
* - the HAL implements the method
* - the method returns 0 (no error) and a valid ITuner interface
*/
-TEST_F(BroadcastRadioHidlTest, OpenTuner) {
+TEST_P(BroadcastRadioHidlTest, OpenTuner) {
+ RETURN_IF_SKIPPED;
EXPECT_EQ(true, openTuner());
}
@@ -353,7 +372,8 @@
* - ITuner destruction gets propagated through HAL
* - the openTuner method works well when called for the second time
*/
-TEST_F(BroadcastRadioHidlTest, ReopenTuner) {
+TEST_P(BroadcastRadioHidlTest, ReopenTuner) {
+ RETURN_IF_SKIPPED;
EXPECT_TRUE(openTuner());
mTuner.clear();
EXPECT_TRUE(openTuner());
@@ -366,7 +386,8 @@
* - the openTuner method fails when called for the second time without deleting previous
* ITuner instance
*/
-TEST_F(BroadcastRadioHidlTest, OpenTunerTwice) {
+TEST_P(BroadcastRadioHidlTest, OpenTunerTwice) {
+ RETURN_IF_SKIPPED;
EXPECT_TRUE(openTuner());
Result halResult = Result::NOT_INITIALIZED;
@@ -389,7 +410,8 @@
* - the configuration callback is received within kConfigCallbacktimeoutNs ns
* - the configuration read back from HAl has the same class Id
*/
-TEST_F(BroadcastRadioHidlTest, SetAndGetConfiguration) {
+TEST_P(BroadcastRadioHidlTest, SetAndGetConfiguration) {
+ RETURN_IF_SKIPPED;
ASSERT_EQ(true, openTuner());
// test setConfiguration
mCallbackCalled = false;
@@ -422,7 +444,8 @@
* - the methods returns INVALID_ARGUMENTS on invalid arguments
* - the method recovers and succeeds after passing correct arguments
*/
-TEST_F(BroadcastRadioHidlTest, SetConfigurationFails) {
+TEST_P(BroadcastRadioHidlTest, SetConfigurationFails) {
+ RETURN_IF_SKIPPED;
ASSERT_EQ(true, openTuner());
// Let's define a config that's bad for sure.
@@ -456,7 +479,8 @@
* - the tuned callback is received within kTuneCallbacktimeoutNs ns
* - skipping sub-channel or not does not fail the call
*/
-TEST_F(BroadcastRadioHidlTest, Scan) {
+TEST_P(BroadcastRadioHidlTest, Scan) {
+ RETURN_IF_SKIPPED;
ASSERT_EQ(true, openTuner());
ASSERT_TRUE(checkAntenna());
// test scan UP
@@ -483,7 +507,8 @@
* - the tuned callback is received within kTuneCallbacktimeoutNs ns
* - skipping sub-channel or not does not fail the call
*/
-TEST_F(BroadcastRadioHidlTest, Step) {
+TEST_P(BroadcastRadioHidlTest, Step) {
+ RETURN_IF_SKIPPED;
ASSERT_EQ(true, openTuner());
ASSERT_TRUE(checkAntenna());
// test step UP
@@ -509,7 +534,8 @@
* - the methods return 0 (no error)
* - the tuned callback is received within kTuneCallbacktimeoutNs ns after tune()
*/
-TEST_F(BroadcastRadioHidlTest, TuneAndGetProgramInformationAndCancel) {
+TEST_P(BroadcastRadioHidlTest, TuneAndGetProgramInformationAndCancel) {
+ RETURN_IF_SKIPPED;
ASSERT_EQ(true, openTuner());
ASSERT_TRUE(checkAntenna());
@@ -566,7 +592,8 @@
* - the method returns INVALID_ARGUMENTS when applicable
* - the method recovers and succeeds after passing correct arguments
*/
-TEST_F(BroadcastRadioHidlTest, TuneFailsOutOfBounds) {
+TEST_P(BroadcastRadioHidlTest, TuneFailsOutOfBounds) {
+ RETURN_IF_SKIPPED;
ASSERT_TRUE(openTuner());
ASSERT_TRUE(checkAntenna());
@@ -595,9 +622,12 @@
EXPECT_TRUE(waitForCallback(kTuneCallbacktimeoutNs));
}
+INSTANTIATE_TEST_CASE_P(
+ BroadcastRadioHidlTestCases,
+ BroadcastRadioHidlTest,
+ ::testing::Values(Class::AM_FM, Class::SAT, Class::DT));
int main(int argc, char** argv) {
- ::testing::AddGlobalTestEnvironment(new BroadcastRadioHidlEnvironment);
::testing::InitGoogleTest(&argc, argv);
int status = RUN_ALL_TESTS();
ALOGI("Test result = %d", status);
diff --git a/broadcastradio/1.1/Android.bp b/broadcastradio/1.1/Android.bp
index 570d1ae..12611dd 100644
--- a/broadcastradio/1.1/Android.bp
+++ b/broadcastradio/1.1/Android.bp
@@ -4,6 +4,7 @@
name: "android.hardware.broadcastradio@1.1_hal",
srcs: [
"types.hal",
+ "IBroadcastRadio.hal",
"IBroadcastRadioFactory.hal",
"ITuner.hal",
"ITunerCallback.hal",
@@ -19,6 +20,7 @@
],
out: [
"android/hardware/broadcastradio/1.1/types.cpp",
+ "android/hardware/broadcastradio/1.1/BroadcastRadioAll.cpp",
"android/hardware/broadcastradio/1.1/BroadcastRadioFactoryAll.cpp",
"android/hardware/broadcastradio/1.1/TunerAll.cpp",
"android/hardware/broadcastradio/1.1/TunerCallbackAll.cpp",
@@ -34,6 +36,11 @@
],
out: [
"android/hardware/broadcastradio/1.1/types.h",
+ "android/hardware/broadcastradio/1.1/IBroadcastRadio.h",
+ "android/hardware/broadcastradio/1.1/IHwBroadcastRadio.h",
+ "android/hardware/broadcastradio/1.1/BnHwBroadcastRadio.h",
+ "android/hardware/broadcastradio/1.1/BpHwBroadcastRadio.h",
+ "android/hardware/broadcastradio/1.1/BsBroadcastRadio.h",
"android/hardware/broadcastradio/1.1/IBroadcastRadioFactory.h",
"android/hardware/broadcastradio/1.1/IHwBroadcastRadioFactory.h",
"android/hardware/broadcastradio/1.1/BnHwBroadcastRadioFactory.h",
diff --git a/broadcastradio/1.1/IBroadcastRadio.hal b/broadcastradio/1.1/IBroadcastRadio.hal
new file mode 100644
index 0000000..a6347c7
--- /dev/null
+++ b/broadcastradio/1.1/IBroadcastRadio.hal
@@ -0,0 +1,30 @@
+/*
+ * 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.broadcastradio@1.1;
+
+import @1.0::IBroadcastRadio;
+
+interface IBroadcastRadio extends @1.0::IBroadcastRadio {
+
+ /*
+ * Retrieve implementation properties.
+ * @return properties A Properties structure containing implementation
+ * description and capabilities.
+ */
+ getProperties_1_1() generates (Properties properties);
+
+};
diff --git a/broadcastradio/1.1/ITuner.hal b/broadcastradio/1.1/ITuner.hal
index 4f34019..82d45c6 100644
--- a/broadcastradio/1.1/ITuner.hal
+++ b/broadcastradio/1.1/ITuner.hal
@@ -26,7 +26,33 @@
* NOT_INITIALIZED if another error occurs
* @return info Current program information.
*/
- getProgramInformation_1_1() generates(Result result, ProgramInfo info);
+ getProgramInformation_1_1() generates (Result result, ProgramInfo info);
+
+ /**
+ * Initiates a background scan to update internally cached program list.
+ *
+ * HAL client may not need to initiate the scan explicitly with this call,
+ * ie. HAL implementation MAY perform the scan on boot. It's a common
+ * practice in devices with two physical tuners with background scanning.
+ *
+ * Device must call backgroundScanComplete if the result is OK, even if the
+ * scan fails later (it must pass proper result through the callback).
+ * Otherwise, backgroundScanComplete must not be called as a result of this
+ * certain attempt. It may still be called as a response to another call to
+ * startBackgroundScan, former or latter.
+ *
+ * Device may utilize an already running (but not finished) scan for
+ * subsequent calls to startBackgroundScan, issuing a single
+ * backgroundScanComplete callback.
+ *
+ * @return result OK if the scan was properly scheduled (this does not mean
+ * it successfully finished).
+ * TEMPORARILY_UNAVAILABLE if the background scan is
+ * temporarily unavailable, ie. due to ongoing foreground
+ * playback in single-tuner device.
+ * NOT_INITIALIZED other error, ie. HW failure.
+ */
+ startBackgroundScan() generates (ProgramListResult result);
/**
* Retrieve station list.
@@ -40,11 +66,12 @@
* before setting this parameter to anything else.
* @return result OK if the list was successfully retrieved.
* NOT_READY if the scan is in progress.
- * NOT_STARTED if the scan has not been started.
+ * NOT_STARTED if the scan has not been started, client may
+ * call startBackgroundScan to fix this.
* NOT_INITIALIZED if any other error occurs.
* @return programList List of stations available for user.
*/
getProgramList(string filter)
- generates(ProgramListResult result, vec<ProgramInfo> programList);
+ generates (ProgramListResult result, vec<ProgramInfo> programList);
};
diff --git a/broadcastradio/1.1/ITunerCallback.hal b/broadcastradio/1.1/ITunerCallback.hal
index 4af6b1f..1ea57e9 100644
--- a/broadcastradio/1.1/ITunerCallback.hal
+++ b/broadcastradio/1.1/ITunerCallback.hal
@@ -19,9 +19,10 @@
import @1.0::ITunerCallback;
/**
- * Some methods of @1.1::ITunerCallback are updated versions of those from @1.0:ITunerCallback.
- * All 1.1 drivers should call both (eg. tuneComplete and tuneComplete_1_1), while 1.1 clients
- * should ignore 1.0 ones, to avoid receiving a callback twice.
+ * Some methods of @1.1::ITunerCallback are updated versions of those from
+ * @1.0:ITunerCallback. All 1.1 HAL implementations must call both
+ * (eg. tuneComplete and tuneComplete_1_1), while 1.1 clients may ignore 1.0
+ * ones, to avoid receiving a callback twice.
*/
interface ITunerCallback extends @1.0::ITunerCallback {
/*
@@ -37,4 +38,27 @@
* @param info A ProgramInfo structure describing the new tuned station.
*/
oneway afSwitch_1_1(ProgramInfo info);
+
+ /**
+ * Called by the HAL when background scan initiated by startBackgroundScan
+ * finishes. If the list was changed, programListChanged must be called too.
+ * @param result OK if the scan succeeded, client may retrieve the actual
+ * list with ITuner::getProgramList.
+ * TEMPORARILY_UNAVAILABLE if the scan was interrupted due to
+ * hardware becoming temporarily unavailable.
+ * NOT_INITIALIZED other error, ie. HW failure.
+ */
+ oneway backgroundScanComplete(ProgramListResult result);
+
+ /**
+ * Called each time the internally cached program list changes. HAL may not
+ * call it immediately, ie. it may wait for a short time to accumulate
+ * multiple list change notifications into a single event.
+ *
+ * It may be triggered either by an explicitly issued background scan,
+ * or a scan issued by the device internally.
+ *
+ * Client may retrieve the actual list with ITuner::getProgramList.
+ */
+ oneway programListChanged();
};
diff --git a/broadcastradio/1.1/default/BroadcastRadio.cpp b/broadcastradio/1.1/default/BroadcastRadio.cpp
index 611267b..68c9b93 100644
--- a/broadcastradio/1.1/default/BroadcastRadio.cpp
+++ b/broadcastradio/1.1/default/BroadcastRadio.cpp
@@ -94,7 +94,7 @@
}
-// Methods from ::android::hardware::broadcastradio::V1_0::IBroadcastRadio follow.
+// Methods from ::android::hardware::broadcastradio::V1_1::IBroadcastRadio follow.
Return<void> BroadcastRadio::getProperties(getProperties_cb _hidl_cb)
{
int rc;
@@ -115,6 +115,11 @@
return Void();
}
+Return<void> BroadcastRadio::getProperties_1_1(getProperties_1_1_cb _hidl_cb __unused)
+{
+ return Status::fromExceptionCode(Status::EX_UNSUPPORTED_OPERATION);
+}
+
Return<void> BroadcastRadio::openTuner(const BandConfig& config, bool audio,
const sp<V1_0::ITunerCallback>& callback, openTuner_cb _hidl_cb)
{
diff --git a/broadcastradio/1.1/default/BroadcastRadio.h b/broadcastradio/1.1/default/BroadcastRadio.h
index 068979d..7de31a0 100644
--- a/broadcastradio/1.1/default/BroadcastRadio.h
+++ b/broadcastradio/1.1/default/BroadcastRadio.h
@@ -16,7 +16,7 @@
#ifndef ANDROID_HARDWARE_BROADCASTRADIO_V1_1_BROADCASTRADIO_H
#define ANDROID_HARDWARE_BROADCASTRADIO_V1_1_BROADCASTRADIO_H
-#include <android/hardware/broadcastradio/1.0/IBroadcastRadio.h>
+#include <android/hardware/broadcastradio/1.1/IBroadcastRadio.h>
#include <android/hardware/broadcastradio/1.1/types.h>
#include <hardware/radio.h>
@@ -30,12 +30,13 @@
using V1_0::BandConfig;
using V1_0::Properties;
-struct BroadcastRadio : public V1_0::IBroadcastRadio {
+struct BroadcastRadio : public V1_1::IBroadcastRadio {
BroadcastRadio(Class classId);
- // Methods from ::android::hardware::broadcastradio::V1_0::IBroadcastRadio follow.
+ // Methods from ::android::hardware::broadcastradio::V1_1::IBroadcastRadio follow.
Return<void> getProperties(getProperties_cb _hidl_cb) override;
+ Return<void> getProperties_1_1(getProperties_1_1_cb _hidl_cb) override;
Return<void> openTuner(const BandConfig& config, bool audio,
const sp<V1_0::ITunerCallback>& callback, openTuner_cb _hidl_cb) override;
diff --git a/broadcastradio/1.1/default/Tuner.cpp b/broadcastradio/1.1/default/Tuner.cpp
index b4eb184..f280754 100644
--- a/broadcastradio/1.1/default/Tuner.cpp
+++ b/broadcastradio/1.1/default/Tuner.cpp
@@ -200,6 +200,10 @@
return Void();
}
+Return<ProgramListResult> Tuner::startBackgroundScan() {
+ return ProgramListResult::NOT_INITIALIZED;
+}
+
Return<void> Tuner::getProgramList(const hidl_string& filter __unused, getProgramList_cb _hidl_cb) {
hidl_vec<ProgramInfo> pList;
// TODO(b/34054813): do the actual implementation.
diff --git a/broadcastradio/1.1/default/Tuner.h b/broadcastradio/1.1/default/Tuner.h
index fcf053a..d7b4545 100644
--- a/broadcastradio/1.1/default/Tuner.h
+++ b/broadcastradio/1.1/default/Tuner.h
@@ -42,6 +42,7 @@
Return<Result> cancel() override;
Return<void> getProgramInformation(getProgramInformation_cb _hidl_cb) override;
Return<void> getProgramInformation_1_1(getProgramInformation_1_1_cb _hidl_cb) override;
+ Return<ProgramListResult> startBackgroundScan() override;
Return<void> getProgramList(const hidl_string& filter, getProgramList_cb _hidl_cb) override;
static void callback(radio_hal_event_t *halEvent, void *cookie);
diff --git a/broadcastradio/1.1/types.hal b/broadcastradio/1.1/types.hal
index b6f72d2..3021f2e 100644
--- a/broadcastradio/1.1/types.hal
+++ b/broadcastradio/1.1/types.hal
@@ -45,6 +45,16 @@
MUTED = 1 << 1,
};
+struct Properties {
+ @1.0::Properties base;
+
+ /**
+ * The hardware supports background scanning in general. At the given time
+ * it may not be available though, see startBackgroundScan.
+ */
+ bool supportsBackgroundScanning;
+};
+
/**
* Radio program information. Returned by the HAL with event RADIO_EVENT_TUNED.
* Contains information on currently tuned channel.
diff --git a/broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp b/broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp
index a29f6dc..d3c05c4 100644
--- a/broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp
+++ b/broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp
@@ -47,6 +47,7 @@
using ::android::hardware::broadcastradio::V1_1::ITunerCallback;
using ::android::hardware::broadcastradio::V1_1::ProgramInfo;
using ::android::hardware::broadcastradio::V1_1::Result;
+using ::android::hardware::broadcastradio::V1_1::ProgramListResult;
// The main test class for Broadcast Radio HIDL HAL.
@@ -128,6 +129,14 @@
return Void();
}
+ virtual Return<void> backgroundScanComplete(ProgramListResult result __unused) {
+ return Void();
+ }
+
+ virtual Return<void> programListChanged() {
+ return Void();
+ }
+
MyCallback(BroadcastRadioHidlTest *parentTest) : mParentTest(parentTest) {}
private:
diff --git a/configstore/1.0/Android.bp b/configstore/1.0/Android.bp
index c2cd54a..712e9a7 100644
--- a/configstore/1.0/Android.bp
+++ b/configstore/1.0/Android.bp
@@ -30,6 +30,7 @@
],
out: [
"android/hardware/configstore/1.0/types.h",
+ "android/hardware/configstore/1.0/hwtypes.h",
"android/hardware/configstore/1.0/ISurfaceFlingerConfigs.h",
"android/hardware/configstore/1.0/IHwSurfaceFlingerConfigs.h",
"android/hardware/configstore/1.0/BnHwSurfaceFlingerConfigs.h",
diff --git a/configstore/utils/include/configstore/Utils.h b/configstore/utils/include/configstore/Utils.h
index 98ccae9..46cc9b0 100644
--- a/configstore/utils/include/configstore/Utils.h
+++ b/configstore/utils/include/configstore/Utils.h
@@ -20,6 +20,10 @@
#include <hidl/Status.h>
#include <stdatomic.h>
+#pragma push_macro("LOG_TAG")
+#undef LOG_TAG
+#define LOG_TAG "ConfigStoreUtil"
+
namespace android {
namespace hardware {
namespace configstore {
@@ -39,9 +43,13 @@
// fallback to the default value
ret.specified = false;
} else {
- (*configs.*func)([&ret](V v) {
+ auto status = (*configs.*func)([&ret](V v) {
ret = v;
});
+ if (!status.isOk()) {
+ ALOGE("HIDL call failed. %s", status.description().c_str());
+ ret.specified = false;
+ }
}
return ret;
@@ -91,4 +99,6 @@
} // namespace hardware
} // namespace android
+#pragma pop_macro("LOG_TAG")
+
#endif // ANDROID_HARDWARE_CONFIGSTORE_UTILS_H
diff --git a/gatekeeper/1.0/types.hal b/gatekeeper/1.0/types.hal
index 8c184ee..59076e0 100644
--- a/gatekeeper/1.0/types.hal
+++ b/gatekeeper/1.0/types.hal
@@ -37,6 +37,6 @@
* otherwise unused (0)
*/
uint32_t timeout;
- /* optional crypto blob */
+ /* optional crypto blob. Opaque to Android system. */
vec<uint8_t> data;
};
diff --git a/gnss/1.0/vts/functional/VtsHalGnssV1_0TargetTest.cpp b/gnss/1.0/vts/functional/VtsHalGnssV1_0TargetTest.cpp
index 21b7136..bd5cc2e 100644
--- a/gnss/1.0/vts/functional/VtsHalGnssV1_0TargetTest.cpp
+++ b/gnss/1.0/vts/functional/VtsHalGnssV1_0TargetTest.cpp
@@ -31,10 +31,16 @@
using android::hardware::gnss::V1_0::GnssLocationFlags;
using android::hardware::gnss::V1_0::IGnss;
using android::hardware::gnss::V1_0::IGnssCallback;
+using android::hardware::gnss::V1_0::IGnssDebug;
+using android::hardware::gnss::V1_0::IGnssMeasurement;
using android::sp;
#define TIMEOUT_SEC 3 // for basic commands/responses
+// Set these false for release, true for stronger test
+#define GNSS_SIGNAL_IS_PRESENT false
+#define GNSS_ASSISTANCE_IS_PRESENT false
+
// The main test class for GNSS HAL.
class GnssHalTest : public ::testing::VtsHalHidlTargetTestBase {
public:
@@ -273,7 +279,12 @@
#define PREFERRED_ACCURACY 0 // Ideally perfect (matches GnssLocationProvider)
#define PREFERRED_TIME_MSEC 0 // Ideally immediate
+#if GNSS_ASSISTANCE_IS_PRESENT
+#define LOCATION_TIMEOUT_FIRST_SEC 15
+#else
#define LOCATION_TIMEOUT_FIRST_SEC 45
+#endif
+
#define LOCATION_TIMEOUT_SUBSEQUENT_SEC 3
#define LOCATIONS_TO_CHECK 5
@@ -286,16 +297,21 @@
PREFERRED_ACCURACY, PREFERRED_TIME_MSEC);
ASSERT_TRUE(result.isOk());
- ASSERT_TRUE(result);
+ EXPECT_TRUE(result);
result = gnss_hal_->start();
ASSERT_TRUE(result.isOk());
- ASSERT_TRUE(result);
+ EXPECT_TRUE(result);
- // GPS signals initially optional for this test, so don't expect no timeout
- // yet
+ /*
+ * GPS signals initially optional for this test, so don't expect no timeout
+ * yet
+ */
wait(LOCATION_TIMEOUT_FIRST_SEC);
+ if (GNSS_SIGNAL_IS_PRESENT) {
+ ASSERT_GT(location_called_count_, 0);
+ }
if (location_called_count_ > 0) {
CheckLocation(last_location_, checkMoreAccuracies);
}
@@ -313,6 +329,88 @@
ASSERT_TRUE(result);
}
+/*
+ * InjectDelete:
+ * Ensures that calls to inject and/or delete information state are handled.
+ * Better tests await GPS signal
+ */
+TEST_F(GnssHalTest, InjectDelete) {
+ // confidently, well north of Alaska
+ auto result = gnss_hal_->injectLocation(80.0, -170.0, 1000.0);
+
+ // TODO: full self-diff including TODO's :)
+ ASSERT_TRUE(result.isOk());
+ EXPECT_TRUE(result);
+
+ // fake time, but generally reasonable values (time in Aug. 2018)
+ result = gnss_hal_->injectTime(1534567890123L, 123456L, 10000L);
+
+ ASSERT_TRUE(result.isOk());
+ EXPECT_TRUE(result);
+
+ auto resultVoid = gnss_hal_->deleteAidingData(IGnss::GnssAidingData::DELETE_ALL);
+
+ ASSERT_TRUE(resultVoid.isOk());
+}
+
+/*
+ * GetAllExtentions:
+ * Tries getting all optional extensions, and ensures a valid return
+ * null or actual extension, no crash.
+ * Confirms year-based required extensions (Measurement & Debug) are present
+ */
+TEST_F(GnssHalTest, GetAllExtensions) {
+ // Basic call-is-handled checks
+ auto gnssXtra = gnss_hal_->getExtensionXtra();
+ ASSERT_TRUE(gnssXtra.isOk());
+
+ auto gnssRil = gnss_hal_->getExtensionAGnssRil();
+ ASSERT_TRUE(gnssRil.isOk());
+
+ auto gnssAgnss = gnss_hal_->getExtensionAGnss();
+ ASSERT_TRUE(gnssAgnss.isOk());
+
+ auto gnssNi = gnss_hal_->getExtensionGnssNi();
+ ASSERT_TRUE(gnssNi.isOk());
+
+ auto gnssNavigationMessage = gnss_hal_->getExtensionGnssNavigationMessage();
+ ASSERT_TRUE(gnssNavigationMessage.isOk());
+
+ auto gnssConfiguration = gnss_hal_->getExtensionGnssConfiguration();
+ ASSERT_TRUE(gnssConfiguration.isOk());
+
+ auto gnssGeofencing = gnss_hal_->getExtensionGnssGeofencing();
+ ASSERT_TRUE(gnssGeofencing.isOk());
+
+ auto gnssBatching = gnss_hal_->getExtensionGnssBatching();
+ ASSERT_TRUE(gnssBatching.isOk());
+
+ // Verifying, in some cases, that these return actual extensions
+ auto gnssMeasurement = gnss_hal_->getExtensionGnssMeasurement();
+ ASSERT_TRUE(gnssMeasurement.isOk());
+ if (last_capabilities_ & IGnssCallback::Capabilities::MEASUREMENTS) {
+ sp<IGnssMeasurement> iGnssMeas = gnssMeasurement;
+ EXPECT_NE(iGnssMeas, nullptr);
+ }
+
+ auto gnssDebug = gnss_hal_->getExtensionGnssDebug();
+ ASSERT_TRUE(gnssDebug.isOk());
+ if (info_called_count_ > 0 && last_info_.yearOfHw >= 2017) {
+ sp<IGnssDebug> iGnssDebug = gnssDebug;
+ EXPECT_NE(iGnssDebug, nullptr);
+ }
+}
+
+/*
+ * MeasurementCapabilities:
+ * Verifies that modern hardware supports measurement capabilities.
+ */
+TEST_F(GnssHalTest, MeasurementCapabilites) {
+ if (info_called_count_ > 0 && last_info_.yearOfHw >= 2016) {
+ EXPECT_TRUE(last_capabilities_ & IGnssCallback::Capabilities::MEASUREMENTS);
+ }
+}
+
int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
int status = RUN_ALL_TESTS();
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 c4715cd..3e2edda 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,5 +1,5 @@
service gralloc-2-0 /vendor/bin/hw/android.hardware.graphics.allocator@2.0-service
class hal
user system
- group graphics drmrpc readproc
+ group graphics drmrpc
onrestart restart surfaceflinger
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 4f01bd9..b6060db 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,6 +1,6 @@
service hwcomposer-2-1 /vendor/bin/hw/android.hardware.graphics.composer@2.1-service
class hal
user system
- group graphics drmrpc readproc
+ group graphics drmrpc
capabilities SYS_NICE
onrestart restart surfaceflinger
diff --git a/ir/1.0/Android.bp b/ir/1.0/Android.bp
index da49579..5bff1d3 100644
--- a/ir/1.0/Android.bp
+++ b/ir/1.0/Android.bp
@@ -30,6 +30,7 @@
],
out: [
"android/hardware/ir/1.0/types.h",
+ "android/hardware/ir/1.0/hwtypes.h",
"android/hardware/ir/1.0/IConsumerIr.h",
"android/hardware/ir/1.0/IHwConsumerIr.h",
"android/hardware/ir/1.0/BnHwConsumerIr.h",
diff --git a/keymaster/3.0/IKeymasterDevice.hal b/keymaster/3.0/IKeymasterDevice.hal
index 50a41ec..2664765 100644
--- a/keymaster/3.0/IKeymasterDevice.hal
+++ b/keymaster/3.0/IKeymasterDevice.hal
@@ -43,10 +43,20 @@
* key attestation certificates, signed with a key injected in a secure
* environment. CDD requires that all devices initially launched with Android O or
* later must support hardware attestation.
+ *
+ * @return supportsAllDigests is true if the hardware supports all keymaster digest functions,
+ * namely ND-5, SHA-1, SHA-224, SHA-256, SHA-384 and SHA-512. CDD requires that all
+ * devices launched initially with Android O or later must support all digests.
+ *
+ * @return keymasterName is the name of the keymaster implementation.
+ *
+ * @return keymasterAuthorName is the name of the author of the keymaster implementation
+ * (generally this should be the name of an organization, not an individual.)
*/
getHardwareFeatures()
- generates(bool isSecure, bool supportsEllipticCurve,
- bool supportsSymmetricCryptography, bool supportsAttestation);
+ generates(bool isSecure, bool supportsEllipticCurve, bool supportsSymmetricCryptography,
+ bool supportsAttestation, bool supportsAllDigests, string keymasterName,
+ string keymasterAuthorName);
/**
* Adds entropy to the RNG used by keymaster. Entropy added through this method is guaranteed
diff --git a/keymaster/3.0/default/KeymasterDevice.cpp b/keymaster/3.0/default/KeymasterDevice.cpp
index 01f0795..720b946 100644
--- a/keymaster/3.0/default/KeymasterDevice.cpp
+++ b/keymaster/3.0/default/KeymasterDevice.cpp
@@ -102,7 +102,8 @@
return rc;
}
-static int keymaster1_device_initialize(const hw_module_t* mod, keymaster2_device_t** dev) {
+static int keymaster1_device_initialize(const hw_module_t* mod, keymaster2_device_t** dev,
+ bool* supports_all_digests) {
assert(mod->module_api_version >= KEYMASTER_MODULE_API_VERSION_1_0);
ALOGI("Found keymaster1 module %s, version %x", mod->name, mod->module_api_version);
@@ -126,6 +127,7 @@
}
// SoftKeymasterDevice will be deleted by keymaster_device_release()
+ *supports_all_digests = soft_keymaster->supports_all_digests();
*dev = soft_keymaster.release()->keymaster2_device();
return 0;
@@ -157,7 +159,7 @@
}
static int keymaster_device_initialize(keymaster2_device_t** dev, uint32_t* version,
- bool* supports_ec) {
+ bool* supports_ec, bool* supports_all_digests) {
const hw_module_t* mod;
*supports_ec = true;
@@ -173,6 +175,7 @@
if (mod->module_api_version < KEYMASTER_MODULE_API_VERSION_1_0) {
*version = 0;
+ *supports_all_digests = false;
int rc = keymaster0_device_initialize(mod, dev);
if (rc == 0 && ((*dev)->flags & KEYMASTER_SUPPORTS_EC) == 0) {
*supports_ec = false;
@@ -180,9 +183,10 @@
return rc;
} else if (mod->module_api_version == KEYMASTER_MODULE_API_VERSION_1_0) {
*version = 1;
- return keymaster1_device_initialize(mod, dev);
+ return keymaster1_device_initialize(mod, dev, supports_all_digests);
} else {
*version = 2;
+ *supports_all_digests = true;
return keymaster2_device_initialize(mod, dev);
}
}
@@ -353,7 +357,7 @@
// Methods from ::android::hardware::keymaster::V3_0::IKeymasterDevice follow.
Return<void> KeymasterDevice::getHardwareFeatures(getHardwareFeatures_cb _hidl_cb) {
- bool is_secure = false;
+ bool is_secure = !(keymaster_device_->flags & KEYMASTER_SOFTWARE_ONLY);
bool supports_symmetric_cryptography = false;
bool supports_attestation = false;
@@ -363,14 +367,12 @@
/* Falls through */
case 1:
supports_symmetric_cryptography = true;
- /* Falls through */
- case 0:
- is_secure = true;
break;
};
_hidl_cb(is_secure, hardware_supports_ec_, supports_symmetric_cryptography,
- supports_attestation);
+ supports_attestation, hardware_supports_all_digests_,
+ keymaster_device_->common.module->name, keymaster_device_->common.module->author);
return Void();
}
@@ -519,21 +521,19 @@
for (size_t i = 0; i < attestParams.size(); ++i) {
switch (attestParams[i].tag) {
- case Tag::ATTESTATION_ID_BRAND:
- case Tag::ATTESTATION_ID_DEVICE:
- case Tag::ATTESTATION_ID_PRODUCT:
- case Tag::ATTESTATION_ID_SERIAL:
- case Tag::ATTESTATION_ID_IMEI:
- case Tag::ATTESTATION_ID_MEID:
- case Tag::ATTESTATION_ID_MANUFACTURER:
- case Tag::ATTESTATION_ID_MODEL:
- // Device id attestation may only be supported if the device is able to permanently
- // destroy its knowledge of the ids. This device is unable to do this, so it must
- // never perform any device id attestation.
- _hidl_cb(ErrorCode::CANNOT_ATTEST_IDS, resultCertChain);
- return Void();
- default:
- break;
+ case Tag::ATTESTATION_ID_BRAND:
+ case Tag::ATTESTATION_ID_DEVICE:
+ case Tag::ATTESTATION_ID_PRODUCT:
+ case Tag::ATTESTATION_ID_SERIAL:
+ case Tag::ATTESTATION_ID_IMEI:
+ case Tag::ATTESTATION_ID_MEID:
+ // Device id attestation may only be supported if the device is able to permanently
+ // destroy its knowledge of the ids. This device is unable to do this, so it must
+ // never perform any device id attestation.
+ _hidl_cb(ErrorCode::CANNOT_ATTEST_IDS, resultCertChain);
+ return Void();
+ default:
+ break;
}
}
@@ -703,7 +703,8 @@
uint32_t version;
bool supports_ec;
- auto rc = keymaster_device_initialize(&dev, &version, &supports_ec);
+ bool supports_all_digests;
+ auto rc = keymaster_device_initialize(&dev, &version, &supports_ec, &supports_all_digests);
if (rc) return nullptr;
auto kmrc = ::keymaster::ConfigureDevice(dev);
@@ -712,7 +713,7 @@
return nullptr;
}
- return new KeymasterDevice(dev, version, supports_ec);
+ return new KeymasterDevice(dev, version, supports_ec, supports_all_digests);
}
} // namespace implementation
diff --git a/keymaster/3.0/default/KeymasterDevice.h b/keymaster/3.0/default/KeymasterDevice.h
index 382f45f..e048d5b 100644
--- a/keymaster/3.0/default/KeymasterDevice.h
+++ b/keymaster/3.0/default/KeymasterDevice.h
@@ -44,9 +44,11 @@
class KeymasterDevice : public IKeymasterDevice {
public:
- KeymasterDevice(keymaster2_device_t* dev, uint32_t hardware_version, bool hardware_supports_ec)
+ KeymasterDevice(keymaster2_device_t* dev, uint32_t hardware_version, bool hardware_supports_ec,
+ bool hardware_supports_all_digests)
: keymaster_device_(dev), hardware_version_(hardware_version),
- hardware_supports_ec_(hardware_supports_ec) {}
+ hardware_supports_ec_(hardware_supports_ec),
+ hardware_supports_all_digests_(hardware_supports_all_digests) {}
virtual ~KeymasterDevice();
// Methods from ::android::hardware::keymaster::V3_0::IKeymasterDevice follow.
@@ -85,6 +87,7 @@
keymaster2_device_t* keymaster_device_;
uint32_t hardware_version_;
bool hardware_supports_ec_;
+ bool hardware_supports_all_digests_;
};
extern "C" IKeymasterDevice* HIDL_FETCH_IKeymasterDevice(const char* name);
diff --git a/nfc/1.0/Android.bp b/nfc/1.0/Android.bp
index e7305b4..7ee3a9e 100644
--- a/nfc/1.0/Android.bp
+++ b/nfc/1.0/Android.bp
@@ -32,6 +32,7 @@
],
out: [
"android/hardware/nfc/1.0/types.h",
+ "android/hardware/nfc/1.0/hwtypes.h",
"android/hardware/nfc/1.0/INfc.h",
"android/hardware/nfc/1.0/IHwNfc.h",
"android/hardware/nfc/1.0/BnHwNfc.h",
diff --git a/radio/1.0/Android.bp b/radio/1.0/Android.bp
index f59cf66..e457795 100644
--- a/radio/1.0/Android.bp
+++ b/radio/1.0/Android.bp
@@ -38,6 +38,7 @@
],
out: [
"android/hardware/radio/1.0/types.h",
+ "android/hardware/radio/1.0/hwtypes.h",
"android/hardware/radio/1.0/IRadio.h",
"android/hardware/radio/1.0/IHwRadio.h",
"android/hardware/radio/1.0/BnHwRadio.h",
diff --git a/radio/1.0/IRadioResponse.hal b/radio/1.0/IRadioResponse.hal
index d21bf0b..42e53a7 100644
--- a/radio/1.0/IRadioResponse.hal
+++ b/radio/1.0/IRadioResponse.hal
@@ -28,7 +28,6 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
*/
oneway getIccCardStatusResponse(RadioResponseInfo info, CardStatus cardStatus);
@@ -38,9 +37,7 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE (radio resetting)
- * RadioError:GENERIC_FAILURE
* RadioError:PASSWORD_INCORRECT
*/
oneway supplyIccPinForAppResponse(RadioResponseInfo info, int32_t remainingRetries);
@@ -51,9 +48,7 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE (radio resetting)
- * RadioError:GENERIC_FAILURE
* RadioError:PASSWORD_INCORRECT (PUK is invalid)
*/
oneway supplyIccPukForAppResponse(RadioResponseInfo info, int32_t remainingRetries);
@@ -64,9 +59,7 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE (radio resetting)
- * RadioError:GENERIC_FAILURE
* RadioError:PASSWORD_INCORRECT
*/
oneway supplyIccPin2ForAppResponse(RadioResponseInfo info, int32_t remainingRetries);
@@ -76,9 +69,7 @@
* @param remainingRetries Number of retries remaining, must be equal to -1 if unknown.
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE (radio resetting)
- * RadioError:GENERIC_FAILURE
* RadioError:PASSWORD_INCORRECT (PUK is invalid)
*/
oneway supplyIccPuk2ForAppResponse(RadioResponseInfo info, int32_t remainingRetries);
@@ -89,9 +80,7 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE (radio resetting)
- * RadioError:GENERIC_FAILURE
* RadioError:PASSWORD_INCORRECT
*/
oneway changeIccPinForAppResponse(RadioResponseInfo info, int32_t remainingRetries);
@@ -102,9 +91,7 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE (radio resetting)
- * RadioError:GENERIC_FAILURE
* RadioError:PASSWORD_INCORRECT (old PIN2 is invalid)
*/
oneway changeIccPin2ForAppResponse(RadioResponseInfo info, int32_t remainingRetries);
@@ -115,9 +102,7 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE (radio resetting)
- * RadioError:GENERIC_FAILURE
* RadioError:PASSWORD_INCORRECT (code is invalid)
*/
oneway supplyNetworkDepersonalizationResponse(RadioResponseInfo info, int32_t remainingRetries);
@@ -128,7 +113,6 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE (radio resetting)
* RadioError:GENERIC_FAILURE (request will be made again in a few hundred msec)
* RadioError:NO_MEMORY
@@ -141,7 +125,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE (radio resetting)
- * RadioError:GENERIC_FAILURE
* RadioError:DIAL_MODIFIED_TO_USSD
* RadioError:DIAL_MODIFIED_TO_SS
* RadioError:DIAL_MODIFIED_TO_DIAL
@@ -167,9 +150,7 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE (radio resetting)
- * RadioError:GENERIC_FAILURE
*/
oneway getIMSIForAppResponse(RadioResponseInfo info, string imsi);
@@ -185,7 +166,6 @@
* RadioError:MODEM_ERR
* RadioError:INTERNAL_ERR
* RadioError:INVALID_CALL_ID
- * RadioError:GENERIC_FAILURE
*/
oneway hangupConnectionResponse(RadioResponseInfo info);
@@ -203,7 +183,6 @@
* RadioError:NO_RESOURCES
* RadioError:OPERATION_NOT_ALLOWED
* RadioError:INVALID_ARGUMENTS
- * RadioError:GENERIC_FAILURE
*/
oneway hangupWaitingOrBackgroundResponse(RadioResponseInfo info);
@@ -221,7 +200,6 @@
* RadioError:NO_RESOURCES
* RadioError:OPERATION_NOT_ALLOWED
* RadioError:INVALID_ARGUMENTS
- * RadioError:GENERIC_FAILURE
*/
oneway hangupForegroundResumeBackgroundResponse(RadioResponseInfo info);
@@ -239,7 +217,6 @@
* RadioError:INVALID_CALL_ID
* RadioError:OPERATION_NOT_ALLOWED
* RadioError:INVALID_ARGUMENTS
- * RadioError:GENERIC_FAILURE
*/
oneway switchWaitingOrHoldingAndActiveResponse(RadioResponseInfo info);
@@ -256,7 +233,6 @@
* RadioError:INVALID_CALL_ID
* RadioError:OPERATION_NOT_ALLOWED
* RadioError:INVALID_ARGUMENTS
- * RadioError:GENERIC_FAILURE
*/
oneway conferenceResponse(RadioResponseInfo info);
@@ -274,7 +250,6 @@
* RadioError:INVALID_CALL_ID
* RadioError:OPERATION_NOT_ALLOWED
* RadioError:INVALID_ARGUMENTS
- * RadioError:GENERIC_FAILURE
*/
oneway rejectCallResponse(RadioResponseInfo info);
@@ -316,10 +291,8 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:NO_MEMORY
- * RadioError:GENERIC_FAILURE
*/
oneway getLastCallFailCauseResponse(RadioResponseInfo info,
LastCallFailCauseInfo failCauseinfo);
@@ -330,7 +303,6 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE
*/
oneway getSignalStrengthResponse(RadioResponseInfo info, SignalStrength sigStrength);
@@ -342,9 +314,7 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway getVoiceRegistrationStateResponse(RadioResponseInfo info,
VoiceRegStateResult voiceRegResponse);
@@ -356,9 +326,7 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway getDataRegistrationStateResponse(RadioResponseInfo info,
DataRegStateResult dataRegResponse);
@@ -371,9 +339,7 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway getOperatorResponse(RadioResponseInfo info, string longName, string shortName,
string numeric);
@@ -383,9 +349,7 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
* RadioError:OPERATION_NOT_ALLOWED
*/
oneway setRadioPowerResponse(RadioResponseInfo info);
@@ -401,7 +365,6 @@
* RadioError:NO_MEMORY
* RadioError:MODEM_ERR
* RadioError:INVALID_CALL_ID
- * RadioError:GENERIC_FAILURE
*/
oneway sendDtmfResponse(RadioResponseInfo info);
@@ -425,7 +388,6 @@
* RadioError:MODEM_ERR
* RadioError:NETWORK_ERR
* RadioError:MODE_NOT_SUPPORTED
- * RadioError:GENERIC_FAILURE
*/
oneway sendSmsResponse(RadioResponseInfo info, SendSmsResult sms);
@@ -450,7 +412,6 @@
* RadioError:MODEM_ERR
* RadioError:NETWORK_ERR
* RadioError:MODE_NOT_SUPPORTED
- * RadioError:GENERIC_FAILURE
*/
oneway sendSMSExpectMoreResponse(RadioResponseInfo info, SendSmsResult sms);
@@ -462,12 +423,10 @@
* RadioError:NONE must be returned on both success and failure of setup with the
* DataCallResponse.status containing the actual status
* For all other errors the DataCallResponse is ignored.
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:OP_NOT_ALLOWED_BEFORE_REG_TO_NW
* RadioError:OP_NOT_ALLOWED_DURING_VOICE_CALL
* RadioError:REQUEST_NOT_SUPPORTED
- * RadioError:GENERIC_FAILURE
*/
oneway setupDataCallResponse(RadioResponseInfo info, SetupDataCallResult dcResponse);
@@ -477,11 +436,9 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:SIM_PIN2
* RadioError:SIM_PUK2
- * RadioError:GENERIC_FAILURE
*/
oneway iccIOForAppResponse(RadioResponseInfo info, IccIoResult iccIo);
@@ -504,7 +461,6 @@
* RadioError:ABORTED
* RadioError:SYSTEM_ERR
* RadioError:INVALID_STATE
- * RadioError:GENERIC_FAILURE
*/
oneway sendUssdResponse(RadioResponseInfo info);
@@ -513,7 +469,6 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:SIM_BUSY
* RadioError:OPERATION_NOT_ALLOWED
@@ -521,7 +476,6 @@
* RadioError:INTERNAL_ERR
* RadioError:NO_MEMORY
* RadioError:INVALID_STATE
- * RadioError:GENERIC_FAILURE
*/
oneway cancelPendingUssdResponse(RadioResponseInfo info);
@@ -532,7 +486,6 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:SS_MODIFIED_TO_DIAL
* RadioError:SS_MODIFIED_TO_USSD
@@ -542,7 +495,6 @@
* RadioError:INTERNAL_ERR
* RadioError:FDN_CHECK_FAILURE
* RadioError:SYSTEM_ERR
- * RadioError:GENERIC_FAILURE
*/
oneway getClirResponse(RadioResponseInfo info, int32_t n, int32_t m);
@@ -558,7 +510,6 @@
* RadioError:SS_MODIFIED_TO_SS
* RadioError:INVALID_ARGUMENTS
* RadioError:SYSTEM_ERR
- * RadioError:GENERIC_FAILURE
*/
oneway setClirResponse(RadioResponseInfo info);
@@ -586,7 +537,6 @@
* RadioError:MODEM_ERR
* RadioError:INTERNAL_ERR
* RadioError:FDN_CHECK_FAILURE
- * RadioError:GENERIC_FAILURE
*/
oneway getCallForwardStatusResponse(RadioResponseInfo info,
vec<CallForwardInfo> callForwardInfos);
@@ -607,7 +557,6 @@
* RadioError:INTERNAL_ERR
* RadioError:INVALID_STATE
* RadioError:FDN_CHECK_FAILURE
- * RadioError:GENERIC_FAILURE
*/
oneway setCallForwardResponse(RadioResponseInfo info);
@@ -632,7 +581,6 @@
* RadioError:MODEM_ERR
* RadioError:INTERNAL_ERR
* RadioError:FDN_CHECK_FAILURE
- * RadioError:GENERIC_FAILURE
*/
oneway getCallWaitingResponse(RadioResponseInfo info, bool enable, int32_t serviceClass);
@@ -651,7 +599,6 @@
* RadioError:INTERNAL_ERR
* RadioError:INVALID_STATE
* RadioError:FDN_CHECK_FAILURE
- * RadioError:GENERIC_FAILURE
*/
oneway setCallWaitingResponse(RadioResponseInfo info);
@@ -660,9 +607,7 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway acknowledgeLastIncomingGsmSmsResponse(RadioResponseInfo info);
@@ -671,7 +616,6 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:INVALID_STATE
* RadioError:NO_MEMORY
@@ -679,7 +623,6 @@
* RadioError:MODEM_ERR
* RadioError:INTERNAL_ERR
* RadioError:INVALID_CALL_ID
- * RadioError:GENERIC_FAILURE
*/
oneway acceptCallResponse(RadioResponseInfo info);
@@ -688,9 +631,7 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway deactivateDataCallResponse(RadioResponseInfo info);
@@ -712,7 +653,6 @@
* RadioError:INTERNAL_ERR
* RadioError:SYSTEM_ERR
* RadioError:FDN_CHECK_FAILURE
- * RadioError:GENERIC_FAILURE
*/
oneway getFacilityLockForAppResponse(RadioResponseInfo info, int32_t response);
@@ -732,7 +672,6 @@
* RadioError:INTERNAL_ERR
* RadioError:INVALID_STATE
* RadioError:FDN_CHECK_FAILURE
- * RadioError:GENERIC_FAILURE
*/
oneway setFacilityLockForAppResponse(RadioResponseInfo info, int32_t retry);
@@ -751,7 +690,6 @@
* RadioError:INTERNAL_ERR
* RadioError:SYSTEM_ERR
* RadioError:FDN_CHECK_FAILURE
- * RadioError:GENERIC_FAILURE
*/
oneway setBarringPasswordResponse(RadioResponseInfo info);
@@ -761,9 +699,7 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway getNetworkSelectionModeResponse(RadioResponseInfo info, bool manual);
@@ -772,11 +708,9 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:ILLEGAL_SIM_OR_ME
* RadioError:OPERATION_NOT_ALLOWED
- * RadioError:GENERIC_FAILURE
*
* Returns RadioError:ILLEGAL_SIM_OR_ME when the failure is permanent and
* no retries needed, such as illegal SIM or ME.
@@ -789,11 +723,9 @@
*
* Valid errors returned:
* RadioError:NONE
- * RadioError:INVALID_ARGUMENTS
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:ILLEGAL_SIM_OR_ME
* RadioError:OPERATION_NOT_ALLOWED
- * RadioError:GENERIC_FAILURE
*
* Returns RadioError:ILLEGAL_SIM_OR_ME when the failure is permanent and
* no retries needed, such as illegal SIM or ME.
@@ -832,7 +764,6 @@
* RadioError:MODEM_ERR
* RadioError:INTERNAL_ERR
* RadioError:INVALID_CALL_ID
- * RadioError:GENERIC_FAILURE
*/
oneway startDtmfResponse(RadioResponseInfo info);
@@ -850,7 +781,6 @@
* RadioError:MODEM_ERR
* RadioError:INTERNAL_ERR
* RadioError:INVALID_CALL_ID
- * RadioError:GENERIC_FAILURE
*/
oneway stopDtmfResponse(RadioResponseInfo info);
@@ -861,9 +791,7 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:INVALID_ARGUMENTS
* RadioError:EMPTY_RECORD
- * RadioError:GENERIC_FAILURE
*/
oneway getBasebandVersionResponse(RadioResponseInfo info, string version);
@@ -882,7 +810,6 @@
* RadioError:INTERNAL_ERR
* RadioError:INVALID_CALL_ID
* RadioError:OPERATION_NOT_ALLOWED
- * RadioError:GENERIC_FAILURE
*/
oneway separateConnectionResponse(RadioResponseInfo info);
@@ -895,7 +822,6 @@
* RadioError:INVALID_ARGUMENTS
* RadioError:NO_MEMORY
* RadioError:REQUEST_RATE_LIMITED
- * RadioError:GENERIC_FAILURE
*/
oneway setMuteResponse(RadioResponseInfo info);
@@ -906,13 +832,11 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:INVALID_ARGUMENTS
* RadioError:SS_MODIFIED_TO_DIAL
* RadioError:SS_MODIFIED_TO_USSD
* RadioError:SS_MODIFIED_TO_SS
* RadioError:NO_MEMORY
* RadioError:REQUEST_RATE_LIMITED
- * RadioError:GENERIC_FAILURE
*/
oneway getMuteResponse(RadioResponseInfo info, bool enable);
@@ -929,7 +853,6 @@
* RadioError:MODEM_ERR
* RadioError:INTERNAL_ERR
* RadioError:FDN_CHECK_FAILURE
- * RadioError:GENERIC_FAILURE
*/
oneway getClipResponse(RadioResponseInfo info, ClipStatus status);
@@ -940,8 +863,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:INVALID_ARGUMENTS
- * RadioError:GENERIC_FAILURE
*/
oneway getDataCallListResponse(RadioResponseInfo info, vec<SetupDataCallResult> dcResponse);
@@ -957,7 +878,6 @@
* RadioError:SYSTEM_ERR
* RadioError:MODEM_ERR
* RadioError:INTERNAL_ERR
- * RadioError:GENERIC_FAILURE
*/
oneway setSuppServiceNotificationsResponse(RadioResponseInfo info);
@@ -978,7 +898,6 @@
* RadioError:INVALID_MODEM_STATE
* RadioError:MODE_NOT_SUPPORTED
* RadioError:INVALID_SMSC_ADDRESS
- * RadioError:GENERIC_FAILURE
*/
oneway writeSmsToSimResponse(RadioResponseInfo info, int32_t index);
@@ -994,7 +913,6 @@
* RadioError:SYSTEM_ERR
* RadioError:MODEM_ERR
* RadioError:NO_SUCH_ENTRY
- * RadioError:GENERIC_FAILURE
*/
oneway deleteSmsOnSimResponse(RadioResponseInfo info);
@@ -1004,9 +922,7 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:INVALID_ARGUMENTS
* RadioError:OPERATION_NOT_ALLOWED
- * RadioError:GENERIC_FAILURE
*/
oneway setBandModeResponse(RadioResponseInfo info);
@@ -1018,7 +934,6 @@
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:INVALID_ARGUMENTS
- * RadioError:GENERIC_FAILURE
*/
oneway getAvailableBandModesResponse(RadioResponseInfo info, vec<RadioBandMode> bandModes);
@@ -1030,10 +945,8 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:INVALID_ARGUMENTS
* RadioError:SIM_BUSY
* RadioError:OPERATION_NOT_ALLOWED
- * RadioError:GENERIC_FAILURE
*/
oneway sendEnvelopeResponse(RadioResponseInfo info, string commandResponse);
@@ -1045,7 +958,6 @@
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:INVALID_ARGUMENTS
* RadioError:OPERATION_NOT_ALLOWED
- * RadioError:GENERIC_FAILURE
*/
oneway sendTerminalResponseToSimResponse(RadioResponseInfo info);
@@ -1057,7 +969,6 @@
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:INVALID_ARGUMENTS
* RadioError:OPERATION_NOT_ALLOWED
- * RadioError:GENERIC_FAILURE
*/
oneway handleStkCallSetupRequestFromSimResponse(RadioResponseInfo info);
@@ -1076,7 +987,6 @@
* RadioError:INTERNAL_ERR
* RadioError:INVALID_CALL_ID
* RadioError:OPERATION_NOT_ALLOWED
- * RadioError:GENERIC_FAILURE
*/
oneway explicitCallTransferResponse(RadioResponseInfo info);
@@ -1086,10 +996,8 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:INVALID_ARGUMENTS
* RadioError:OPERATION_NOT_ALLOWED
* RadioError:MODE_NOT_SUPPORTED
- * RadioError:GENERIC_FAILURE
*/
oneway setPreferredNetworkTypeResponse(RadioResponseInfo info);
@@ -1100,8 +1008,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:INVALID_ARGUMENTS
- * RadioError:GENERIC_FAILURE
*/
oneway getPreferredNetworkTypeResponse(RadioResponseInfo info,
PreferredNetworkType nwType);
@@ -1114,7 +1020,6 @@
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:INVALID_ARGUMENTS
- * RadioError:GENERIC_FAILURE
*/
oneway getNeighboringCidsResponse(RadioResponseInfo info, vec<NeighboringCell> cells);
@@ -1124,8 +1029,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:INVALID_ARGUMENTS
- * RadioError:GENERIC_FAILURE
*/
oneway setLocationUpdatesResponse(RadioResponseInfo info);
@@ -1135,10 +1038,8 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:INVALID_ARGUMENTS
* RadioError:SIM_ABSENT
* RadioError:SUBSCRIPTION_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway setCdmaSubscriptionSourceResponse(RadioResponseInfo info);
@@ -1148,8 +1049,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:INVALID_ARGUMENTS
- * RadioError:GENERIC_FAILURE
*/
oneway setCdmaRoamingPreferenceResponse(RadioResponseInfo info);
@@ -1161,7 +1060,6 @@
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:INVALID_ARGUMENTS
- * RadioError:GENERIC_FAILURE
*/
oneway getCdmaRoamingPreferenceResponse(RadioResponseInfo info, CdmaRoamingType type);
@@ -1175,7 +1073,6 @@
* RadioError:MODEM_ERR
* RadioError:INTERNAL_ERR
* RadioError:NO_MEMORY
- * RadioError:GENERIC_FAILURE
*/
oneway setTTYModeResponse(RadioResponseInfo info);
@@ -1190,7 +1087,6 @@
* RadioError:MODEM_ERR
* RadioError:INTERNAL_ERR
* RadioError:NO_MEMORY
- * RadioError:GENERIC_FAILURE
*/
oneway getTTYModeResponse(RadioResponseInfo info, TtyMode mode);
@@ -1204,7 +1100,6 @@
* RadioError:MODEM_ERR
* RadioError:INTERNAL_ERR
* RadioError:NO_MEMORY
- * RadioError:GENERIC_FAILURE
*/
oneway setPreferredVoicePrivacyResponse(RadioResponseInfo info);
@@ -1220,7 +1115,6 @@
* RadioError:MODEM_ERR
* RadioError:INTERNAL_ERR
* RadioError:NO_MEMORY
- * RadioError:GENERIC_FAILURE
*/
oneway getPreferredVoicePrivacyResponse(RadioResponseInfo info, bool enable);
@@ -1239,7 +1133,6 @@
* RadioError:MODEM_ERR
* RadioError:INVALID_CALL_ID
* RadioError:INVALID_STATE
- * RadioError:GENERIC_FAILURE
*/
oneway sendCDMAFeatureCodeResponse(RadioResponseInfo info);
@@ -1256,7 +1149,6 @@
* RadioError:MODEM_ERR
* RadioError:INVALID_CALL_ID
* RadioError:INVALID_STATE
- * RadioError:GENERIC_FAILURE
*/
oneway sendBurstDtmfResponse(RadioResponseInfo info);
@@ -1281,7 +1173,6 @@
* RadioError:ENCODING_ERR
* RadioError:INVALID_SMSC_ADDRESS
* RadioError:MODE_NOT_SUPPORTED
- * RadioError:GENERIC_FAILURE
*/
oneway sendCdmaSmsResponse(RadioResponseInfo info, SendSmsResult sms);
@@ -1301,7 +1192,6 @@
* RadioError:MODE_NOT_SUPPORTED
* RadioError:NETWORK_NOT_READY
* RadioError:INVALID_MODEM_STATE
- * RadioError:GENERIC_FAILURE
*/
oneway acknowledgeLastIncomingCdmaSmsResponse(RadioResponseInfo info);
@@ -1319,7 +1209,6 @@
* RadioError:SYSTEM_ERR
* RadioError:MODEM_ERR
* RadioError:NO_RESOURCES
- * RadioError:GENERIC_FAILURE
*/
oneway getGsmBroadcastConfigResponse(RadioResponseInfo info,
vec<GsmBroadcastSmsConfigInfo> configs);
@@ -1336,7 +1225,6 @@
* RadioError:REQUEST_RATE_LIMITED
* RadioError:SYSTEM_ERR
* RadioError:MODEM_ERR
- * RadioError:GENERIC_FAILURE
*/
oneway setGsmBroadcastConfigResponse(RadioResponseInfo info);
@@ -1352,7 +1240,6 @@
* RadioError:REQUEST_RATE_LIMITED
* RadioError:SYSTEM_ERR
* RadioError:MODEM_ERR
- * RadioError:GENERIC_FAILURE
*/
oneway setGsmBroadcastActivationResponse(RadioResponseInfo info);
@@ -1370,7 +1257,6 @@
* RadioError:SYSTEM_ERR
* RadioError:MODEM_ERR
* RadioError:NO_RESOURCES
- * RadioError:GENERIC_FAILURE
*/
oneway getCdmaBroadcastConfigResponse(RadioResponseInfo info,
vec<CdmaBroadcastSmsConfigInfo> configs);
@@ -1387,7 +1273,6 @@
* RadioError:REQUEST_RATE_LIMITED
* RadioError:SYSTEM_ERR
* RadioError:MODEM_ERR
- * RadioError:GENERIC_FAILURE
*/
oneway setCdmaBroadcastConfigResponse(RadioResponseInfo info);
@@ -1403,7 +1288,6 @@
* RadioError:REQUEST_RATE_LIMITED
* RadioError:SYSTEM_ERR
* RadioError:MODEM_ERR
- * RadioError:GENERIC_FAILURE
*/
oneway setCdmaBroadcastActivationResponse(RadioResponseInfo info);
@@ -1420,9 +1304,7 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:INVALID_ARGUMENTS
* RadioError:SUBSCRIPTION_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway getCDMASubscriptionResponse(RadioResponseInfo info, string mdn, string hSid,
string hNid, string min, string prl);
@@ -1445,7 +1327,6 @@
* RadioError:INVALID_MODEM_STATE
* RadioError:MODE_NOT_SUPPORTED
* RadioError:INVALID_SMSC_ADDRESS
- * RadioError:GENERIC_FAILURE
*/
oneway writeSmsToRuimResponse(RadioResponseInfo info, uint32_t index);
@@ -1461,7 +1342,6 @@
* RadioError:SYSTEM_ERR
* RadioError:MODEM_ERR
* RadioError:NO_SUCH_ENTRY
- * RadioError:GENERIC_FAILURE
*/
oneway deleteSmsOnRuimResponse(RadioResponseInfo info);
@@ -1475,8 +1355,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:INVALID_ARGUMENTS
- * RadioError:GENERIC_FAILURE
*
* If a empty string value is returned for any of the device id, it means that there was error
* accessing the device.
@@ -1491,9 +1369,7 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:INVALID_ARGUMENTS
* RadioError:OPERATION_NO_ALLOWED
- * RadioError:GENERIC_FAILURE
*/
oneway exitEmergencyCallbackModeResponse(RadioResponseInfo info);
@@ -1512,7 +1388,6 @@
* RadioError:MODEM_ERR
* RadioError:INVALID_MODEM_STATE
* RadioError:NOT_PROVISIONED
- * RadioError:GENERIC_FAILURE
*/
oneway getSmscAddressResponse(RadioResponseInfo info, string smsc);
@@ -1529,7 +1404,6 @@
* RadioError:REQUEST_RATE_LIMITED
* RadioError:MODEM_ERR
* RadioError:NO_RESOURCES
- * RadioError:GENERIC_FAILURE
*/
oneway setSmscAddressResponse(RadioResponseInfo info);
@@ -1545,7 +1419,6 @@
* RadioError:REQUEST_RATE_LIMITED
* RadioError:MODEM_ERR
* RadioError:INVALID_STATE
- * RadioError:GENERIC_FAILURE
*/
oneway reportSmsMemoryStatusResponse(RadioResponseInfo info);
@@ -1555,7 +1428,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway reportStkServiceIsRunningResponse(RadioResponseInfo info);
@@ -1567,7 +1439,6 @@
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:SUBSCRIPTION_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway getCdmaSubscriptionSourceResponse(RadioResponseInfo info, CdmaSubscriptionSource source);
@@ -1578,7 +1449,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway requestIsimAuthenticationResponse(RadioResponseInfo info, string response);
@@ -1588,7 +1458,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway acknowledgeIncomingGsmSmsWithPduResponse(RadioResponseInfo info);
@@ -1601,7 +1470,6 @@
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:SIM_BUSY
* RadioError:OPERATION_NOT_ALLOWED
- * RadioError:GENERIC_FAILURE
*/
oneway sendEnvelopeWithStatusResponse(RadioResponseInfo info, IccIoResult iccIo);
@@ -1612,7 +1480,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway getVoiceRadioTechnologyResponse(RadioResponseInfo info, RadioTechnology rat);
@@ -1623,7 +1490,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway getCellInfoListResponse(RadioResponseInfo info, vec<CellInfo> cellInfo);
@@ -1633,7 +1499,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway setCellInfoListRateResponse(RadioResponseInfo info);
@@ -1644,7 +1509,6 @@
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:SUBSCRIPTION_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway setInitialAttachApnResponse(RadioResponseInfo info);
@@ -1657,7 +1521,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway getImsRegistrationStateResponse(RadioResponseInfo info, bool isRegistered,
RadioTechnologyFamily ratFamily);
@@ -1682,7 +1545,6 @@
* RadioError:NETWORK_ERR
* RadioError:ENCODING_ERR
* RadioError:MODE_NOT_SUPPORTED
- * RadioError:GENERIC_FAILURE
*/
oneway sendImsSmsResponse(RadioResponseInfo info, SendSmsResult sms);
@@ -1693,7 +1555,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway iccTransmitApduBasicChannelResponse(RadioResponseInfo info, IccIoResult result);
@@ -1706,7 +1567,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
* RadioError:MISSING_RESOURCE
* RadioError:NO_SUCH_ELEMENT
*/
@@ -1719,7 +1579,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway iccCloseLogicalChannelResponse(RadioResponseInfo info);
@@ -1730,7 +1589,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway iccTransmitApduLogicalChannelResponse(RadioResponseInfo info, IccIoResult result);
@@ -1741,7 +1599,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway nvReadItemResponse(RadioResponseInfo info, string result);
@@ -1751,7 +1608,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway nvWriteItemResponse(RadioResponseInfo info);
@@ -1761,7 +1617,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway nvWriteCdmaPrlResponse(RadioResponseInfo info);
@@ -1771,7 +1626,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway nvResetConfigResponse(RadioResponseInfo info);
@@ -1782,7 +1636,6 @@
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:SUBSCRIPTION_NOT_SUPPORTED
- * RadioError:GENERIC_FAILURE
*/
oneway setUiccSubscriptionResponse(RadioResponseInfo info);
@@ -1792,7 +1645,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway setDataAllowedResponse(RadioResponseInfo info);
@@ -1833,7 +1685,6 @@
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:OPERATION_NOT_ALLOWED
- * RadioError:GENERIC_FAILURE
*/
oneway requestShutdownResponse(RadioResponseInfo info);
@@ -1845,7 +1696,6 @@
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:OPERATION_NOT_ALLOWED
- * RadioError:GENERIC_FAILURE
*/
oneway getRadioCapabilityResponse(RadioResponseInfo info, RadioCapability rc);
@@ -1858,7 +1708,6 @@
* RadioError:NONE means a unsol radioCapability() will be sent within 30 seconds.
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:OPERATION_NOT_ALLOWED
- * RadioError:GENERIC_FAILURE
*/
oneway setRadioCapabilityResponse(RadioResponseInfo info, RadioCapability rc);
@@ -1902,7 +1751,6 @@
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
- * RadioError:GENERIC_FAILURE
*/
oneway getModemActivityInfoResponse(RadioResponseInfo info, ActivityStatsInfo activityInfo);
diff --git a/renderscript/1.0/Android.bp b/renderscript/1.0/Android.bp
index cce34e7..9f2a589 100644
--- a/renderscript/1.0/Android.bp
+++ b/renderscript/1.0/Android.bp
@@ -32,6 +32,7 @@
],
out: [
"android/hardware/renderscript/1.0/types.h",
+ "android/hardware/renderscript/1.0/hwtypes.h",
"android/hardware/renderscript/1.0/IContext.h",
"android/hardware/renderscript/1.0/IHwContext.h",
"android/hardware/renderscript/1.0/BnHwContext.h",
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 2360863..50cf787 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 /vendor/bin/hw/android.hardware.sensors@1.0-service
class main
user system
- group system readproc
+ group system
diff --git a/tests/bar/1.0/Android.bp b/tests/bar/1.0/Android.bp
index 694804c..2edde20 100644
--- a/tests/bar/1.0/Android.bp
+++ b/tests/bar/1.0/Android.bp
@@ -38,6 +38,7 @@
],
out: [
"android/hardware/tests/bar/1.0/types.h",
+ "android/hardware/tests/bar/1.0/hwtypes.h",
"android/hardware/tests/bar/1.0/IBar.h",
"android/hardware/tests/bar/1.0/IHwBar.h",
"android/hardware/tests/bar/1.0/BnHwBar.h",
diff --git a/tests/baz/1.0/Android.bp b/tests/baz/1.0/Android.bp
index 7939444..8f327e3 100644
--- a/tests/baz/1.0/Android.bp
+++ b/tests/baz/1.0/Android.bp
@@ -34,6 +34,7 @@
],
out: [
"android/hardware/tests/baz/1.0/types.h",
+ "android/hardware/tests/baz/1.0/hwtypes.h",
"android/hardware/tests/baz/1.0/IBase.h",
"android/hardware/tests/baz/1.0/IHwBase.h",
"android/hardware/tests/baz/1.0/BnHwBase.h",
diff --git a/tests/foo/1.0/Android.bp b/tests/foo/1.0/Android.bp
index 9572855..b221201 100644
--- a/tests/foo/1.0/Android.bp
+++ b/tests/foo/1.0/Android.bp
@@ -38,6 +38,7 @@
],
out: [
"android/hardware/tests/foo/1.0/types.h",
+ "android/hardware/tests/foo/1.0/hwtypes.h",
"android/hardware/tests/foo/1.0/IFoo.h",
"android/hardware/tests/foo/1.0/IHwFoo.h",
"android/hardware/tests/foo/1.0/BnHwFoo.h",
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 f8da101..cbc0f65 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 /vendor/bin/hw/android.hardware.thermal@1.0-service
class hal
user system
- group system readproc
+ group system
diff --git a/tv/input/1.0/Android.mk b/tv/input/1.0/Android.mk
index f9e3276..87654da 100644
--- a/tv/input/1.0/Android.mk
+++ b/tv/input/1.0/Android.mk
@@ -1,19 +1,41 @@
-#
-# 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.
-#
+# This file is autogenerated by hidl-gen. Do not edit manually.
LOCAL_PATH := $(call my-dir)
-include $(call all-subdir-makefiles)
+################################################################################
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.tv.input@1.0-java-constants
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+
+intermediates := $(call local-generated-sources-dir, COMMON)
+
+HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
+#
+GEN := $(intermediates)/android/hardware/tv/input/V1_0/Constants.java
+$(GEN): $(HIDL)
+$(GEN): $(LOCAL_PATH)/types.hal
+$(GEN): $(LOCAL_PATH)/ITvInput.hal
+$(GEN): $(LOCAL_PATH)/ITvInputCallback.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.tv.input@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/tv/input/1.0/default/TvInput.cpp b/tv/input/1.0/default/TvInput.cpp
index 0bc6401..4ea1dec 100644
--- a/tv/input/1.0/default/TvInput.cpp
+++ b/tv/input/1.0/default/TvInput.cpp
@@ -19,8 +19,6 @@
#include "TvInput.h"
-const native_handle_t kNullNativeHandle{sizeof(native_handle_t), 0, 0, {}};
-
namespace android {
namespace hardware {
namespace tv {
@@ -117,8 +115,6 @@
sidebandStream = stream.sideband_stream_source_handle;
}
} else {
- // TODO(b/30814137)
- sidebandStream = const_cast<native_handle_t*>(&kNullNativeHandle);
if (ret == -EBUSY) {
res = Result::NO_RESOURCE;
} else if (ret == -EEXIST) {
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 9edeba6..dc6907c 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 /vendor/bin/hw/android.hardware.tv.input@1.0-service
class hal
user system
- group system readproc
+ group system
diff --git a/tv/input/1.0/types.hal b/tv/input/1.0/types.hal
index 55eb6ad..60a3b7b 100644
--- a/tv/input/1.0/types.hal
+++ b/tv/input/1.0/types.hal
@@ -27,6 +27,7 @@
};
/* Type of physical TV input. */
+@export(name="", value_prefix="TV_INPUT_TYPE_")
enum TvInputType : int32_t {
OTHER = 1, // Generic hardware.
TUNER = 2, // Tuner. e.g. built-in terrestrial tuner
@@ -46,6 +47,7 @@
* regardless of whether the connected external device is electrically on or not.
* If the device does not have such capability, you must use UNKNOWN.
*/
+@export(name="", value_prefix="CABLE_CONNECTION_STATUS_")
enum CableConnectionStatus : int32_t {
UNKNOWN = 0,
CONNECTED = 1,
@@ -63,6 +65,7 @@
// must be filled with 0s.
};
+@export(name="", value_prefix="EVENT_")
enum TvInputEventType : int32_t {
/*
* Hardware notifies the framework that a device is available.
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 4153c44..f027065 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 /vendor/bin/hw/android.hardware.vibrator@1.0-service
class hal
user system
- group system readproc
+ group system
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 ba43302..bcc6416 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 /vendor/bin/hw/android.hardware.vr@1.0-service
class hal
user system
- group system readproc
+ group system
diff --git a/wifi/1.0/Android.bp b/wifi/1.0/Android.bp
index 2319999..df5c9d2 100644
--- a/wifi/1.0/Android.bp
+++ b/wifi/1.0/Android.bp
@@ -54,6 +54,7 @@
],
out: [
"android/hardware/wifi/1.0/types.h",
+ "android/hardware/wifi/1.0/hwtypes.h",
"android/hardware/wifi/1.0/IWifi.h",
"android/hardware/wifi/1.0/IHwWifi.h",
"android/hardware/wifi/1.0/BnHwWifi.h",
diff --git a/wifi/1.0/default/Android.mk b/wifi/1.0/default/Android.mk
index cc5e1c6..13f6cc1 100644
--- a/wifi/1.0/default/Android.mk
+++ b/wifi/1.0/default/Android.mk
@@ -48,6 +48,5 @@
libwifi-hal \
libwifi-system \
libcld80211
-LOCAL_WHOLE_STATIC_LIBRARIES := $(LIB_WIFI_HAL)
LOCAL_INIT_RC := android.hardware.wifi@1.0-service.rc
include $(BUILD_EXECUTABLE)
diff --git a/wifi/1.0/vts/functional/Android.bp b/wifi/1.0/vts/functional/Android.bp
index 9403e98..b454a06 100644
--- a/wifi/1.0/vts/functional/Android.bp
+++ b/wifi/1.0/vts/functional/Android.bp
@@ -17,7 +17,7 @@
cc_library_static {
name: "VtsHalWifiV1_0TargetTestUtil",
srcs: [
- "VtsHalWifiV1_0TargetTest.cpp",
+
"wifi_hidl_call_util_selftest.cpp",
"wifi_hidl_test.cpp",
"wifi_hidl_test_utils.cpp"],
@@ -38,6 +38,7 @@
name: "VtsHalWifiV1_0TargetTest",
defaults: ["hidl_defaults"],
srcs: [
+ "VtsHalWifiV1_0TargetTest.cpp",
"wifi_ap_iface_hidl_test.cpp",
"wifi_chip_hidl_test.cpp",
"wifi_p2p_iface_hidl_test.cpp",
@@ -63,7 +64,9 @@
cc_test {
name: "VtsHalWifiNanV1_0TargetTest",
defaults: ["hidl_defaults"],
- srcs: ["wifi_nan_iface_hidl_test.cpp"],
+ srcs: [
+ "VtsHalWifiV1_0TargetTest.cpp",
+ "wifi_nan_iface_hidl_test.cpp"],
shared_libs: [
"libbase",
"liblog",
diff --git a/wifi/1.0/vts/functional/VtsHalWifiV1_0TargetTest.cpp b/wifi/1.0/vts/functional/VtsHalWifiV1_0TargetTest.cpp
index b56ed2b..160fcd2 100644
--- a/wifi/1.0/vts/functional/VtsHalWifiV1_0TargetTest.cpp
+++ b/wifi/1.0/vts/functional/VtsHalWifiV1_0TargetTest.cpp
@@ -20,14 +20,6 @@
#include "wifi_hidl_test_utils.h"
-class WifiHidlEnvironment : public ::testing::Environment {
- public:
- virtual void SetUp() override { stopFramework(); }
- virtual void TearDown() override { startFramework(); }
-
- private:
-};
-
int main(int argc, char** argv) {
::testing::AddGlobalTestEnvironment(new WifiHidlEnvironment);
::testing::InitGoogleTest(&argc, argv);
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 2d0b081..fefbd79 100644
--- a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
+++ b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
@@ -82,14 +82,6 @@
}
} // namespace
-void stopFramework() {
- ASSERT_EQ(std::system("stop"), 0);
- stopWifi();
- sleep(5);
-}
-
-void startFramework() { ASSERT_EQ(std::system("start"), 0); }
-
sp<IWifi> getWifi() {
sp<IWifi> wifi = ::testing::VtsHalHidlTargetTestBase::getService<IWifi>();
return wifi;
diff --git a/wifi/1.0/vts/functional/wifi_hidl_test_utils.h b/wifi/1.0/vts/functional/wifi_hidl_test_utils.h
index a723b2a..39a0eba 100644
--- a/wifi/1.0/vts/functional/wifi_hidl_test_utils.h
+++ b/wifi/1.0/vts/functional/wifi_hidl_test_utils.h
@@ -24,11 +24,6 @@
#include <android/hardware/wifi/1.0/IWifiRttController.h>
#include <android/hardware/wifi/1.0/IWifiStaIface.h>
-// Used to stop the android framework (wifi service) before every
-// test.
-void stopFramework();
-void startFramework();
-
// Helper functions to obtain references to the various HIDL interface objects.
// Note: We only have a single instance of each of these objects currently.
// These helper functions should be modified to return vectors if we support
@@ -49,3 +44,12 @@
android::hardware::wifi::V1_0::ChipModeId* configured_mode_id);
// Used to trigger IWifi.stop() at the end of every test.
void stopWifi();
+
+class WifiHidlEnvironment : public ::testing::Environment {
+ public:
+ virtual void SetUp() override {
+ stopWifi();
+ sleep(5);
+ }
+ virtual void TearDown() override {}
+};
\ No newline at end of file
diff --git a/wifi/supplicant/1.0/Android.bp b/wifi/supplicant/1.0/Android.bp
index a6c2758..a0adb8d 100644
--- a/wifi/supplicant/1.0/Android.bp
+++ b/wifi/supplicant/1.0/Android.bp
@@ -52,6 +52,7 @@
],
out: [
"android/hardware/wifi/supplicant/1.0/types.h",
+ "android/hardware/wifi/supplicant/1.0/hwtypes.h",
"android/hardware/wifi/supplicant/1.0/ISupplicant.h",
"android/hardware/wifi/supplicant/1.0/IHwSupplicant.h",
"android/hardware/wifi/supplicant/1.0/BnHwSupplicant.h",