blob: 60a448c8ef57b210432aa4beabb22afa8fa421ac [file] [log] [blame]
Colm Donelana21620d2019-10-11 13:09:49 +01001//
Jim Flynnbbfe6032020-07-20 16:57:44 +01002// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
Colm Donelana21620d2019-10-11 13:09:49 +01003// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
Jim Flynnbbfe6032020-07-20 16:57:44 +01008#include <common/include/CommandHandlerFunctor.hpp>
9#include <common/include/Packet.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
Jim Flynnbbfe6032020-07-20 16:57:44 +010026class PeriodicCounterCaptureCommandHandler : public arm::pipe::CommandHandlerFunctor
Colm Donelana21620d2019-10-11 13:09:49 +010027{
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
Jim Flynnbbfe6032020-07-20 16:57:44 +010044 void operator()(const arm::pipe::Packet& packet) override;
Colm Donelana21620d2019-10-11 13:09:49 +010045
46 CounterCaptureValues m_CounterCaptureValues;
47
48 uint64_t m_CurrentPeriodValue = 0;
49
50private:
Jim Flynnbbfe6032020-07-20 16:57:44 +010051 void ParseData(const arm::pipe::Packet& packet);
Colm Donelana21620d2019-10-11 13:09:49 +010052
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