You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by vi...@apache.org on 2017/02/24 19:38:26 UTC
[31/50] incubator-mynewt-core git commit: Adding tsl2561 shell back
Adding tsl2561 shell back
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/3559c73a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/3559c73a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/3559c73a
Branch: refs/heads/develop
Commit: 3559c73ac1a0de7fd34f9802e401fc8c6c48bfc2
Parents: 9f59c4f
Author: Vipul Rahane <vi...@apache.org>
Authored: Fri Feb 3 15:25:53 2017 -0800
Committer: Vipul Rahane <vi...@apache.org>
Committed: Fri Feb 3 15:25:53 2017 -0800
----------------------------------------------------------------------
apps/slinky/src/main.c | 7 ++
.../sensors/tsl2561/include/tsl2561/tsl2561.h | 5 ++
hw/drivers/sensors/tsl2561/src/tsl2561.c | 84 ++++++++++++++++++++
hw/drivers/sensors/tsl2561/src/tsl2561_priv.h | 5 --
hw/drivers/sensors/tsl2561/src/tsl2561_shell.c | 24 ++++--
5 files changed, 112 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/3559c73a/apps/slinky/src/main.c
----------------------------------------------------------------------
diff --git a/apps/slinky/src/main.c b/apps/slinky/src/main.c
index e87aa0e..718d690 100755
--- a/apps/slinky/src/main.c
+++ b/apps/slinky/src/main.c
@@ -47,6 +47,9 @@
#include <reboot/log_reboot.h>
#include <os/os_time.h>
#include <id/id.h>
+#if MYNEWT_VAL(TSL2561_CLI)
+#include <tsl2561/tsl2561.h>
+#endif
#ifdef ARCH_sim
#include <mcu/mcu_sim.h>
@@ -377,6 +380,10 @@ main(int argc, char **argv)
}
#endif
+#if MYNEWT_VAL(TSL2561_CLI)
+ tsl2561_shell_init();
+#endif
+
config_sensor();
/*
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/3559c73a/hw/drivers/sensors/tsl2561/include/tsl2561/tsl2561.h
----------------------------------------------------------------------
diff --git a/hw/drivers/sensors/tsl2561/include/tsl2561/tsl2561.h b/hw/drivers/sensors/tsl2561/include/tsl2561/tsl2561.h
index 2f093be..046967f 100644
--- a/hw/drivers/sensors/tsl2561/include/tsl2561/tsl2561.h
+++ b/hw/drivers/sensors/tsl2561/include/tsl2561/tsl2561.h
@@ -189,6 +189,11 @@ int tsl2561_clear_interrupt(void);
int tsl2561_config(struct tsl2561 *, struct tsl2561_cfg *);
+#if MYNEWT_VAL(TSL2561_CLI)
+int tsl2561_shell_init(void);
+#endif
+
+
#ifdef __cplusplus
}
#endif
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/3559c73a/hw/drivers/sensors/tsl2561/src/tsl2561.c
----------------------------------------------------------------------
diff --git a/hw/drivers/sensors/tsl2561/src/tsl2561.c b/hw/drivers/sensors/tsl2561/src/tsl2561.c
index 8f90718..c9f7531 100644
--- a/hw/drivers/sensors/tsl2561/src/tsl2561.c
+++ b/hw/drivers/sensors/tsl2561/src/tsl2561.c
@@ -58,6 +58,13 @@
/* ToDo: Add timer based polling in bg and data ready callback (os_event?) */
/* ToDo: Move values to struct incl. address to allow multiple instances */
+#if MYNEWT_VAL(TSL2561_CLI)
+uint8_t g_tsl2561_gain;
+uint8_t g_tsl2561_integration_time;
+uint8_t g_tsl2561_enabled;
+#endif
+
+
#if MYNEWT_VAL(TSL2561_STATS)
/* Define the stats section and records */
STATS_SECT_START(tsl2561_stat_section)
@@ -217,6 +224,83 @@ err:
return rc;
}
+#if MYNEWT_VAL(TSL2561_CLI)
+int
+tsl2561_enable(uint8_t state)
+{
+ int rc;
+
+ /* Enable the device by setting the control bit to 0x03 */
+ rc = tsl2561_write8(TSL2561_COMMAND_BIT | TSL2561_REGISTER_CONTROL,
+ state ? TSL2561_CONTROL_POWERON :
+ TSL2561_CONTROL_POWEROFF);
+ if (!rc) {
+ g_tsl2561_enabled = state ? 1 : 0;
+ }
+
+ return rc;
+}
+
+uint8_t
+tsl2561_get_enable (void)
+{
+ return g_tsl2561_enabled;
+}
+
+int
+tsl2561_set_integration_time(uint8_t int_time)
+{
+ int rc;
+
+ rc = tsl2561_write8(TSL2561_COMMAND_BIT | TSL2561_REGISTER_TIMING,
+ g_tsl2561_integration_time | g_tsl2561_gain);
+ if (rc) {
+ goto error;
+ }
+
+ g_tsl2561_integration_time = int_time;
+
+error:
+ return rc;
+}
+
+uint8_t
+tsl2561_get_integration_time(void)
+{
+ return g_tsl2561_integration_time;
+}
+
+int
+tsl2561_set_gain(uint8_t gain)
+{
+ int rc;
+
+ if ((gain != TSL2561_LIGHT_GAIN_1X) && (gain != TSL2561_LIGHT_GAIN_16X)) {
+ TSL2561_ERR("Invalid gain value\n");
+ rc = EINVAL;
+ goto error;
+ }
+
+ rc = tsl2561_write8(TSL2561_COMMAND_BIT | TSL2561_REGISTER_TIMING,
+ g_tsl2561_integration_time | gain);
+ if (rc) {
+ goto error;
+ }
+
+ g_tsl2561_gain = gain;
+
+error:
+ return rc;
+}
+
+uint8_t
+tsl2561_get_gain(void)
+{
+ return g_tsl2561_gain;
+}
+#endif
+
+
int
tsl2561_get_data(uint16_t *broadband, uint16_t *ir, struct tsl2561 *tsl2561)
{
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/3559c73a/hw/drivers/sensors/tsl2561/src/tsl2561_priv.h
----------------------------------------------------------------------
diff --git a/hw/drivers/sensors/tsl2561/src/tsl2561_priv.h b/hw/drivers/sensors/tsl2561/src/tsl2561_priv.h
index 7d92d5f..7cbe66d 100644
--- a/hw/drivers/sensors/tsl2561/src/tsl2561_priv.h
+++ b/hw/drivers/sensors/tsl2561/src/tsl2561_priv.h
@@ -138,11 +138,6 @@ int tsl2561_write16(uint8_t reg, uint16_t value);
int tsl2561_read8(uint8_t reg, uint8_t *value);
int tsl2561_read16(uint8_t reg, uint16_t *value);
-/* tsl2561_shell.c */
-#if MYNEWT_VAL(TSL2561_CLI)
-int tsl2561_shell_init(void);
-#endif
-
#ifdef __cplusplus
}
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/3559c73a/hw/drivers/sensors/tsl2561/src/tsl2561_shell.c
----------------------------------------------------------------------
diff --git a/hw/drivers/sensors/tsl2561/src/tsl2561_shell.c b/hw/drivers/sensors/tsl2561/src/tsl2561_shell.c
index c485261..9d6720e 100644
--- a/hw/drivers/sensors/tsl2561/src/tsl2561_shell.c
+++ b/hw/drivers/sensors/tsl2561/src/tsl2561_shell.c
@@ -44,6 +44,9 @@
#include "tsl2561_priv.h"
#if MYNEWT_VAL(TSL2561_CLI)
+extern uint8_t g_tsl2561_integration_time;
+extern uint8_t g_tsl2561_gain;
+
static int tsl2561_shell_cmd(int argc, char **argv);
static struct shell_cmd tsl2561_shell_cmd_struct = {
@@ -127,6 +130,7 @@ tsl2561_shell_cmd_read(int argc, char **argv)
uint16_t samples = 1;
long val;
int rc;
+ struct tsl2561 tsl2561;
if (argc > 3) {
return tsl2561_shell_err_too_many_args(argv[1]);
@@ -141,7 +145,11 @@ tsl2561_shell_cmd_read(int argc, char **argv)
}
while(samples--) {
- rc = tsl2561_get_data(&full, &ir);
+
+ tsl2561.cfg.gain = g_tsl2561_gain;
+ tsl2561.cfg.integration_time = g_tsl2561_integration_time;
+
+ rc = tsl2561_get_data(&full, &ir, &tsl2561);
if (rc != 0) {
console_printf("Read failed: %d\n", rc);
return rc;
@@ -177,7 +185,7 @@ tsl2561_shell_cmd_gain(int argc, char **argv)
if ((val != 1) && (val != 16)) {
return tsl2561_shell_err_invalid_arg(argv[2]);
}
- tsl2561_set_gain(val ? TSL2561_GAIN_16X : TSL2561_GAIN_1X);
+ tsl2561_set_gain(val ? TSL2561_LIGHT_GAIN_16X : TSL2561_LIGHT_GAIN_1X);
}
return 0;
@@ -197,13 +205,13 @@ tsl2561_shell_cmd_time(int argc, char **argv)
if (argc == 2) {
time = tsl2561_get_integration_time();
switch (time) {
- case TSL2561_INTEGRATIONTIME_13MS:
+ case TSL2561_LIGHT_ITIME_13MS:
console_printf("13\n");
break;
- case TSL2561_INTEGRATIONTIME_101MS:
+ case TSL2561_LIGHT_ITIME_101MS:
console_printf("101\n");
break;
- case TSL2561_INTEGRATIONTIME_402MS:
+ case TSL2561_LIGHT_ITIME_402MS:
console_printf("402\n");
break;
}
@@ -220,13 +228,13 @@ tsl2561_shell_cmd_time(int argc, char **argv)
}
switch(val) {
case 13:
- tsl2561_set_integration_time(TSL2561_INTEGRATIONTIME_13MS);
+ tsl2561_set_integration_time(TSL2561_LIGHT_ITIME_13MS);
break;
case 101:
- tsl2561_set_integration_time(TSL2561_INTEGRATIONTIME_101MS);
+ tsl2561_set_integration_time(TSL2561_LIGHT_ITIME_101MS);
break;
case 402:
- tsl2561_set_integration_time(TSL2561_INTEGRATIONTIME_402MS);
+ tsl2561_set_integration_time(TSL2561_LIGHT_ITIME_402MS);
break;
}
}