add the option to disable output

This commit is contained in:
uvos 2023-05-03 21:08:37 +02:00
parent b1c92cd561
commit c084c42794
3 changed files with 15 additions and 6 deletions

View File

@ -128,9 +128,6 @@ ipmi_ctx_t ipmi_open_context()
bool ipmi_set_fan_group(ipmi_ctx_t raw_ctx, uint8_t group, double speed)
{
char converted_speed = std::max(std::min(static_cast<char>(100), static_cast<char>(speed*100)), static_cast<char>(0));
std::cout<<"setting fan group "<<static_cast<int>(group)<<" to "<<speed*100<<"% ("<<static_cast<int>(converted_speed)<<")\n";
char command[] = {0x70, 0x66, 0x01, static_cast<char>(group), converted_speed};
char bytesrx[IPMI_RAW_MAX_ARGS] = {0};
int rxlen = ipmi_cmd_raw(raw_ctx, 0, 0x30, command, sizeof(command), bytesrx, IPMI_RAW_MAX_ARGS);

View File

@ -4,7 +4,7 @@ After=lm_sensors.service systemd-modules-load.service
[Service]
Type=simple
ExecStart=/usr/bin/ipmifan
ExecStart=/usr/bin/ipmifan -q
[Install]
WantedBy=multi-user.target

View File

@ -23,6 +23,8 @@ void sig_handler(int sig)
running = false;
}
bool quiet;
std::vector<Sensor> gather_sensors(std::vector<Sensor>& ipmi_sensors, ipmi_monitoring_ctx_t ctx, std::vector<const sensors_chip_name*>& lm_chips)
{
std::vector<Sensor> out;
@ -119,6 +121,9 @@ int main(int argc, char **argv)
signal(SIGHUP, sig_handler);
signal(SIGINT, sig_handler);
if(argc > 1)
quiet = true;
int ret = sensors_init(nullptr);
if(ret < 0)
{
@ -141,9 +146,16 @@ int main(int argc, char **argv)
while(running)
{
std::vector<Sensor> sensors = gather_sensors(ipmi_sensors, monitoring_ctx, lm_chips);
for(const Sensor& sensor : sensors)
std::cout<<"Sensor "<<sensor.chip<<':'<<sensor.name<<"\t= "<<sensor.reading<<'\n';
std::vector<double> fanzones = get_fan_zones(sensors);
if(!quiet)
{
for(const Sensor& sensor : sensors)
std::cout<<"Sensor "<<sensor.chip<<':'<<sensor.name<<"\t= "<<sensor.reading<<'\n';
for(size_t i = 0; i < fanzones.size(); ++i)
std::cout<<"setting fan group "<<i<<" to "<<fanzones[i]*100<<"%\n";
}
ipmi_set_fan_group(raw_ctx, 0, fanzones[0]);
ipmi_set_fan_group(raw_ctx, 1, fanzones[1]);
sleep(10);