From bb8ba486d840dea4ea6c57771a71e5a3ae592a6e Mon Sep 17 00:00:00 2001 From: Hauke Petersen Date: Mon, 15 Jan 2018 15:01:49 +0100 Subject: [PATCH] sys/auto_init: add SAUL initialization for lis2dh12 --- sys/auto_init/auto_init.c | 4 ++ sys/auto_init/saul/auto_init_lis2dh12.c | 76 +++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 sys/auto_init/saul/auto_init_lis2dh12.c diff --git a/sys/auto_init/auto_init.c b/sys/auto_init/auto_init.c index 76248d0e4..1285155c3 100644 --- a/sys/auto_init/auto_init.c +++ b/sys/auto_init/auto_init.c @@ -363,6 +363,10 @@ auto_init_mpu9150(); extern void auto_init_adcxx1c(void); auto_init_adcxx1c(); #endif +#ifdef MODULE_LIS2DH12 + extern void auto_init_lis2dh12(void); + auto_init_lis2dh12(); +#endif #endif /* MODULE_AUTO_INIT_SAUL */ diff --git a/sys/auto_init/saul/auto_init_lis2dh12.c b/sys/auto_init/saul/auto_init_lis2dh12.c new file mode 100644 index 000000000..76113d4c4 --- /dev/null +++ b/sys/auto_init/saul/auto_init_lis2dh12.c @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2018 Freie Universität Berlin + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License v2.1. See the file LICENSE in the top level + * directory for more details. + * + */ + +/** + * @ingroup auto_init_saul + * @{ + * + * @file + * @brief Auto initialization of LIS2DH12 accelerometers + * + * @author Hauke Petersen + * + * @} + */ + +#ifdef MODULE_LIS2DH12 + +#include "log.h" +#include "assert.h" +#include "saul_reg.h" +#include "lis2dh12.h" +#include "lis2dh12_params.h" + +/** + * @brief Number of configured sensors + */ +#define LIS2DH12_NUM (sizeof(lis2dh12_params) / sizeof(lis2dh12_params[0])) + + +/** + * @brief Number of defined SAUL registry info entries + */ +#define LIS2DH12_SAULINFO_NUM (sizeof(lis2dh12_saul_info) / \ + sizeof(lis2dh12_saul_info[0])) + +/** + * @brief Allocate memory for the device descriptors + */ +static lis2dh12_t lis2dh12_devs[LIS2DH12_NUM]; + +/** + * @brief Memory for the SAUL registry entries + */ +static saul_reg_t saul_entries[LIS2DH12_NUM]; + +void auto_init_lis2dh12(void) +{ + assert(LIS2DH12_NUM == LIS2DH12_SAULINFO_NUM); + + for (unsigned int i = 0; i < LIS2DH12_NUM; i++) { + int res; + + LOG_DEBUG("[auto_init_saul] initializing lis2dh12 #%u\n", i); + + res = lis2dh12_init(&lis2dh12_devs[i], &lis2dh12_params[i]); + if (res < 0) { + LOG_ERROR("[auto_init_saul] error initializing lis2dh12 #%u\n", i); + continue; + } + + saul_entries[i].dev = &(lis2dh12_devs[i]); + saul_entries[i].name = lis2dh12_saul_info[i].name; + saul_entries[i].driver = &lis2dh12_saul_driver; + saul_reg_add(&(saul_entries[i])); + } +} + +#else +typedef int dont_be_pedantic; +#endif /* MODULE_LIS2DH12 */