blob: 61a8467099404d954797f7df5440196c7ee00fac [file] [log] [blame]
telsoa01ce3e84a2018-08-31 09:31:35 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
David Beck93e48982018-09-05 13:05:09 +01003// SPDX-License-Identifier: MIT
telsoa01ce3e84a2018-08-31 09:31:35 +01004//
5
6#pragma once
7
8#include <HalInterfaces.h>
9
Matteo Martincigh8b287c22018-09-07 09:25:10 +010010#include "../ArmnnDevice.hpp"
Matteo Martincigh79250ab2018-09-04 16:28:10 +010011#include "ArmnnDriverImpl.hpp"
arovir01b0717b52018-09-05 17:03:25 +010012#include "HalPolicy.hpp"
Kevin DuBois30c34ae2020-08-26 13:53:41 -070013#include "NamespaceAdaptor.hpp"
arovir01b0717b52018-09-05 17:03:25 +010014
Matteo Martincighe48bdff2018-09-03 13:50:50 +010015#include "../ArmnnDriverImpl.hpp"
telsoa01ce3e84a2018-08-31 09:31:35 +010016
17#include <log/log.h>
18
19namespace armnn_driver
20{
arovir01b0717b52018-09-05 17:03:25 +010021namespace hal_1_0
telsoa01ce3e84a2018-08-31 09:31:35 +010022{
23
arovir01b0717b52018-09-05 17:03:25 +010024class ArmnnDriver : public ArmnnDevice, public V1_0::IDevice
telsoa01ce3e84a2018-08-31 09:31:35 +010025{
26public:
27 ArmnnDriver(DriverOptions options)
28 : ArmnnDevice(std::move(options))
29 {
arovir01b0717b52018-09-05 17:03:25 +010030 ALOGV("hal_1_0::ArmnnDriver::ArmnnDriver()");
telsoa01ce3e84a2018-08-31 09:31:35 +010031 }
32 ~ArmnnDriver() {}
33
34public:
arovir01b0717b52018-09-05 17:03:25 +010035 Return<void> getCapabilities(V1_0::IDevice::getCapabilities_cb cb) override
telsoa01ce3e84a2018-08-31 09:31:35 +010036 {
arovir01b0717b52018-09-05 17:03:25 +010037 ALOGV("hal_1_0::ArmnnDriver::getCapabilities()");
telsoa01ce3e84a2018-08-31 09:31:35 +010038
arovir01b0717b52018-09-05 17:03:25 +010039 return hal_1_0::ArmnnDriverImpl::getCapabilities(m_Runtime, cb);
telsoa01ce3e84a2018-08-31 09:31:35 +010040 }
41
arovir01b0717b52018-09-05 17:03:25 +010042 Return<void> getSupportedOperations(const V1_0::Model& model,
43 V1_0::IDevice::getSupportedOperations_cb cb) override
telsoa01ce3e84a2018-08-31 09:31:35 +010044 {
arovir01b0717b52018-09-05 17:03:25 +010045 ALOGV("hal_1_0::ArmnnDriver::getSupportedOperations()");
telsoa01ce3e84a2018-08-31 09:31:35 +010046
arovir01b0717b52018-09-05 17:03:25 +010047 return armnn_driver::ArmnnDriverImpl<HalPolicy>::getSupportedOperations(m_Runtime, m_Options, model, cb);
telsoa01ce3e84a2018-08-31 09:31:35 +010048 }
49
Kevin DuBois30c34ae2020-08-26 13:53:41 -070050 Return<V1_0::ErrorStatus> prepareModel(const V1_0::Model& model,
Kevin Mayec1e5b82020-02-26 17:00:39 +000051 const android::sp<V1_0::IPreparedModelCallback>& cb) override
telsoa01ce3e84a2018-08-31 09:31:35 +010052 {
arovir01b0717b52018-09-05 17:03:25 +010053 ALOGV("hal_1_0::ArmnnDriver::prepareModel()");
telsoa01ce3e84a2018-08-31 09:31:35 +010054
arovir01b0717b52018-09-05 17:03:25 +010055 return armnn_driver::ArmnnDriverImpl<HalPolicy>::prepareModel(m_Runtime,
56 m_ClTunedParameters,
57 m_Options,
58 model,
59 cb);
telsoa01ce3e84a2018-08-31 09:31:35 +010060 }
61
Kevin DuBois30c34ae2020-08-26 13:53:41 -070062 Return<V1_0::DeviceStatus> getStatus() override
telsoa01ce3e84a2018-08-31 09:31:35 +010063 {
arovir01b0717b52018-09-05 17:03:25 +010064 ALOGV("hal_1_0::ArmnnDriver::getStatus()");
telsoa01ce3e84a2018-08-31 09:31:35 +010065
arovir01b0717b52018-09-05 17:03:25 +010066 return armnn_driver::ArmnnDriverImpl<HalPolicy>::getStatus();
telsoa01ce3e84a2018-08-31 09:31:35 +010067 }
68};
69
arovir01b0717b52018-09-05 17:03:25 +010070} // namespace hal_1_0
Matteo Martincigh8b287c22018-09-07 09:25:10 +010071} // namespace armnn_driver