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                         "in_"tag spacer name"_scale",   \
24                 },
25
26 #define DECLARE_NAMED_CHANNEL(tag, name)        DECLARE_CHANNEL(tag, "_", name)
27
28 #define DECLARE_GENERIC_CHANNEL(tag)            DECLARE_CHANNEL(tag, "", "")
29
30
31 #define DECLARE_SENSOR0(tag, type)                      \
32 {                                                       \
33         tag, type, 1,                                   \
34         {                                               \
35                 DECLARE_GENERIC_CHANNEL(tag)            \
36         }                                               \
37 },
38
39 #define DECLARE_SENSOR1(tag, type, ch1)                 \
40 {                                                       \
41         tag, type, 1,                                   \
42         {                                               \
43                 DECLARE_NAMED_CHANNEL(tag, ch1)         \
44         }                                               \
45 },
46
47 #define DECLARE_SENSOR2(tag, type, ch1, ch2)            \
48 {                                                       \
49         tag, type, 2,                                   \
50         {                                               \
51                 DECLARE_NAMED_CHANNEL(tag, ch1)         \
52                 DECLARE_NAMED_CHANNEL(tag, ch2)         \
53         }                                               \
54 },
55
56 #define DECLARE_SENSOR3(tag, type, ch1, ch2, ch3)       \
57 {                                                       \
58         tag, type, 3,                                   \
59         {                                               \
60                 DECLARE_NAMED_CHANNEL(tag, ch1)         \
61                 DECLARE_NAMED_CHANNEL(tag, ch2)         \
62                 DECLARE_NAMED_CHANNEL(tag, ch3)         \
63         }                                               \
64 },
65
66 #define DECLARE_SENSOR4(tag, type, ch1, ch2, ch3, ch4)  \
67 {                                                       \
68         tag, type, 4,                                   \
69         {                                               \
70                 DECLARE_NAMED_CHANNEL(tag, ch1)         \
71                 DECLARE_NAMED_CHANNEL(tag, ch2)         \
72                 DECLARE_NAMED_CHANNEL(tag, ch3)         \
73                 DECLARE_NAMED_CHANNEL(tag, ch4)         \
74         }                                               \
75 },
76
77 int     get_sensors_list        (struct sensors_module_t* module,
78                                  struct sensor_t const** list);
79
80 void    enumerate_sensors       (void);
81 void    delete_enumeration_data (void);
82
83 #endif