mirror of
https://github.com/CalcProgrammer1/OpenRGB.git
synced 2026-04-16 11:56:56 -04:00
Add Fan Controller for FanBus Devices
This commit is contained in:
@@ -34,6 +34,31 @@ std::string FanBusController::GetLocation()
|
||||
return(location_string);
|
||||
}
|
||||
|
||||
unsigned char FanBusController::GetFanPWM()
|
||||
{
|
||||
unsigned char fan_pwm;
|
||||
|
||||
fan_pwm = bus->read(dev, 0x01);
|
||||
|
||||
return(fan_pwm);
|
||||
}
|
||||
|
||||
unsigned short FanBusController::GetFanRPM()
|
||||
{
|
||||
unsigned char fan_rpm_low;
|
||||
unsigned char fan_rpm_high;
|
||||
|
||||
fan_rpm_low = bus->read(dev, 0x02);
|
||||
fan_rpm_high = bus->read(dev, 0x03);
|
||||
|
||||
return((fan_rpm_high << 8) | fan_rpm_low);
|
||||
}
|
||||
|
||||
void FanBusController::SetFanPWM(unsigned char fan_pwm)
|
||||
{
|
||||
bus->write(dev, 0x01, fan_pwm);
|
||||
}
|
||||
|
||||
void FanBusController::SetLEDs(std::vector<RGBColor> colors)
|
||||
{
|
||||
for(unsigned int led_idx = 0; led_idx < 4; led_idx++)
|
||||
|
||||
@@ -21,9 +21,12 @@ public:
|
||||
FanBusController(FanBusInterface* bus_ptr, unsigned char dev_addr);
|
||||
~FanBusController();
|
||||
|
||||
std::string GetLocation();
|
||||
std::string GetLocation();
|
||||
|
||||
void SetLEDs(std::vector<RGBColor> colors);
|
||||
unsigned char GetFanPWM();
|
||||
unsigned short GetFanRPM();
|
||||
void SetFanPWM(unsigned char fan_pwm);
|
||||
void SetLEDs(std::vector<RGBColor> colors);
|
||||
|
||||
private:
|
||||
std::string port_name;
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
#include "Detector.h"
|
||||
#include "FanBusController.h"
|
||||
#include "FanController_FanBus.h"
|
||||
#include "RGBController_FanBus.h"
|
||||
#include "SettingsManager.h"
|
||||
|
||||
@@ -45,6 +46,10 @@ void DetectFanBusControllers()
|
||||
RGBController_FanBus* rgb_controller = new RGBController_FanBus(controller);
|
||||
|
||||
ResourceManager::get()->RegisterRGBController(rgb_controller);
|
||||
|
||||
FanController_FanBus* fan_controller = new FanController_FanBus(controller);
|
||||
|
||||
ResourceManager::get()->RegisterFanController(fan_controller);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
43
Controllers/FanBusController/FanController_FanBus.cpp
Normal file
43
Controllers/FanBusController/FanController_FanBus.cpp
Normal file
@@ -0,0 +1,43 @@
|
||||
/*-----------------------------------------*\
|
||||
| FanController_FanBus.cpp |
|
||||
| |
|
||||
| Generic Fan Interface for FanBus |
|
||||
| controller |
|
||||
| |
|
||||
| Adam Honse (CalcProgrammer1) 3/1/2020 |
|
||||
\*-----------------------------------------*/
|
||||
|
||||
#include "FanController_FanBus.h"
|
||||
|
||||
FanController_FanBus::FanController_FanBus(FanBusController* controller_ptr)
|
||||
{
|
||||
controller = controller_ptr;
|
||||
|
||||
name = "FanBus Device";
|
||||
description = "FanBus Device";
|
||||
location = controller->GetLocation();
|
||||
|
||||
fan new_fan;
|
||||
|
||||
new_fan.name = "FanBus Fan";
|
||||
new_fan.speed_min = 0;
|
||||
new_fan.speed_max = 255;
|
||||
new_fan.speed_cmd = controller->GetFanPWM();
|
||||
new_fan.rpm_rdg = controller->GetFanRPM();
|
||||
|
||||
fans.push_back(new_fan);
|
||||
}
|
||||
|
||||
void FanController_FanBus::UpdateControl()
|
||||
{
|
||||
controller->SetFanPWM(fans[0].speed_cmd);
|
||||
}
|
||||
|
||||
void FanController_FanBus::UpdateReading()
|
||||
{
|
||||
unsigned short rpm;
|
||||
|
||||
rpm = controller->GetFanRPM();
|
||||
|
||||
fans[0].rpm_rdg = rpm;
|
||||
}
|
||||
24
Controllers/FanBusController/FanController_FanBus.h
Normal file
24
Controllers/FanBusController/FanController_FanBus.h
Normal file
@@ -0,0 +1,24 @@
|
||||
/*-----------------------------------------*\
|
||||
| FanController_FanBus.h |
|
||||
| |
|
||||
| Generic Fan Interface for FanBus |
|
||||
| controller |
|
||||
| |
|
||||
| Adam Honse (CalcProgrammer1) 3/1/2020 |
|
||||
\*-----------------------------------------*/
|
||||
|
||||
#pragma once
|
||||
#include "FanController.h"
|
||||
#include "FanBusController.h"
|
||||
|
||||
class FanController_FanBus : public FanController
|
||||
{
|
||||
public:
|
||||
FanController_FanBus(FanBusController* controller_ptr);
|
||||
|
||||
void UpdateControl();
|
||||
void UpdateReading();
|
||||
|
||||
private:
|
||||
FanBusController* controller;
|
||||
};
|
||||
Reference in New Issue
Block a user