forked from Qortal/Brooklyn
254 lines
7.9 KiB
C++
254 lines
7.9 KiB
C++
//
|
|
// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
//
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "GatordMockService.hpp"
|
|
#include "MockUtils.hpp"
|
|
|
|
#include <common/include/Packet.hpp>
|
|
#include <common/include/CommandHandlerFunctor.hpp>
|
|
|
|
#include "SendCounterPacket.hpp"
|
|
#include "IPeriodicCounterCapture.hpp"
|
|
|
|
#include <vector>
|
|
#include <thread>
|
|
#include <atomic>
|
|
#include <iostream>
|
|
#include <functional>
|
|
|
|
namespace armnn
|
|
{
|
|
|
|
namespace gatordmock
|
|
{
|
|
|
|
struct EventRecord
|
|
{
|
|
uint16_t m_CounterUid;
|
|
uint16_t m_MaxCounterUid;
|
|
uint16_t m_DeviceUid;
|
|
uint16_t m_CounterSetUid;
|
|
uint16_t m_CounterClass;
|
|
uint16_t m_CounterInterpolation;
|
|
double m_CounterMultiplier;
|
|
std::string m_CounterName;
|
|
std::string m_CounterDescription;
|
|
std::string m_CounterUnits;
|
|
|
|
static void printHeader(std::string categoryName)
|
|
{
|
|
std::string header;
|
|
|
|
header.append(gatordmock::CentreAlignFormatting("Counter Name", 20));
|
|
header.append(" | ");
|
|
header.append(gatordmock::CentreAlignFormatting("Description", 50));
|
|
header.append(" | ");
|
|
header.append(gatordmock::CentreAlignFormatting("Units", 14));
|
|
header.append(" | ");
|
|
header.append(gatordmock::CentreAlignFormatting("UID", 6));
|
|
header.append(" | ");
|
|
header.append(gatordmock::CentreAlignFormatting("Max UID",10));
|
|
header.append(" | ");
|
|
header.append(gatordmock::CentreAlignFormatting("Class", 8));
|
|
header.append(" | ");
|
|
header.append(gatordmock::CentreAlignFormatting("Interpolation", 14));
|
|
header.append(" | ");
|
|
header.append(gatordmock::CentreAlignFormatting("Multiplier", 20));
|
|
header.append(" | ");
|
|
header.append(gatordmock::CentreAlignFormatting("Counter set UID", 16));
|
|
header.append(" | ");
|
|
header.append(gatordmock::CentreAlignFormatting("Device UID", 14));
|
|
header.append("\n");
|
|
|
|
std::cout << "\n" << "\n";
|
|
std::cout << gatordmock::CentreAlignFormatting("EVENTS IN CATEGORY: " + categoryName,
|
|
static_cast<int>(header.size()));
|
|
std::cout << "\n";
|
|
std::cout << std::string(header.size(), '=') << "\n";
|
|
std::cout << header;
|
|
}
|
|
|
|
void printContents() const
|
|
{
|
|
std::string body;
|
|
|
|
body.append(gatordmock::CentreAlignFormatting(m_CounterName, 20));
|
|
body.append(" | ");
|
|
body.append(gatordmock::CentreAlignFormatting(m_CounterDescription, 50));
|
|
body.append(" | ");
|
|
body.append(gatordmock::CentreAlignFormatting(m_CounterUnits, 14));
|
|
body.append(" | ");
|
|
body.append(gatordmock::CentreAlignFormatting(std::to_string(m_CounterUid), 6));
|
|
body.append(" | ");
|
|
body.append(gatordmock::CentreAlignFormatting(std::to_string(m_MaxCounterUid), 10));
|
|
body.append(" | ");
|
|
body.append(gatordmock::CentreAlignFormatting(std::to_string(m_CounterClass), 8));
|
|
body.append(" | ");
|
|
body.append(gatordmock::CentreAlignFormatting(std::to_string(m_CounterInterpolation), 14));
|
|
body.append(" | ");
|
|
body.append(gatordmock::CentreAlignFormatting(std::to_string(m_CounterMultiplier), 20));
|
|
body.append(" | ");
|
|
body.append(gatordmock::CentreAlignFormatting(std::to_string(m_CounterSetUid), 16));
|
|
body.append(" | ");
|
|
body.append(gatordmock::CentreAlignFormatting(std::to_string(m_DeviceUid), 14));
|
|
|
|
body.append("\n");
|
|
|
|
std::cout << std::string(body.size(), '-') << "\n";
|
|
|
|
std::cout << body;
|
|
}
|
|
};
|
|
|
|
struct CategoryRecord
|
|
{
|
|
uint16_t m_EventCount;
|
|
std::string m_CategoryName;
|
|
std::vector<EventRecord> m_EventRecords;
|
|
|
|
void print() const
|
|
{
|
|
std::string body;
|
|
std::string header;
|
|
|
|
header.append(gatordmock::CentreAlignFormatting("Name", 20));
|
|
header.append(" | ");
|
|
header.append(gatordmock::CentreAlignFormatting("Event Count", 14));
|
|
header.append("\n");
|
|
|
|
body.append(gatordmock::CentreAlignFormatting(m_CategoryName, 20));
|
|
body.append(" | ");
|
|
body.append(gatordmock::CentreAlignFormatting(std::to_string(m_EventCount), 14));
|
|
|
|
std::cout << "\n" << "\n";
|
|
std::cout << gatordmock::CentreAlignFormatting("CATEGORY", static_cast<int>(header.size()));
|
|
std::cout << "\n";
|
|
std::cout << std::string(header.size(), '=') << "\n";
|
|
|
|
std::cout<< header;
|
|
|
|
std::cout << std::string(body.size(), '-') << "\n";
|
|
|
|
std::cout<< body;
|
|
|
|
if(m_EventRecords.size() > 0)
|
|
{
|
|
EventRecord::printHeader(m_CategoryName);
|
|
|
|
std::for_each(m_EventRecords.begin(), m_EventRecords.end(), std::mem_fun_ref(&EventRecord::printContents));
|
|
}
|
|
}
|
|
};
|
|
|
|
struct CounterSetRecord
|
|
{
|
|
uint16_t m_CounterSetUid;
|
|
uint16_t m_CounterSetCount;
|
|
std::string m_CounterSetName;
|
|
|
|
static void printHeader()
|
|
{
|
|
std::string header;
|
|
|
|
header.append(gatordmock::CentreAlignFormatting("Counter set name", 20));
|
|
header.append(" | ");
|
|
header.append(gatordmock::CentreAlignFormatting("UID",13));
|
|
header.append(" | ");
|
|
header.append(gatordmock::CentreAlignFormatting("Count",10));
|
|
header.append("\n");
|
|
|
|
std::cout << "\n" << "\n";
|
|
std::cout << gatordmock::CentreAlignFormatting("COUNTER SETS", static_cast<int>(header.size()));
|
|
std::cout << "\n";
|
|
std::cout << std::string(header.size(), '=') << "\n";
|
|
|
|
std::cout<< header;
|
|
}
|
|
|
|
void printContents() const
|
|
{
|
|
std::string body;
|
|
|
|
body.append(gatordmock::CentreAlignFormatting(m_CounterSetName, 20));
|
|
body.append(" | ");
|
|
body.append(gatordmock::CentreAlignFormatting(std::to_string(m_CounterSetUid), 13));
|
|
body.append(" | ");
|
|
body.append(gatordmock::CentreAlignFormatting(std::to_string(m_CounterSetCount), 10));
|
|
body.append("\n");
|
|
|
|
std::cout << std::string(body.size(), '-') << "\n";
|
|
|
|
std::cout<< body;
|
|
}
|
|
};
|
|
|
|
struct DeviceRecord
|
|
{
|
|
uint16_t m_DeviceUid;
|
|
uint16_t m_DeviceCores;
|
|
std::string m_DeviceName;
|
|
|
|
static void printHeader()
|
|
{
|
|
std::string header;
|
|
|
|
header.append(gatordmock::CentreAlignFormatting("Device name", 20));
|
|
header.append(" | ");
|
|
header.append(gatordmock::CentreAlignFormatting("UID",13));
|
|
header.append(" | ");
|
|
header.append(gatordmock::CentreAlignFormatting("Cores",10));
|
|
header.append("\n");
|
|
|
|
std::cout << "\n" << "\n";
|
|
std::cout << gatordmock::CentreAlignFormatting("DEVICES", static_cast<int>(header.size()));
|
|
std::cout << "\n";
|
|
std::cout << std::string(header.size(), '=') << "\n";
|
|
std::cout<< header;
|
|
}
|
|
|
|
void printContents() const
|
|
{
|
|
std::string body;
|
|
|
|
body.append(gatordmock::CentreAlignFormatting(m_DeviceName, 20));
|
|
body.append(" | ");
|
|
body.append(gatordmock::CentreAlignFormatting(std::to_string(m_DeviceUid), 13));
|
|
body.append(" | ");
|
|
body.append(gatordmock::CentreAlignFormatting(std::to_string(m_DeviceCores), 10));
|
|
body.append("\n");
|
|
|
|
std::cout << std::string(body.size(), '-') << "\n";
|
|
std::cout<< body;
|
|
}
|
|
};
|
|
|
|
struct CounterDirectory
|
|
{
|
|
std::vector<CategoryRecord> m_Categories;
|
|
std::vector<CounterSetRecord> m_CounterSets;
|
|
std::vector<DeviceRecord> m_DeviceRecords;
|
|
|
|
void print() const
|
|
{
|
|
DeviceRecord::printHeader();
|
|
std::for_each(m_DeviceRecords.begin(), m_DeviceRecords.end(),
|
|
std::mem_fun_ref(&DeviceRecord::printContents));
|
|
|
|
CounterSetRecord::printHeader();
|
|
std::for_each(m_CounterSets.begin(), m_CounterSets.end(),
|
|
std::mem_fun_ref(&CounterSetRecord::printContents));
|
|
|
|
std::for_each(m_Categories.begin(), m_Categories.end(),
|
|
std::mem_fun_ref(&CategoryRecord::print));
|
|
std::cout << "\n";
|
|
}
|
|
};
|
|
|
|
} // namespace gatordmock
|
|
|
|
} // namespace armnn
|