blob: 035d44848ec84f241c9779a881832ec9fab4b028 [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"
13
Matteo Martincighe48bdff2018-09-03 13:50:50 +010014#include "../ArmnnDriverImpl.hpp"
telsoa01ce3e84a2018-08-31 09:31:35 +010015
16#include <log/log.h>
17
18namespace armnn_driver
19{
arovir01b0717b52018-09-05 17:03:25 +010020namespace hal_1_0
telsoa01ce3e84a2018-08-31 09:31:35 +010021{
22
arovir01b0717b52018-09-05 17:03:25 +010023class ArmnnDriver : public ArmnnDevice, public V1_0::IDevice
telsoa01ce3e84a2018-08-31 09:31:35 +010024{
25public:
26 ArmnnDriver(DriverOptions options)
27 : ArmnnDevice(std::move(options))
28 {
arovir01b0717b52018-09-05 17:03:25 +010029 ALOGV("hal_1_0::ArmnnDriver::ArmnnDriver()");
telsoa01ce3e84a2018-08-31 09:31:35 +010030 }
31 ~ArmnnDriver() {}
32
33public:
arovir01b0717b52018-09-05 17:03:25 +010034 Return<void> getCapabilities(V1_0::IDevice::getCapabilities_cb cb) override
telsoa01ce3e84a2018-08-31 09:31:35 +010035 {
arovir01b0717b52018-09-05 17:03:25 +010036 ALOGV("hal_1_0::ArmnnDriver::getCapabilities()");
telsoa01ce3e84a2018-08-31 09:31:35 +010037
arovir01b0717b52018-09-05 17:03:25 +010038 return hal_1_0::ArmnnDriverImpl::getCapabilities(m_Runtime, cb);
telsoa01ce3e84a2018-08-31 09:31:35 +010039 }
40
arovir01b0717b52018-09-05 17:03:25 +010041 Return<void> getSupportedOperations(const V1_0::Model& model,
42 V1_0::IDevice::getSupportedOperations_cb cb) override
telsoa01ce3e84a2018-08-31 09:31:35 +010043 {
arovir01b0717b52018-09-05 17:03:25 +010044 ALOGV("hal_1_0::ArmnnDriver::getSupportedOperations()");
telsoa01ce3e84a2018-08-31 09:31:35 +010045
arovir01b0717b52018-09-05 17:03:25 +010046 return armnn_driver::ArmnnDriverImpl<HalPolicy>::getSupportedOperations(m_Runtime, m_Options, model, cb);
telsoa01ce3e84a2018-08-31 09:31:35 +010047 }
48
arovir01b0717b52018-09-05 17:03:25 +010049 Return<ErrorStatus> prepareModel(const V1_0::Model& model,
Matthew Bentham912b3622019-05-03 15:49:14 +010050 const android::sp<V1_0::IPreparedModelCallback>& cb) override
telsoa01ce3e84a2018-08-31 09:31:35 +010051 {
arovir01b0717b52018-09-05 17:03:25 +010052 ALOGV("hal_1_0::ArmnnDriver::prepareModel()");
telsoa01ce3e84a2018-08-31 09:31:35 +010053
arovir01b0717b52018-09-05 17:03:25 +010054 return armnn_driver::ArmnnDriverImpl<HalPolicy>::prepareModel(m_Runtime,
55 m_ClTunedParameters,
56 m_Options,
57 model,
58 cb);
telsoa01ce3e84a2018-08-31 09:31:35 +010059 }
60
Matteo Martincighe48bdff2018-09-03 13:50:50 +010061 Return<DeviceStatus> getStatus() override
telsoa01ce3e84a2018-08-31 09:31:35 +010062 {
arovir01b0717b52018-09-05 17:03:25 +010063 ALOGV("hal_1_0::ArmnnDriver::getStatus()");
telsoa01ce3e84a2018-08-31 09:31:35 +010064
arovir01b0717b52018-09-05 17:03:25 +010065 return armnn_driver::ArmnnDriverImpl<HalPolicy>::getStatus();
telsoa01ce3e84a2018-08-31 09:31:35 +010066 }
67};
68
arovir01b0717b52018-09-05 17:03:25 +010069} // namespace hal_1_0
Matteo Martincigh8b287c22018-09-07 09:25:10 +010070} // namespace armnn_driver