mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-01-01 10:28:52 -05:00
fixed hold frequency algorithm behaviour added basic tests for frequecy changing updated catch for newer gcc tests added
26 lines
849 B
C++
26 lines
849 B
C++
// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#include "FrequencyHold.hpp"
|
|
#include <algorithm>
|
|
#include <list>
|
|
|
|
namespace sys::cpu
|
|
{
|
|
FrequencyHold::FrequencyHold(bsp::CpuFrequencyMHz toHold, const bsp::PowerProfile &profile)
|
|
: toHold(toHold), profile(profile)
|
|
{}
|
|
|
|
AlgorithmResult FrequencyHold::calculateImplementation(const AlgorithmData &data)
|
|
{
|
|
const auto retval = std::max(toHold, profile.minimalFrequency);
|
|
if (toHold > data.curentFrequency) {
|
|
return {algorithm::Change::UpScaled, retval};
|
|
}
|
|
else if (toHold < data.curentFrequency) {
|
|
return {algorithm::Change::Downscaled, retval};
|
|
}
|
|
return {algorithm::Change::Hold, retval};
|
|
}
|
|
}; // namespace sys::cpu
|