Add Fan Controller for FanBus Devices

This commit is contained in:
Adam Honse
2021-03-01 12:58:06 -06:00
parent 156cbfab0f
commit b5105ed096
5 changed files with 102 additions and 2 deletions

View File

@@ -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++)

View File

@@ -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;

View File

@@ -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);
}
}
}

View 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;
}

View 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;
};