Ersa Wearable Platform
Embedded smartwatch firmware and application framework
Loading...
Searching...
No Matches
esp32_dvfs_backend.h
Go to the documentation of this file.
1#pragma once
2#include <stddef.h>
3
4namespace Dvfs {
5
7enum class Profile : unsigned char {
8 Interactive, // ESP_PM_APB_FREQ_MAX: CPU 80 MHz, APB 80 MHz
9 Compute // ESP_PM_CPU_FREQ_MAX: CPU 160 MHz
10};
11
13bool begin();
15bool acquire(Profile profile, const char* reason);
17void release(Profile profile, const char* reason);
19void tick();
21void reportPowerModes();
23bool getPowerModeReport(char* buffer, size_t capacity);
24// Debug-only override used by the USB control bridge. 0 restores the normal
25// 40-160 MHz PM range; supported forced values are 40, 80 and 160 MHz.
26bool setTestCpuFrequencyMHz(unsigned mhz);
28unsigned testCpuFrequencyMHz();
29
31class Scope {
32public:
34 Scope(Profile profile, const char* reason);
37
38 Scope(const Scope&) = delete;
39 Scope& operator=(const Scope&) = delete;
40
41private:
43 const char* reason_;
45};
46
47} // namespace Dvfs
Definition esp32_dvfs_backend.h:31
Profile profile_
Definition esp32_dvfs_backend.h:42
Scope(const Scope &)=delete
Scope & operator=(const Scope &)=delete
const char * reason_
Definition esp32_dvfs_backend.h:43
bool acquired_
Definition esp32_dvfs_backend.h:44
Definition esp32_dvfs_backend.cpp:226
bool getPowerModeReport(char *buffer, size_t capacity)
Definition esp32_dvfs_backend.cpp:232
Profile
Definition esp32_dvfs_backend.h:7
bool begin()
Definition esp32_dvfs_backend.cpp:227
void reportPowerModes()
Definition esp32_dvfs_backend.cpp:231
void release(Profile, const char *)
Definition esp32_dvfs_backend.cpp:229
bool acquire(Profile, const char *)
Definition esp32_dvfs_backend.cpp:228
void tick()
Definition esp32_dvfs_backend.cpp:230
bool setTestCpuFrequencyMHz(unsigned mhz)
Definition esp32_dvfs_backend.cpp:236
unsigned testCpuFrequencyMHz()
Definition esp32_dvfs_backend.cpp:237