mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-01-01 02:19:00 -05:00
Sometimes when the frequency is locked, e.g. at 132 MHz, the algorithm still calculated a lower frequency, e.g. 66 MHz.
38 lines
1.1 KiB
C++
38 lines
1.1 KiB
C++
// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#pragma once
|
|
|
|
#include "algorithm/Algorithm.hpp"
|
|
#include <list>
|
|
#include <map>
|
|
#include <memory>
|
|
|
|
namespace sys::cpu
|
|
{
|
|
|
|
class AlgorithmFactory
|
|
{
|
|
std::map<sys::cpu::AlgoID, std::unique_ptr<Algorithm>> algorithms;
|
|
|
|
public:
|
|
Algorithm *get(sys::cpu::AlgoID);
|
|
enum class PutResult
|
|
{
|
|
Added,
|
|
Replaced,
|
|
};
|
|
PutResult emplace(sys::cpu::AlgoID id, std::unique_ptr<Algorithm> &&algorithm);
|
|
|
|
/// use algorithms from factory depending on list to calculate frequency
|
|
/// return used algorithm in used paramter
|
|
AlgorithmResult calculate(const std::list<sys::cpu::AlgoID> &algorithms,
|
|
const cpu::AlgorithmData &data,
|
|
AlgoID *used = nullptr);
|
|
/// reset internal algorithms data
|
|
void reset(const std::list<sys::cpu::AlgoID> &algorithms);
|
|
|
|
void remove(sys::cpu::AlgoID id);
|
|
};
|
|
}; // namespace sys::cpu
|