~aleteoryx/muditaos

ref: 4ad0f29ab49cde21debe3f98a8b0ba99e3aa585c muditaos/module-sys/SystemManager/cpu/algorithm/FrequencyHold.cpp -rw-r--r-- 849 bytes
4ad0f29a — Lefucjusz [BH-1898] Fix of GUI freeze after intensive volume change 2 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 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