OSDN Git Service

Merge remote-tracking branch 'origin/abt/topic/gmin/kitkat/sensors' into gmin/kitkat...
[android-x86/hardware-intel-libsensors.git] / enumeration.h
1 /*
2  * Copyright (C) 2014 Intel Corporation.
3  */
4
5 #ifndef __ENUMERATION_H__
6 #define __ENUMERATION_H__
7
8 #include "common.h"
9
10 /*
11  * Macros associating iio sysfs entries to to sensor types ; see
12  * linux/kernel/drivers/iio/industrialio-core.c and
13  * hardware/libhardware/include/hardware/sensor.h
14  */
15
16 #define DECLARE_CHANNEL(tag, spacer, name)              \
17                 {                                       \
18                         "in_"tag spacer name"_en",      \
19                         "in_"tag spacer name"_type",    \
20                         "in_"tag spacer name"_index",   \
21                         "in_"tag spacer name"_raw",     \
22                         "in_"tag spacer name"_input",   \
23                 },
24
25 #define DECLARE_NAMED_CHANNEL(tag, name)        DECLARE_CHANNEL(tag, "_", name)
26
27 #define DECLARE_GENERIC_CHANNEL(tag)            DECLARE_CHANNEL(tag, "", "")
28
29
30 #define DECLARE_SENSOR0(tag, type)                      \
31 {                                                       \
32         tag, type, 1,                                   \
33         {                                               \
34                 DECLARE_GENERIC_CHANNEL(tag)            \
35         }                                               \
36 },
37
38 #define DECLARE_SENSOR1(tag, type, ch1)                 \
39 {                                                       \
40         tag, type, 1,                                   \
41         {                                               \
42                 DECLARE_NAMED_CHANNEL(tag, ch1)         \
43         }                                               \
44 },
45
46 #define DECLARE_SENSOR2(tag, type, ch1, ch2)            \
47 {                                                       \
48         tag, type, 2,                                   \
49         {                                               \
50                 DECLARE_NAMED_CHANNEL(tag, ch1)         \
51                 DECLARE_NAMED_CHANNEL(tag, ch2)         \
52         }                                               \
53 },
54
55 #define DECLARE_SENSOR3(tag, type, ch1, ch2, ch3)       \
56 {                                                       \
57         tag, type, 3,                                   \
58         {                                               \
59                 DECLARE_NAMED_CHANNEL(tag, ch1)         \
60                 DECLARE_NAMED_CHANNEL(tag, ch2)         \
61                 DECLARE_NAMED_CHANNEL(tag, ch3)         \
62         }                                               \
63 },
64
65 #define DECLARE_SENSOR4(tag, type, ch1, ch2, ch3, ch4)  \
66 {                                                       \
67         tag, type, 4,                                   \
68         {                                               \
69                 DECLARE_NAMED_CHANNEL(tag, ch1)         \
70                 DECLARE_NAMED_CHANNEL(tag, ch2)         \
71                 DECLARE_NAMED_CHANNEL(tag, ch3)         \
72                 DECLARE_NAMED_CHANNEL(tag, ch4)         \
73         }                                               \
74 },
75
76 int     get_sensors_list        (struct sensors_module_t* module,
77                                  struct sensor_t const** list);
78
79 void    enumerate_sensors       (void);
80 void    delete_enumeration_data (void);
81
82 #endif