blob: 5b1b2951d788c5a0863d3487629d5f7b8c3ed3df [file] [log] [blame]
Sadik Armagan0a2dfab2021-10-06 16:41:44 +01001//
2// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include <HalInterfaces.h>
9
10#include <vector>
11#include <unordered_map>
12
13#include <NeuralNetworks.h>
14
15namespace armnn_driver
16{
17
18using HidlToken = android::hardware::hidl_array<uint8_t, ANEURALNETWORKS_BYTE_SIZE_OF_CACHE_TOKEN>;
19
20class CacheHandle
21{
22public:
23 CacheHandle(const HidlToken token, const size_t cacheSize)
24 : m_HidlToken(token), m_CacheSize(cacheSize) {}
25
26 ~CacheHandle() {};
27
28 HidlToken GetToken() const
29 {
30 return m_HidlToken;
31 }
32
33 size_t GetCacheSize() const
34 {
35 return m_CacheSize;
36 }
37
38private:
39 const HidlToken m_HidlToken;
40 const size_t m_CacheSize;
41};
42
43class CacheDataHandler
44{
45public:
46 CacheDataHandler() {}
47 ~CacheDataHandler() {}
48
49 void Register(const HidlToken token, const size_t hashValue, const size_t cacheSize);
50
Sadik Armaganee6818b2021-11-05 14:41:52 +000051 bool Validate(const HidlToken token, const size_t hashValue, const size_t cacheSize) const;
Sadik Armagan0a2dfab2021-10-06 16:41:44 +010052
53 size_t Hash(std::vector<uint8_t>& cacheData);
54
55 size_t GetCacheSize(HidlToken token);
56
57 void Clear();
58
59private:
60 CacheDataHandler(const CacheDataHandler&) = delete;
61 CacheDataHandler& operator=(const CacheDataHandler&) = delete;
62
63 std::unordered_map<size_t, CacheHandle> m_CacheDataMap;
64};
65
66CacheDataHandler& CacheDataHandlerInstance();
67
68} // armnn_driver