[
https://issues.apache.org/jira/browse/MYNEWT-881?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16365901#comment-16365901
]
ASF GitHub Bot commented on MYNEWT-881:
---------------------------------------
vrahane commented on a change in pull request #718: MYNEWT-881: SensorAPI: Add
sensor_unset_thresh() API and LIS2DH12 set threshold cb fix
URL: https://github.com/apache/mynewt-core/pull/718#discussion_r168537739
##########
File path: hw/drivers/sensors/lis2dh12/src/lis2dh12.c
##########
@@ -1308,44 +1298,62 @@ lis2dh12_sensor_set_trigger_thresh(struct sensor
*sensor,
memcpy(&low_thresh, &stt->stt_low_thresh, sizeof(low_thresh));
memcpy(&high_thresh, &stt->stt_high_thresh, sizeof(high_thresh));
- rc = lis2dh12_get_full_scale(itf, &tmp);
- if (rc) {
- goto err;
+ if (!low_thresh.sad->sad_x_is_valid &&
+ !low_thresh.sad->sad_y_is_valid &&
+ !low_thresh.sad->sad_z_is_valid) {
+ /* if all thresholds are not valid, release gpio irq */
+ hal_gpio_irq_release(itf->si_low_pin);
+ } else {
+ /* if one or more thresholds are valid, set trigger */
Review comment:
For lis2dh12, there are multiple interrupts that you can setup. Each axis
has its associated interrupt. Unsetting one of the interrupts does not mean the
IRQ is disabled. It means one of the interrupts from the sensor is disabled. By
doing this, user can unset specific interrupt or all interrupts. I know
unsetting an interrupt is actually just clearing registers of the particular
interrupt but it also means we need to keep other interrupts active. Almost all
the steps in the set thresh function would have to be repeated here which seems
more repetitive code. Hence, calling the set thresh function here.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> SensorAPI: Add sensor_unset_thresh() API and LIS2DH12 set threshold cb fix
> --------------------------------------------------------------------------
>
> Key: MYNEWT-881
> URL: https://issues.apache.org/jira/browse/MYNEWT-881
> Project: Mynewt
> Issue Type: Improvement
> Security Level: Public(Viewable by anyone)
> Components: Drivers, Sensor Framework
> Affects Versions: v1_3_0_rel
> Environment: ruuvitag-revb2
> Reporter: Vipul Rahane
> Assignee: Vipul Rahane
> Priority: Major
> Labels: core
> Fix For: v1_4_0_rel
>
>
> There are two issues for calling the lis2dh12_sensor_set_trigger_thresh() :
> 1. gpio irq was not being released before doing a re-initialization
> 2. srec was malloced and calling the function multiple times would have
> malloced additional memory without freeing it.
> Solution:
> 1. Release the gpio irq
> 2. Remove the malloc and add a ptr for the sensor in each type trait so that
> a sensor read could be performed in the irq handler.
> Also, sensor_unset_thresh() API was added to unset thresholds
> triggers/interrupts.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)