blob: 05539a4073c35d3db191d19634efabc5066ab0db [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 Donelanb682d842019-10-16 12:24:20 +010010#include "../../armnn/src/profiling/Packet.hpp"
Colm Donelana21620d2019-10-11 13:09:49 +010011
12#include <vector>
13
14namespace armnn
15{
16
17namespace gatordmock
18{
19
20struct CounterCaptureValues
21{
22 uint64_t m_Timestamp;
23 std::vector<uint16_t> m_Uids;
24 std::vector<uint32_t> m_Values;
25};
26
27class PeriodicCounterCaptureCommandHandler : public profiling::CommandHandlerFunctor
28{
29
30public:
Colm Donelanb682d842019-10-16 12:24:20 +010031 /**
Jim Flynn397043f2019-10-17 17:37:10 +010032 * @param familyId The family of the packets this handler will service
Colm Donelanb682d842019-10-16 12:24:20 +010033 * @param packetId The id of packets this handler will process.
34 * @param version The version of that id.
35 * @param quietOperation Optional parameter to turn off printouts. This is useful for unittests.
36 */
Jim Flynn397043f2019-10-17 17:37:10 +010037 PeriodicCounterCaptureCommandHandler(uint32_t familyId,
38 uint32_t packetId,
39 uint32_t version,
Jim Flynned25e0e2019-10-18 13:21:43 +010040 bool quietOperation = true)
Jim Flynn397043f2019-10-17 17:37:10 +010041 : CommandHandlerFunctor(familyId, packetId, version)
Colm Donelanb682d842019-10-16 12:24:20 +010042 , m_QuietOperation(quietOperation)
Colm Donelana21620d2019-10-11 13:09:49 +010043 {}
44
45 void operator()(const armnn::profiling::Packet& packet) override;
46
47 CounterCaptureValues m_CounterCaptureValues;
48
49 uint64_t m_CurrentPeriodValue = 0;
50
51private:
52 void ParseData(const armnn::profiling::Packet& packet);
53
54 uint64_t m_FirstTimestamp = 0, m_SecondTimestamp = 0;
55
56 bool m_HeaderPrinted = false;
Colm Donelanb682d842019-10-16 12:24:20 +010057 bool m_QuietOperation;
Colm Donelana21620d2019-10-11 13:09:49 +010058};
59
Colm Donelanb682d842019-10-16 12:24:20 +010060} // namespace gatordmock
Colm Donelana21620d2019-10-11 13:09:49 +010061
Colm Donelanb682d842019-10-16 12:24:20 +010062} // namespace armnn