| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/config.c')
| -rw-r--r-- | src/config.c | 24 | 
1 files changed, 22 insertions, 2 deletions
| diff --git a/src/config.c b/src/config.c index d4288ef..e84737a 100644 --- a/src/config.c +++ b/src/config.c @@ -1,5 +1,6 @@  #include <errno.h>  #include <string.h> +#include <stdlib.h>  #include "error.h"  #include "pervasive.h" @@ -136,6 +137,7 @@ static int parse_axis_configuration_line     errno = prev_errno;     conf->axis[axis].enabled = 1; +   conf->axis[axis].previous_value = 0;     return 0;  } @@ -314,7 +316,7 @@ int relabsd_config_parse  int relabsd_config_filter  ( -   const struct relabsd_config * const conf, +   struct relabsd_config * const conf,     enum relabsd_axis const axis,     int * const value  ) @@ -324,6 +326,13 @@ int relabsd_config_filter        return 0;     } +   if (abs(*value - conf->axis[axis].previous_value) <= conf->axis[axis].fuzz) +   { +      conf->axis[axis].previous_value = *value; + +      return -1; +   } +     if (*value < conf->axis[axis].min)     {        *value = conf->axis[axis].min; @@ -332,8 +341,19 @@ int relabsd_config_filter     {        *value = conf->axis[axis].max;     } +   else if (abs(*value) <= conf->axis[axis].flat) +   { +      *value = 0; + +      /* +       * As long as the 'fuzz' test is done prior the 'flat' one, moving around +       * in the 'flat' zone won't trigger useless '0' value events. +       */ +   } + +   /* TODO: handle conf->axis[axis].resolution */ -   /* TODO: handle the other properties. */ +   conf->axis[axis].previous_value = *value;     return 1;  } | 


