summaryrefslogtreecommitdiff
blob: 558ea989439abe9246bdd05223a9eb2368a15cd5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#ifndef RELABSD_CONFIG_H
#define RELABSD_CONFIG_H

#include <libevdev/libevdev.h>

#include "axis.h"

struct relabsd_config_axis
{
   int min;
   int max;
   int fuzz;
   int flat;
   int resolution;
};

/*
 * There is no relabsd_config_free function, so be careful about using dynamic
 * memory for input_file or device_name.
 */
struct relabsd_config
{
   const char * input_file;
   const char * device_name;
   struct relabsd_config_axis axis[6];
};

/*
 * Parses the invocation parameters and the config file into 'conf'.
 *
 * Returns -1 on (fatal) error,
 *          0 on successfully parsed config.
 *
 * 'conf' does not need to be initialized, as the function will only write to
 * it.
 * As one would expect, argc is the number of elements in argv.
 */
int relabsd_config_parse
(
   struct relabsd_config * const conf,
   int const argc,
   char * const * const argv
);

/*
 * This function aims at preventing us from emitting values that are incoherent
 * with our REV_ABS axis configuration, such as the axis' minimum or maximum
 * values.
 *
 * Returns 1 if 'conf' allows the axis to have this value,
 *         0 otherwise.
 */
int relabsd_config_allows
(
   const struct relabsd_config * const conf,
   enum relabsd_axis const axis,
   int const value
);

/*
 * Copies all the ABS event parameters of 'axis' into 'absinfo'.
 * 'absinfo' does not need to be initialized, as the function will only write to
 * it.
 */
void relabsd_config_get_absinfo
(
   const struct relabsd_config * const conf,
   enum relabsd_axis const axis,
   struct input_absinfo * const absinfo
);

#endif