From 18361631a01fbf6941f6d9846e7d5874506b5fb5 Mon Sep 17 00:00:00 2001 From: Hauke Petersen Date: Wed, 18 Nov 2015 16:14:42 +0100 Subject: [PATCH] drivers/isl29020: added SAUL integration --- drivers/include/isl29020.h | 10 +++++++ drivers/isl29020/isl29020_saul.c | 45 ++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 drivers/isl29020/isl29020_saul.c diff --git a/drivers/include/isl29020.h b/drivers/include/isl29020.h index 37d702df32..1a5b583482 100644 --- a/drivers/include/isl29020.h +++ b/drivers/include/isl29020.h @@ -60,6 +60,16 @@ typedef enum { ISL29020_RANGE_64K = 3 /**< set range to 0-64000 lux */ } isl29020_range_t; +/** + * @brief Data structure holding the full set of configuration parameters + */ +typedef struct { + i2c_t i2c; /**< I2C bus the device is connected to */ + uint8_t addr; /**< address on that bus */ + isl29020_range_t range; /**< range setting to use */ + isl29020_mode_t mode; /**< measurement mode to use */ +} isl29020_params_t; + /** * @brief Initialize a new ISL29020 device * diff --git a/drivers/isl29020/isl29020_saul.c b/drivers/isl29020/isl29020_saul.c new file mode 100644 index 0000000000..d6a36e8e47 --- /dev/null +++ b/drivers/isl29020/isl29020_saul.c @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2015 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 driver_isl29020 + * @{ + * + * @file + * @brief ISL29020 adaption to the RIOT actuator/sensor interface + * + * @author Hauke Petersen + * + * @} + */ + +#include + +#include "saul.h" +#include "isl29020.h" + +static int read(void *dev, phydat_t *res) +{ + isl29020_t *d = (isl29020_t *)dev; + res->val[0] = (int16_t)isl29020_read(d); + memset(&(res->val[1]), 0, 2 * sizeof(int16_t)); + res->unit = UNIT_CD; + res->scale = 0; + return 1; +} + +static int write(void *dev, phydat_t *state) +{ + return -ENOTSUP; +} + +const saul_driver_t isl29020_saul_driver = { + .read = read, + .write = write, + .type = SAUL_SENSE_LIGHT, +};