OSDN Git Service

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