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 2019/03/15 20:12:04 UTC
[mynewt-core] branch master updated: hw/sensors: Add API for doing
sensor_reset() (#1689)
This is an automated email from the ASF dual-hosted git repository.
vipulrahane pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
The following commit(s) were added to refs/heads/master by this push:
new 26d0645 hw/sensors: Add API for doing sensor_reset() (#1689)
26d0645 is described below
commit 26d0645409b09f418dc2b904622a90382a4431ce
Author: Vipul Rahane <vr...@gmail.com>
AuthorDate: Fri Mar 15 13:11:58 2019 -0700
hw/sensors: Add API for doing sensor_reset() (#1689)
- Add optional API for doing sensor_reset()
- Use the API for LPS33HW and LPS33THW
---
.../sensors/lps33hw/include/lps33hw/lps33hw.h | 4 ++--
hw/drivers/sensors/lps33hw/src/lps33hw.c | 9 ++++++--
.../sensors/lps33thw/include/lps33thw/lps33thw.h | 4 ++--
hw/drivers/sensors/lps33thw/src/lps33thw.c | 9 ++++++--
hw/sensor/include/sensor/sensor.h | 19 +++++++++++++++
hw/sensor/src/sensor.c | 27 ++++++++++++++++++++++
6 files changed, 64 insertions(+), 8 deletions(-)
diff --git a/hw/drivers/sensors/lps33hw/include/lps33hw/lps33hw.h b/hw/drivers/sensors/lps33hw/include/lps33hw/lps33hw.h
index cc3e102..9c42eae 100644
--- a/hw/drivers/sensors/lps33hw/include/lps33hw/lps33hw.h
+++ b/hw/drivers/sensors/lps33hw/include/lps33hw/lps33hw.h
@@ -126,11 +126,11 @@ int lps33hw_set_lpf(struct sensor_itf *itf,
/**
* Software reset.
*
- * @param The interface object associated with the lps33hw.
+ * @param Ptr to the sensor
*
* @return 0 on success, non-zero error on failure.
*/
-int lps33hw_reset(struct sensor_itf *itf);
+int lps33hw_reset(struct sensor *sensor);
/*
* Get pressure.
diff --git a/hw/drivers/sensors/lps33hw/src/lps33hw.c b/hw/drivers/sensors/lps33hw/src/lps33hw.c
index c7585f0..a2d9e9b 100644
--- a/hw/drivers/sensors/lps33hw/src/lps33hw.c
+++ b/hw/drivers/sensors/lps33hw/src/lps33hw.c
@@ -99,7 +99,8 @@ static const struct sensor_driver g_lps33hw_sensor_driver = {
.sd_set_trigger_thresh = lps33hw_sensor_set_trigger_thresh,
.sd_handle_interrupt = lps33hw_sensor_handle_interrupt,
.sd_clear_low_trigger_thresh = lps33hw_sensor_clear_low_thresh,
- .sd_clear_high_trigger_thresh = lps33hw_sensor_clear_high_thresh
+ .sd_clear_high_trigger_thresh = lps33hw_sensor_clear_high_thresh,
+ .sd_reset = lps33hw_reset
};
/*
@@ -534,8 +535,12 @@ lps33hw_set_lpf(struct sensor_itf *itf, enum lps33hw_low_pass_config lpf)
}
int
-lps33hw_reset(struct sensor_itf *itf)
+lps33hw_reset(struct sensor *sensor)
{
+ struct sensor_itf *itf;
+
+ itf = SENSOR_GET_ITF(sensor);
+
return lps33hw_set_reg(itf, LPS33HW_CTRL_REG2, 0x04);
}
diff --git a/hw/drivers/sensors/lps33thw/include/lps33thw/lps33thw.h b/hw/drivers/sensors/lps33thw/include/lps33thw/lps33thw.h
index 89f1a5a..b4a7c1c 100644
--- a/hw/drivers/sensors/lps33thw/include/lps33thw/lps33thw.h
+++ b/hw/drivers/sensors/lps33thw/include/lps33thw/lps33thw.h
@@ -127,11 +127,11 @@ int lps33thw_set_lpf(struct sensor_itf *itf,
/**
* Software reset.
*
- * @param The interface object associated with the lps33thw.
+ * @param Ptr to the sensor
*
* @return 0 on success, non-zero error on failure.
*/
-int lps33thw_reset(struct sensor_itf *itf);
+int lps33thw_reset(struct sensor *sensor);
/*
* Get pressure.
diff --git a/hw/drivers/sensors/lps33thw/src/lps33thw.c b/hw/drivers/sensors/lps33thw/src/lps33thw.c
index e800a3a..52adc68 100644
--- a/hw/drivers/sensors/lps33thw/src/lps33thw.c
+++ b/hw/drivers/sensors/lps33thw/src/lps33thw.c
@@ -99,7 +99,8 @@ static const struct sensor_driver g_lps33thw_sensor_driver = {
.sd_set_trigger_thresh = lps33thw_sensor_set_trigger_thresh,
.sd_handle_interrupt = lps33thw_sensor_handle_interrupt,
.sd_clear_low_trigger_thresh = lps33thw_sensor_clear_low_thresh,
- .sd_clear_high_trigger_thresh = lps33thw_sensor_clear_high_thresh
+ .sd_clear_high_trigger_thresh = lps33thw_sensor_clear_high_thresh,
+ .sd_reset = lps33thw_reset
};
/*
@@ -538,8 +539,12 @@ lps33thw_set_lpf(struct sensor_itf *itf, enum lps33thw_low_pass_config lpf)
}
int
-lps33thw_reset(struct sensor_itf *itf)
+lps33thw_reset(struct sensor *sensor)
{
+ struct sensor_itf *itf;
+
+ itf = SENSOR_GET_ITF(sensor);
+
return lps33thw_set_reg(itf, LPS33THW_CTRL_REG2, 0x04);
}
diff --git a/hw/sensor/include/sensor/sensor.h b/hw/sensor/include/sensor/sensor.h
index 8828756..26c64ae 100644
--- a/hw/sensor/include/sensor/sensor.h
+++ b/hw/sensor/include/sensor/sensor.h
@@ -484,6 +484,16 @@ typedef int (*sensor_unset_notification_t)(struct sensor *,
*/
typedef int (*sensor_handle_interrupt_t)(struct sensor *sensor);
+/**
+ * Reset Sensor function Ptr
+ *
+ * @param Ptr to the sensor
+ *
+ * @return 0 on success, non-zero on failure
+ */
+typedef int (*sensor_reset_t)(struct sensor *);
+
+
struct sensor_driver {
sensor_read_func_t sd_read;
sensor_get_config_func_t sd_get_config;
@@ -494,6 +504,7 @@ struct sensor_driver {
sensor_set_notification_t sd_set_notification;
sensor_unset_notification_t sd_unset_notification;
sensor_handle_interrupt_t sd_handle_interrupt;
+ sensor_reset_t sd_reset;
};
struct sensor_timestamp {
@@ -1097,6 +1108,14 @@ sensor_mgr_put_interrupt_evt(struct sensor *sensor);
void
sensor_mgr_put_read_evt(void *arg);
+/**
+ * Resets the sensor
+ *
+ * @param Ptr to sensor
+ */
+int
+sensor_reset(struct sensor *sensor);
+
#if MYNEWT_VAL(SENSOR_CLI)
/**
* Convinience API to convert floats to strings,
diff --git a/hw/sensor/src/sensor.c b/hw/sensor/src/sensor.c
index 53b531a..19714b8 100644
--- a/hw/sensor/src/sensor.c
+++ b/hw/sensor/src/sensor.c
@@ -2202,3 +2202,30 @@ err:
return (rc);
}
+/**
+ * Reset sensor
+ *
+ * @param Ptr to the sensor
+ *
+ * @return 0 on success, non-zero on failure
+ */
+int
+sensor_reset(struct sensor *sensor)
+{
+ int rc;
+
+ if (!sensor->s_funcs->sd_reset) {
+ rc = SYS_EINVAL;
+ return rc;
+ }
+
+ rc = sensor_lock(sensor);
+ if (rc) {
+ return rc;
+ }
+
+ rc = sensor->s_funcs->sd_reset(sensor);
+
+ sensor_unlock(sensor);
+ return rc;
+}