diff options
author | Michael Butler <butlermichael@google.com> | 2019-10-04 22:02:52 -0700 |
---|---|---|
committer | Michael Butler <butlermichael@google.com> | 2019-10-28 16:50:32 -0700 |
commit | 9ed83978db60dd87744678e54fc06b5d1d8e77bc (patch) | |
tree | cff7e4a895159bad613993c79f0439e024486d8e | |
parent | 869066c5fcc4aa785a857fbf8d4d5aa62338d2b1 (diff) | |
download | ml-9ed83978db60dd87744678e54fc06b5d1d8e77bc.tar.gz |
Create initialization phase for VersionedIDevice
Bug: N/A
Test: mma
Test: NeuralNetworksTest_static
Test: CtsNNAPITestCases
Change-Id: I026bad696f0838a3a993576062fc7d3fd7866261
Merged-In: I026bad696f0838a3a993576062fc7d3fd7866261
(cherry picked from commit fe84aeb850ff2b2601b3350ab8dd28ba7e9e2902)
-rw-r--r-- | nn/runtime/VersionedInterfaces.cpp | 44 | ||||
-rw-r--r-- | nn/runtime/VersionedInterfaces.h | 19 |
2 files changed, 57 insertions, 6 deletions
diff --git a/nn/runtime/VersionedInterfaces.cpp b/nn/runtime/VersionedInterfaces.cpp index 16ebe0ae8..f44717d76 100644 --- a/nn/runtime/VersionedInterfaces.cpp +++ b/nn/runtime/VersionedInterfaces.cpp @@ -319,7 +319,17 @@ std::shared_ptr<VersionedIDevice> VersionedIDevice::create(std::string serviceNa } VersionedIDevice::VersionedIDevice(std::string serviceName, Core core) - : mServiceName(std::move(serviceName)), mCore(std::move(core)) {} + : mServiceName(std::move(serviceName)), mCore(std::move(core)) { + initializeInternal(); +} + +void VersionedIDevice::initializeInternal() { + mCapabilities = getCapabilitiesInternal(); + mSupportedExtensions = getSupportedExtensionsInternal(); + mType = getTypeInternal(); + mVersionString = getVersionStringInternal(); + mNumberOfCacheFilesNeeded = getNumberOfCacheFilesNeededInternal(); +} std::optional<VersionedIDevice::Core> VersionedIDevice::Core::create(sp<V1_0::IDevice> device) { CHECK(device != nullptr) << "VersionedIDevice::Core::create passed invalid device object."; @@ -481,7 +491,7 @@ Return<T_Return> VersionedIDevice::recoverable( return ret; } -std::pair<ErrorStatus, Capabilities> VersionedIDevice::getCapabilities() const { +std::pair<ErrorStatus, Capabilities> VersionedIDevice::getCapabilitiesInternal() const { const std::pair<ErrorStatus, Capabilities> kFailure = {ErrorStatus::GENERAL_FAILURE, {}}; std::pair<ErrorStatus, Capabilities> result; @@ -560,7 +570,12 @@ std::pair<ErrorStatus, Capabilities> VersionedIDevice::getCapabilities() const { return {ErrorStatus::DEVICE_UNAVAILABLE, {}}; } -std::pair<ErrorStatus, hidl_vec<Extension>> VersionedIDevice::getSupportedExtensions() const { +std::pair<ErrorStatus, Capabilities> VersionedIDevice::getCapabilities() const { + return mCapabilities; +} + +std::pair<ErrorStatus, hidl_vec<Extension>> VersionedIDevice::getSupportedExtensionsInternal() + const { const std::pair<ErrorStatus, hidl_vec<Extension>> kFailure = {ErrorStatus::GENERAL_FAILURE, {}}; // version 1.2+ HAL @@ -591,6 +606,10 @@ std::pair<ErrorStatus, hidl_vec<Extension>> VersionedIDevice::getSupportedExtens return {ErrorStatus::DEVICE_UNAVAILABLE, {}}; } +std::pair<ErrorStatus, hidl_vec<Extension>> VersionedIDevice::getSupportedExtensions() const { + return mSupportedExtensions; +} + std::pair<ErrorStatus, hidl_vec<bool>> VersionedIDevice::getSupportedOperations( const MetaModel& metaModel) const { const std::pair<ErrorStatus, hidl_vec<bool>> kFailure = {ErrorStatus::GENERAL_FAILURE, {}}; @@ -968,7 +987,7 @@ int64_t VersionedIDevice::getFeatureLevel() const { } } -int32_t VersionedIDevice::getType() const { +int32_t VersionedIDevice::getTypeInternal() const { constexpr int32_t kFailure = -1; // version 1.2+ HAL @@ -994,7 +1013,11 @@ int32_t VersionedIDevice::getType() const { return ANEURALNETWORKS_DEVICE_UNKNOWN; } -std::pair<ErrorStatus, hidl_string> VersionedIDevice::getVersionString() const { +int32_t VersionedIDevice::getType() const { + return mType; +} + +std::pair<ErrorStatus, hidl_string> VersionedIDevice::getVersionStringInternal() const { const std::pair<ErrorStatus, hidl_string> kFailure = {ErrorStatus::GENERAL_FAILURE, ""}; // version 1.2+ HAL @@ -1024,7 +1047,12 @@ std::pair<ErrorStatus, hidl_string> VersionedIDevice::getVersionString() const { return kFailure; } -std::tuple<ErrorStatus, uint32_t, uint32_t> VersionedIDevice::getNumberOfCacheFilesNeeded() const { +std::pair<ErrorStatus, hidl_string> VersionedIDevice::getVersionString() const { + return mVersionString; +} + +std::tuple<ErrorStatus, uint32_t, uint32_t> VersionedIDevice::getNumberOfCacheFilesNeededInternal() + const { constexpr std::tuple<ErrorStatus, uint32_t, uint32_t> kFailure = {ErrorStatus::GENERAL_FAILURE, 0, 0}; @@ -1056,5 +1084,9 @@ std::tuple<ErrorStatus, uint32_t, uint32_t> VersionedIDevice::getNumberOfCacheFi return kFailure; } +std::tuple<ErrorStatus, uint32_t, uint32_t> VersionedIDevice::getNumberOfCacheFilesNeeded() const { + return mNumberOfCacheFilesNeeded; +} + } // namespace nn } // namespace android diff --git a/nn/runtime/VersionedInterfaces.h b/nn/runtime/VersionedInterfaces.h index 87e776507..5c66865c0 100644 --- a/nn/runtime/VersionedInterfaces.h +++ b/nn/runtime/VersionedInterfaces.h @@ -422,6 +422,25 @@ class VersionedIDevice { std::tuple<hal::ErrorStatus, uint32_t, uint32_t> getNumberOfCacheFilesNeeded() const; private: + // initializeInternal must be called once before any other public method is + // called + void initializeInternal(); + + // internal helper methods + std::pair<hal::ErrorStatus, hal::Capabilities> getCapabilitiesInternal() const; + std::pair<hal::ErrorStatus, hal::hidl_vec<hal::Extension>> getSupportedExtensionsInternal() + const; + int32_t getTypeInternal() const; + std::pair<hal::ErrorStatus, hal::hidl_string> getVersionStringInternal() const; + std::tuple<hal::ErrorStatus, uint32_t, uint32_t> getNumberOfCacheFilesNeededInternal() const; + + // internal members for the cached results of the internal methods above + std::pair<hal::ErrorStatus, hal::Capabilities> mCapabilities; + std::pair<hal::ErrorStatus, hal::hidl_vec<hal::Extension>> mSupportedExtensions; + int32_t mType; + std::pair<hal::ErrorStatus, hal::hidl_string> mVersionString; + std::tuple<hal::ErrorStatus, uint32_t, uint32_t> mNumberOfCacheFilesNeeded; + /** * This is a utility class for VersionedIDevice that encapsulates a * V1_0::IDevice, any appropriate downcasts to newer interfaces, and a |