// // Copyright © 2019 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include "CounterDirectory.hpp" #include "GatordMockService.hpp" #include "MockUtils.hpp" #include "Packet.hpp" #include "CommandHandlerFunctor.hpp" #include "SendCounterPacket.hpp" #include "IPeriodicCounterCapture.hpp" #include #include #include namespace armnn { namespace gatordmock { class DirectoryCaptureCommandHandler : public profiling::CommandHandlerFunctor { public: DirectoryCaptureCommandHandler(uint32_t familyId, uint32_t packetId, uint32_t version, bool quietOperation = false) : CommandHandlerFunctor(familyId, packetId, version) , m_QuietOperation(quietOperation) , m_CounterDirectoryCount(0) {} void operator()(const armnn::profiling::Packet &packet) override; CounterDirectory GetCounterDirectory() const; uint32_t GetCounterDirectoryCount() const; private: void ParseData(const armnn::profiling::Packet &packet); std::vector ReadCategoryRecords(const unsigned char *const data, uint32_t offset, std::vector categoryOffsets); std::vector ReadCounterSetRecords(const unsigned char *const data, uint32_t offset, std::vector eventRecordsOffsets); std::vector ReadDeviceRecords(const unsigned char *const data, uint32_t offset, std::vector eventRecordsOffsets); std::vector ReadEventRecords(const unsigned char *const data, uint32_t offset, std::vector eventRecordsOffsets); CounterDirectory m_CounterDirectory; bool m_QuietOperation; std::atomic m_CounterDirectoryCount; }; } // namespace gatordmock } // namespace armnn