diff options
Diffstat (limited to 'neuralnetworks/utils/service/src/Service.cpp')
-rw-r--r-- | neuralnetworks/utils/service/src/Service.cpp | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/neuralnetworks/utils/service/src/Service.cpp b/neuralnetworks/utils/service/src/Service.cpp index 2286288c41..dd37dae526 100644 --- a/neuralnetworks/utils/service/src/Service.cpp +++ b/neuralnetworks/utils/service/src/Service.cpp @@ -51,7 +51,7 @@ namespace aidl_hal = ::aidl::android::hardware::neuralnetworks; using getDeviceFn = std::add_pointer_t<nn::GeneralResult<nn::SharedDevice>(const std::string&)>; void getHidlDevicesForVersion(const std::string& descriptor, getDeviceFn getDevice, - std::vector<SharedDeviceAndUpdatability>* devices, + std::vector<nn::SharedDevice>* devices, std::unordered_set<std::string>* registeredDevices) { CHECK(devices != nullptr); CHECK(registeredDevices != nullptr); @@ -63,7 +63,7 @@ void getHidlDevicesForVersion(const std::string& descriptor, getDeviceFn getDevi if (maybeDevice.has_value()) { auto device = std::move(maybeDevice).value(); CHECK(device != nullptr); - devices->push_back({.device = std::move(device)}); + devices->push_back(std::move(device)); } else { LOG(ERROR) << "getDevice(" << name << ") failed with " << maybeDevice.error().code << ": " << maybeDevice.error().message; @@ -72,9 +72,9 @@ void getHidlDevicesForVersion(const std::string& descriptor, getDeviceFn getDevi } } -void getAidlDevices(std::vector<SharedDeviceAndUpdatability>* devices, +void getAidlDevices(std::vector<nn::SharedDevice>* devices, std::unordered_set<std::string>* registeredDevices, - bool includeUpdatableDrivers) { + nn::Version::Level maxFeatureLevelAllowed) { CHECK(devices != nullptr); CHECK(registeredDevices != nullptr); @@ -91,21 +91,12 @@ void getAidlDevices(std::vector<SharedDeviceAndUpdatability>* devices, } for (const auto& name : names) { - bool isDeviceUpdatable = false; - if (__builtin_available(android __NNAPI_AIDL_MIN_ANDROID_API__, *)) { - const auto instance = std::string(aidl_hal::IDevice::descriptor) + '/' + name; - isDeviceUpdatable = AServiceManager_isUpdatableViaApex(instance.c_str()); - } - if (isDeviceUpdatable && !includeUpdatableDrivers) { - continue; - } if (const auto [it, unregistered] = registeredDevices->insert(name); unregistered) { - auto maybeDevice = aidl_hal::utils::getDevice(name); + auto maybeDevice = aidl_hal::utils::getDevice(name, maxFeatureLevelAllowed); if (maybeDevice.has_value()) { auto device = std::move(maybeDevice).value(); CHECK(device != nullptr); - devices->push_back( - {.device = std::move(device), .isDeviceUpdatable = isDeviceUpdatable}); + devices->push_back(std::move(device)); } else { LOG(ERROR) << "getDevice(" << name << ") failed with " << maybeDevice.error().code << ": " << maybeDevice.error().message; @@ -116,11 +107,13 @@ void getAidlDevices(std::vector<SharedDeviceAndUpdatability>* devices, } // namespace -std::vector<SharedDeviceAndUpdatability> getDevices(bool includeUpdatableDrivers) { - std::vector<SharedDeviceAndUpdatability> devices; +std::vector<nn::SharedDevice> getDevices(nn::Version::Level maxFeatureLevelAllowed) { + std::vector<nn::SharedDevice> devices; std::unordered_set<std::string> registeredDevices; - getAidlDevices(&devices, ®isteredDevices, includeUpdatableDrivers); + CHECK_GE(maxFeatureLevelAllowed, nn::Version::Level::FEATURE_LEVEL_5); + + getAidlDevices(&devices, ®isteredDevices, maxFeatureLevelAllowed); getHidlDevicesForVersion(V1_3::IDevice::descriptor, &V1_3::utils::getDevice, &devices, ®isteredDevices); |