Add feature to set PWM values
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
std::string control;
|
std::string control;
|
||||||
@@ -18,6 +19,8 @@ public:
|
|||||||
PWM();
|
PWM();
|
||||||
void dumpValues();
|
void dumpValues();
|
||||||
|
|
||||||
|
std::vector<PWM_CONTROL> getControls();
|
||||||
|
|
||||||
void setEnable(PWM_CONTROL control, PWM_ENABLE value);
|
void setEnable(PWM_CONTROL control, PWM_ENABLE value);
|
||||||
void setMode(PWM_CONTROL control, PWM_MODE mode);
|
void setMode(PWM_CONTROL control, PWM_MODE mode);
|
||||||
void setValuePwm(PWM_CONTROL control, int pwm);
|
void setValuePwm(PWM_CONTROL control, int pwm);
|
||||||
|
|||||||
@@ -47,8 +47,12 @@ int main() {
|
|||||||
auto temp = nv.get_gpu_temperature();
|
auto temp = nv.get_gpu_temperature();
|
||||||
std::cout << "\nGPU Temp: " << temp << std::endl;
|
std::cout << "\nGPU Temp: " << temp << std::endl;
|
||||||
|
|
||||||
PWM pwm;
|
class PWM pwm;
|
||||||
pwm.dumpValues();
|
pwm.dumpValues();
|
||||||
|
|
||||||
|
auto controls = pwm.getControls();
|
||||||
|
|
||||||
|
pwm.setEnable(controls[1], AUTOMATIC);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
|
#include <cstdio>
|
||||||
#include <pwm.h>
|
#include <pwm.h>
|
||||||
|
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
|
#include <fstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <regex>
|
#include <regex>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
namespace fs = std::filesystem;
|
namespace fs = std::filesystem;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
@@ -12,6 +15,8 @@ using namespace std;
|
|||||||
#define PWM_POSTFIX_ENABLE "_enable"
|
#define PWM_POSTFIX_ENABLE "_enable"
|
||||||
#define PWM_POSTFIX_MODE "_mode"
|
#define PWM_POSTFIX_MODE "_mode"
|
||||||
|
|
||||||
|
#define PWM_MAX_VALUE 255
|
||||||
|
|
||||||
PWM::PWM() {
|
PWM::PWM() {
|
||||||
const regex re_ctrl_enable("pwm[0-9]_enable");
|
const regex re_ctrl_enable("pwm[0-9]_enable");
|
||||||
const regex re_ctrl_mode("pwm[0-9]_mode");
|
const regex re_ctrl_mode("pwm[0-9]_mode");
|
||||||
@@ -22,7 +27,6 @@ PWM::PWM() {
|
|||||||
} else {
|
} else {
|
||||||
for (const fs::directory_entry &hwmon_device :
|
for (const fs::directory_entry &hwmon_device :
|
||||||
fs::directory_iterator{HWMON_BASE_PATH}) {
|
fs::directory_iterator{HWMON_BASE_PATH}) {
|
||||||
cout << hwmon_device << endl;
|
|
||||||
|
|
||||||
for (const fs::directory_entry &control :
|
for (const fs::directory_entry &control :
|
||||||
fs::directory_iterator{hwmon_device}) {
|
fs::directory_iterator{hwmon_device}) {
|
||||||
@@ -54,3 +58,32 @@ void PWM::dumpValues() {
|
|||||||
<< control.second.mode << endl;
|
<< control.second.mode << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<PWM_CONTROL> PWM::getControls() {
|
||||||
|
std::vector<PWM_CONTROL> vec;
|
||||||
|
|
||||||
|
for (auto elem : mPwmControls) {
|
||||||
|
vec.push_back(elem.second);
|
||||||
|
}
|
||||||
|
|
||||||
|
return vec;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PWM::setEnable(PWM_CONTROL control, PWM_ENABLE value) {
|
||||||
|
cout << control.control << endl;
|
||||||
|
std::ofstream ostrm(control.enable, std::ios::trunc);
|
||||||
|
ostrm << value;
|
||||||
|
ostrm.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PWM::setValuePwm(PWM_CONTROL control, int pwm) {
|
||||||
|
if (pwm < 0 || pwm > 255)
|
||||||
|
return;
|
||||||
|
|
||||||
|
std::ofstream ostrm(control.control, std::ios::trunc);
|
||||||
|
ostrm << pwm;
|
||||||
|
ostrm.close();
|
||||||
|
}
|
||||||
|
void PWM::setValuePercent(PWM_CONTROL control, int percentage) {
|
||||||
|
setValuePwm(control, PWM_MAX_VALUE * percentage / 100);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user