blob: e86763b55f851ade45b6e5df6778633208c987a0 [file] [log] [blame]
//
// Copyright © 2019 Arm Ltd. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "CommandFileParser.hpp"
#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
namespace armnn
{
namespace gatordmock
{
void CommandFileParser::ParseFile(std::string CommandFile, GatordMockService& mockService)
{
std::ifstream infile(CommandFile);
std::string line;
std::cout << "Parsing command file: " << CommandFile << std::endl;
while (std::getline(infile, line))
{
std::istringstream iss(line);
std::vector<std::string> tokens;
std::copy(std::istream_iterator<std::string>(iss), std::istream_iterator<std::string>(),
std::back_inserter(tokens));
std::string command = tokens[0];
if (command == "SET")
{
// Expected format for the SET command
//
// SET 500000 1 2 5 10
//
// This breaks down to:
// SET command
// 500000 polling period in micro seconds
// 1 2 5 10 counter list
uint period = static_cast<uint>(std::stoul(tokens[1]));
std::vector<uint16_t> counters;
std::transform(tokens.begin() + 2, tokens.end(), std::back_inserter(counters),
[](const std::string& str) { return static_cast<uint16_t>(std::stoul(str)); });
mockService.SendPeriodicCounterSelectionList(period, counters);
}
else if (command == "WAIT")
{
// Expected format for the SET command
//
// WAIT 11000000
//
// This breaks down to:
// WAIT command
// 11000000 timeout period in micro seconds
uint timeout = static_cast<uint>(std::stoul(tokens[1]));
mockService.WaitCommand(timeout);
}
}
}
} // namespace gatordmock
} // namespace armnn