You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by we...@apache.org on 2017/03/24 23:15:37 UTC
[15/50] [abbrv] incubator-mynewt-core git commit: MYNEWT-665
SensorAPI: Add TCS34725 Driver
MYNEWT-665 SensorAPI: Add TCS34725 Driver
- reading from ATIME, control for AGAIN and ENABLE for state of the
sensor instead of using varibales to store state.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/fd20bc93
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/fd20bc93
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/fd20bc93
Branch: refs/heads/nrf_cputime
Commit: fd20bc93e84b81cd9e4ff164f8ac976350c5bc50
Parents: 20ffb7e
Author: Vipul Rahane <vi...@apache.org>
Authored: Tue Mar 14 16:24:03 2017 -0700
Committer: Vipul Rahane <vi...@apache.org>
Committed: Tue Mar 14 16:24:03 2017 -0700
----------------------------------------------------------------------
hw/drivers/sensors/tcs34725/src/tcs34725.c | 78 +++++++++++++-------
hw/drivers/sensors/tcs34725/src/tcs34725_priv.h | 21 +++---
.../sensors/tcs34725/src/tcs34725_shell.c | 29 +++++---
3 files changed, 84 insertions(+), 44 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/fd20bc93/hw/drivers/sensors/tcs34725/src/tcs34725.c
----------------------------------------------------------------------
diff --git a/hw/drivers/sensors/tcs34725/src/tcs34725.c b/hw/drivers/sensors/tcs34725/src/tcs34725.c
index e20ecde..e535512 100644
--- a/hw/drivers/sensors/tcs34725/src/tcs34725.c
+++ b/hw/drivers/sensors/tcs34725/src/tcs34725.c
@@ -91,10 +91,6 @@ static const struct sensor_driver g_tcs34725_sensor_driver = {
tcs34725_sensor_get_config
};
-uint8_t g_tcs34725_gain;
-uint8_t g_tcs34725_integration_time;
-uint8_t g_tcs34725_enabled;
-
/**
* Writes a single byte to the specified register
*
@@ -332,8 +328,6 @@ tcs34725_enable(uint8_t enable)
}
}
- g_tcs34725_enabled = enable;
-
return 0;
err:
return rc;
@@ -399,12 +393,25 @@ err:
/**
* Indicates whether the sensor is enabled or not
*
- * @return 1 if enabled, 0 if disabled
+ * @param ptr to is_enabled variable
+ * @return 0 on success, non-zero on failure
*/
-uint8_t
-tcs34725_get_enable (void)
+int
+tcs34725_get_enable (uint8_t *is_enabled)
{
- return g_tcs34725_enabled;
+ int rc;
+ uint8_t tmp;
+
+ rc = tcs34725_read8(TCS34725_REG_ENABLE, &tmp);
+ if (rc) {
+ goto err;
+ }
+
+ *is_enabled = tmp;
+
+ return 0;
+err:
+ return rc;
}
/**
@@ -418,14 +425,12 @@ tcs34725_set_integration_time(uint8_t int_time)
{
int rc;
- rc = tcs34725_write8(TCS34725_REG_ATIME,
- int_time | g_tcs34725_gain);
+ rc = tcs34725_write8(TCS34725_REG_ATIME, int_time);
if (rc) {
goto err;
}
- g_tcs34725_integration_time = int_time;
-
+ return 0;
err:
return rc;
}
@@ -433,12 +438,23 @@ err:
/**
* Gets integration time set earlier
*
- * @return integration time
+ * @param ptr to integration time
+ * @return 0 on success, non-zero on failure
*/
-uint8_t
-tcs34725_get_integration_time(void)
+int
+tcs34725_get_integration_time(uint8_t *int_time)
{
- return g_tcs34725_integration_time;
+ int rc;
+ uint8_t tmp;
+
+ rc = tcs34725_read8(TCS34725_REG_ATIME, &tmp);
+ if (rc) {
+ goto err;
+ }
+
+ return 0;
+err:
+ return rc;
}
/**
@@ -458,14 +474,11 @@ tcs34725_set_gain(uint8_t gain)
goto err;
}
- rc = tcs34725_write8(TCS34725_REG_CONTROL,
- g_tcs34725_integration_time | gain);
+ rc = tcs34725_write8(TCS34725_REG_CONTROL, gain);
if (rc) {
goto err;
}
- g_tcs34725_gain = gain;
-
err:
return rc;
}
@@ -473,12 +486,25 @@ err:
/**
* Get gain of the sensor
*
- * @return gain
+ * @param ptr to gain
+ * @return 0 on success, non-zero on failure
*/
-uint8_t
-tcs34725_get_gain(void)
+int
+tcs34725_get_gain(uint8_t *gain)
{
- return g_tcs34725_gain;
+ int rc;
+ uint8_t tmp;
+
+ rc = tcs34725_read8(TCS34725_REG_CONTROL, &tmp);
+ if (rc) {
+ goto err;
+ }
+
+ *gain = tmp;
+
+ return 0;
+err:
+ return rc;
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/fd20bc93/hw/drivers/sensors/tcs34725/src/tcs34725_priv.h
----------------------------------------------------------------------
diff --git a/hw/drivers/sensors/tcs34725/src/tcs34725_priv.h b/hw/drivers/sensors/tcs34725/src/tcs34725_priv.h
index 5d5448c..1dcfb13 100644
--- a/hw/drivers/sensors/tcs34725/src/tcs34725_priv.h
+++ b/hw/drivers/sensors/tcs34725/src/tcs34725_priv.h
@@ -179,10 +179,11 @@ tcs34725_get_chip_id(uint8_t *id);
/**
* Get gain of the sensor
*
- * @return gain
+ * @param ptr to gain
+ * @return 0 on success, non-zero on failure
*/
-uint8_t
-tcs34725_get_gain(void);
+int
+tcs34725_get_gain(uint8_t *gain);
/**
* Set gain of the sensor
@@ -235,10 +236,11 @@ tcs34725_set_integration_time(uint8_t int_time);
/**
* Gets integration time set earlier
*
- * @return integration time
+ * @param ptr to integration time
+ * @return 0 on success, non-zero on failure
*/
-uint8_t
-tcs34725_get_integration_time(void);
+int
+tcs34725_get_integration_time(uint8_t *int_time);
/**
*
@@ -253,10 +255,11 @@ tcs34725_enable(uint8_t enable);
/**
* Indicates whether the sensor is enabled or not
*
- * @return 1 if enabled, 0 if disabled
+ * @param ptr to is_enabled variable
+ * @return 0 on success, non-zero on failure
*/
-uint8_t
-tcs34725_get_enable (void);
+int
+tcs34725_get_enable (uint8_t *is_enabled);
/**
* Reads the raw red, green, blue and clear channel values
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/fd20bc93/hw/drivers/sensors/tcs34725/src/tcs34725_shell.c
----------------------------------------------------------------------
diff --git a/hw/drivers/sensors/tcs34725/src/tcs34725_shell.c b/hw/drivers/sensors/tcs34725/src/tcs34725_shell.c
index e15b4fc..d231d5f 100644
--- a/hw/drivers/sensors/tcs34725/src/tcs34725_shell.c
+++ b/hw/drivers/sensors/tcs34725/src/tcs34725_shell.c
@@ -27,9 +27,6 @@
#include "defs/error.h"
#if MYNEWT_VAL(TCS34725_CLI)
-extern uint8_t g_tcs34725_integration_time;
-extern uint8_t g_tcs34725_gain;
-
static int tcs34725_shell_cmd(int argc, char **argv);
static struct shell_cmd tcs34725_shell_cmd_struct = {
@@ -121,9 +118,6 @@ tcs34725_shell_cmd_read(int argc, char **argv)
while(samples--) {
- tcs34725.cfg.gain = g_tcs34725_gain;
- tcs34725.cfg.integration_time = g_tcs34725_integration_time;
-
rc = tcs34725_get_rawdata(&r, &g, &b, &c, &tcs34725);
if (rc) {
console_printf("Read failed: %d\n", rc);
@@ -150,7 +144,10 @@ tcs34725_shell_cmd_gain(int argc, char **argv)
/* Display the gain */
if (argc == 2) {
- gain = tcs34725_get_gain();
+ rc = tcs34725_get_gain(&gain);
+ if (rc) {
+ goto err;
+ }
console_printf("\tgain [0: 1|1: 4|2: 16|3: 60]\n");
console_printf("%u\n", gain);
}
@@ -189,7 +186,11 @@ tcs34725_shell_cmd_time(int argc, char **argv)
/* Display the integration time */
if (argc == 2) {
- time = tcs34725_get_integration_time();
+ rc = tcs34725_get_integration_time(&time);
+ if (rc) {
+ goto err;
+ }
+
switch (time) {
case TCS34725_INTEGRATIONTIME_2_4MS:
console_printf("2.4\n");
@@ -338,14 +339,22 @@ tcs34725_shell_cmd_en(int argc, char **argv)
{
char *endptr;
long lval;
+ int rc;
+ uint8_t is_enabled;
+ rc = 0;
if (argc > 3) {
return tcs34725_shell_err_too_many_args(argv[1]);
}
/* Display current enable state */
if (argc == 2) {
- console_printf("%u\n", tcs34725_get_enable());
+ rc = tcs34725_get_enable(&is_enabled);
+ if (rc) {
+ console_printf("Cannot get enable state of the sensor\n");
+ goto err;
+ }
+ console_printf("%u\n", is_enabled);
}
/* Update the enable state */
@@ -360,6 +369,8 @@ tcs34725_shell_cmd_en(int argc, char **argv)
}
return 0;
+err:
+ return rc;
}
static int