blob: 68c7ad775910b7fb78664cd1a4f57c87475b11e6 [file] [log] [blame]
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <argp.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include "interfaces/sensor2.h"
#include "sensor_threshold.h"
gboolean
get_threshold_state (SensorIntegerThreshold *sen,
GDBusMethodInvocation *invocation,
gpointer user_data)
{
guint state = sensor_integer_threshold_get_state(sen);
sensor_integer_threshold_complete_get_state(sen,invocation,state);
return TRUE;
}
gboolean
set_thresholds (SensorIntegerThreshold *sen,
GDBusMethodInvocation *invocation,
guint lc,
guint lw,
guint uw,
guint uc,
gpointer user_data)
{
sensor_integer_threshold_set_lower_critical(sen,lc);
sensor_integer_threshold_set_lower_warning(sen,lw);
sensor_integer_threshold_set_upper_warning(sen,uw);
sensor_integer_threshold_set_upper_critical(sen,uc);
sensor_integer_threshold_complete_set(sen,invocation);
sensor_integer_threshold_set_state(sen,NORMAL);
return TRUE;
}
void check_thresholds(SensorIntegerThreshold* sensor,guint value)
{
threshold_states current_state = sensor_integer_threshold_get_state(sensor);
if (current_state != NOT_SET)
{
threshold_states state = NORMAL;
if (value < sensor_integer_threshold_get_lower_critical(sensor)) {
state = LOWER_CRITICAL;
}
else if(value < sensor_integer_threshold_get_lower_warning(sensor)) {
state = LOWER_WARNING;
}
else if(value > sensor_integer_threshold_get_upper_critical(sensor)) {
state = UPPER_CRITICAL;
}
else if(value > sensor_integer_threshold_get_upper_warning(sensor)) {
state = UPPER_WARNING;
}
// only emit signal if threshold state changes
if (state != sensor_integer_threshold_get_state(sensor))
{
sensor_integer_threshold_set_state(sensor,state);
if (state == LOWER_CRITICAL || state == UPPER_CRITICAL)
{
sensor_integer_threshold_emit_critical(sensor);
g_print("Critical\n");
}
else if (state == LOWER_WARNING || state == UPPER_WARNING)
{
sensor_integer_threshold_emit_warning(sensor);
g_print("Warning\n");
}
}
}
}