blob: 478d0a6ca9a9da864d10d7846c912df3632e62b8 [file] [log] [blame]
Colm Donelana21620d2019-10-11 13:09:49 +01001//
2// Copyright © 2019 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
Matteo Martincigh65984272019-10-17 13:26:21 +01008#include <Packet.hpp>
9#include <CommandHandlerFunctor.hpp>
Colm Donelana21620d2019-10-11 13:09:49 +010010
11#include <vector>
12
13namespace armnn
14{
15
16namespace gatordmock
17{
18
19struct CounterCaptureValues
20{
21 uint64_t m_Timestamp;
22 std::vector<uint16_t> m_Uids;
23 std::vector<uint32_t> m_Values;
24};
25
26class PeriodicCounterCaptureCommandHandler : public profiling::CommandHandlerFunctor
27{
28
29public:
Colm Donelanb682d842019-10-16 12:24:20 +010030 /**
Jim Flynn397043f2019-10-17 17:37:10 +010031 * @param familyId The family of the packets this handler will service
Colm Donelanb682d842019-10-16 12:24:20 +010032 * @param packetId The id of packets this handler will process.
33 * @param version The version of that id.
34 * @param quietOperation Optional parameter to turn off printouts. This is useful for unittests.
35 */
Jim Flynn397043f2019-10-17 17:37:10 +010036 PeriodicCounterCaptureCommandHandler(uint32_t familyId,
37 uint32_t packetId,
38 uint32_t version,
Colm Donelan58847082019-10-18 16:49:28 +010039 bool quietOperation = false)
Jim Flynn397043f2019-10-17 17:37:10 +010040 : CommandHandlerFunctor(familyId, packetId, version)
Colm Donelanb682d842019-10-16 12:24:20 +010041 , m_QuietOperation(quietOperation)
Colm Donelana21620d2019-10-11 13:09:49 +010042 {}
43
44 void operator()(const armnn::profiling::Packet& packet) override;
45
46 CounterCaptureValues m_CounterCaptureValues;
47
48 uint64_t m_CurrentPeriodValue = 0;
49
50private:
51 void ParseData(const armnn::profiling::Packet& packet);
52
53 uint64_t m_FirstTimestamp = 0, m_SecondTimestamp = 0;
54
55 bool m_HeaderPrinted = false;
Colm Donelanb682d842019-10-16 12:24:20 +010056 bool m_QuietOperation;
Colm Donelana21620d2019-10-11 13:09:49 +010057};
58
Colm Donelanb682d842019-10-16 12:24:20 +010059} // namespace gatordmock
Colm Donelana21620d2019-10-11 13:09:49 +010060
Colm Donelanb682d842019-10-16 12:24:20 +010061} // namespace armnn