From c4b636db9bc583883760a63f43fccd60df9cfb1f Mon Sep 17 00:00:00 2001 From: Daniel Baluta Date: Thu, 11 Dec 2014 15:57:32 +0200 Subject: [PATCH] iio-sensors: Refactor sensor_catalog definition Next patches will introduce event support to IIO sensor catalog. Following the current approach that uses DECLARE_SENSOR_X for a sensor with X channels, we will have to introduce a macro like DECLARE_SENSOR_X_Y for a sensor with X channels, each channel having Y events. But this isn't scalable! So, instead of using macros for sensor catalog entries lets keep it simple and use inline definition for each channel. The same will be done for events. Change-Id: I12ac7ba07a3115ae85f7ebab835a73fd738bace2 Signed-off-by: Daniel Baluta --- enumeration.c | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ enumeration.h | 56 -------------------------- 2 files changed, 111 insertions(+), 68 deletions(-) diff --git a/enumeration.c b/enumeration.c index 77f837d..6abbbc7 100644 --- a/enumeration.c +++ b/enumeration.c @@ -29,18 +29,117 @@ */ sensor_catalog_entry_t sensor_catalog[] = { - DECLARE_SENSOR3("accel", SENSOR_TYPE_ACCELEROMETER, "x", "y", "z") - DECLARE_SENSOR3("anglvel", SENSOR_TYPE_GYROSCOPE, "x", "y", "z") - DECLARE_SENSOR3("magn", SENSOR_TYPE_MAGNETIC_FIELD, "x", "y", "z") - DECLARE_SENSOR1("intensity", SENSOR_TYPE_LIGHT, "both" ) - DECLARE_SENSOR0("illuminance",SENSOR_TYPE_LIGHT ) - DECLARE_SENSOR3("incli", SENSOR_TYPE_ORIENTATION, "x", "y", "z") - DECLARE_SENSOR4("rot", SENSOR_TYPE_ROTATION_VECTOR, - "quat_x", "quat_y", "quat_z", "quat_w") - DECLARE_SENSOR0("temp", SENSOR_TYPE_AMBIENT_TEMPERATURE ) - DECLARE_SENSOR0("proximity", SENSOR_TYPE_PROXIMITY ) - DECLARE_VIRTUAL(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED ) - DECLARE_VIRTUAL(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED ) + { + .tag = "accel", + .type = SENSOR_TYPE_ACCELEROMETER, + .num_channels = 3, + .is_virtual = 0, + .channel = { + { DECLARE_NAMED_CHANNEL("accel", "x") }, + { DECLARE_NAMED_CHANNEL("accel", "y") }, + { DECLARE_NAMED_CHANNEL("accel", "z") }, + }, + }, + { + .tag = "anglvel", + .type = SENSOR_TYPE_GYROSCOPE, + .num_channels = 3, + .is_virtual = 0, + .channel = { + { DECLARE_NAMED_CHANNEL("anglvel", "x") }, + { DECLARE_NAMED_CHANNEL("anglvel", "y") }, + { DECLARE_NAMED_CHANNEL("anglvel", "z") }, + }, + }, + { + .tag = "magn", + .type = SENSOR_TYPE_MAGNETIC_FIELD, + .num_channels = 3, + .is_virtual = 0, + .channel = { + { DECLARE_NAMED_CHANNEL("magn", "x") }, + { DECLARE_NAMED_CHANNEL("magn", "y") }, + { DECLARE_NAMED_CHANNEL("magn", "z") }, + }, + }, + { + .tag = "intensity", + .type = SENSOR_TYPE_LIGHT, + .num_channels = 1, + .is_virtual = 0, + .channel = { + { DECLARE_NAMED_CHANNEL("intensity", "both") }, + }, + }, + { + .tag = "illuminance", + .type = SENSOR_TYPE_LIGHT, + .num_channels = 1, + .is_virtual = 0, + .channel = { + { DECLARE_GENERIC_CHANNEL("illuminance") }, + }, + }, + { + .tag = "incli", + .type = SENSOR_TYPE_ORIENTATION, + .num_channels = 3, + .is_virtual = 0, + .channel = { + { DECLARE_NAMED_CHANNEL("incli", "x") }, + { DECLARE_NAMED_CHANNEL("incli", "y") }, + { DECLARE_NAMED_CHANNEL("incli", "z") }, + }, + }, + { + .tag = "rot", + .type = SENSOR_TYPE_ROTATION_VECTOR, + .num_channels = 4, + .is_virtual = 0, + .channel = { + { DECLARE_NAMED_CHANNEL("rot", "quat_x") }, + { DECLARE_NAMED_CHANNEL("rot", "quat_y") }, + { DECLARE_NAMED_CHANNEL("rot", "quat_z") }, + { DECLARE_NAMED_CHANNEL("rot", "quat_w") }, + }, + }, + { + .tag = "temp", + .type = SENSOR_TYPE_AMBIENT_TEMPERATURE, + .num_channels = 1, + .is_virtual = 0, + .channel = { + { DECLARE_GENERIC_CHANNEL("temp") }, + }, + }, + { + .tag = "proximity", + .type = SENSOR_TYPE_PROXIMITY, + .num_channels = 1, + .is_virtual = 0, + .channel = { + { DECLARE_GENERIC_CHANNEL("proximity") }, + }, + }, + { + .tag = "", + .type = SENSOR_TYPE_GYROSCOPE_UNCALIBRATED, + .num_channels = 0, + .is_virtual = 1, + .channel = { + { DECLARE_GENERIC_CHANNEL("") }, + }, + + }, + { + .tag = "", + .type = SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED, + .num_channels = 0, + .is_virtual = 1, + .channel = { + { DECLARE_GENERIC_CHANNEL("") }, + }, + }, }; #define CATALOG_SIZE ARRAY_SIZE(sensor_catalog) diff --git a/enumeration.h b/enumeration.h index 059213d..ae46702 100644 --- a/enumeration.h +++ b/enumeration.h @@ -14,7 +14,6 @@ */ #define DECLARE_CHANNEL(tag, spacer, name) \ - { \ name, \ "in_"tag spacer name"_en", \ "in_"tag spacer name"_type", \ @@ -22,66 +21,11 @@ "in_"tag spacer name"_raw", \ "in_"tag spacer name"_input", \ "in_"tag spacer name"_scale", \ - }, #define DECLARE_NAMED_CHANNEL(tag, name) DECLARE_CHANNEL(tag, "_", name) #define DECLARE_GENERIC_CHANNEL(tag) DECLARE_CHANNEL(tag, "", "") -#define DECLARE_VIRTUAL(type) \ -{ \ - "", type, 0, 1, \ - { \ - DECLARE_GENERIC_CHANNEL("") \ - } \ -}, - -#define DECLARE_SENSOR0(tag, type) \ -{ \ - tag, type, 1, 0, \ - { \ - DECLARE_GENERIC_CHANNEL(tag) \ - } \ -}, - -#define DECLARE_SENSOR1(tag, type, ch1) \ -{ \ - tag, type, 1, 0, \ - { \ - DECLARE_NAMED_CHANNEL(tag, ch1) \ - } \ -}, - -#define DECLARE_SENSOR2(tag, type, ch1, ch2) \ -{ \ - tag, type, 2, 0, \ - { \ - DECLARE_NAMED_CHANNEL(tag, ch1) \ - DECLARE_NAMED_CHANNEL(tag, ch2) \ - } \ -}, - -#define DECLARE_SENSOR3(tag, type, ch1, ch2, ch3) \ -{ \ - tag, type, 3, 0, \ - { \ - DECLARE_NAMED_CHANNEL(tag, ch1) \ - DECLARE_NAMED_CHANNEL(tag, ch2) \ - DECLARE_NAMED_CHANNEL(tag, ch3) \ - } \ -}, - -#define DECLARE_SENSOR4(tag, type, ch1, ch2, ch3, ch4) \ -{ \ - tag, type, 4, 0, \ - { \ - DECLARE_NAMED_CHANNEL(tag, ch1) \ - DECLARE_NAMED_CHANNEL(tag, ch2) \ - DECLARE_NAMED_CHANNEL(tag, ch3) \ - DECLARE_NAMED_CHANNEL(tag, ch4) \ - } \ -}, - int get_sensors_list (struct sensors_module_t* module, struct sensor_t const** list); -- 2.11.0