1 // 2 // Copyright © 2017 Arm Ltd. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #pragma once 7 8 #include "CounterValue.hpp" 9 10 #include <common/include/ICounterDirectory.hpp> 11 12 namespace arm 13 { 14 15 namespace pipe 16 { 17 18 class ISendCounterPacket 19 { 20 public: 21 using IndexValuePairsVector = std::vector<CounterValue>; 22 ~ISendCounterPacket()23 virtual ~ISendCounterPacket() {} 24 25 /// Create and write a StreamMetaDataPacket in the buffer 26 virtual void SendStreamMetaDataPacket() = 0; 27 28 /// Create and write a CounterDirectoryPacket from the parameters to the buffer. 29 virtual void SendCounterDirectoryPacket(const ICounterDirectory& counterDirectory) = 0; 30 31 /// Create and write a PeriodicCounterCapturePacket from the parameters to the buffer. 32 virtual void SendPeriodicCounterCapturePacket(uint64_t timestamp, const IndexValuePairsVector& values) = 0; 33 34 /// Create and write a PeriodicCounterSelectionPacket from the parameters to the buffer. 35 virtual void SendPeriodicCounterSelectionPacket(uint32_t capturePeriod, 36 const std::vector<uint16_t>& selectedCounterIds) = 0; 37 }; 38 39 } // namespace pipe 40 41 } // namespace arm 42