summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhengyin Qian <qianzy@google.com>2016-01-13 13:53:46 -0800
committerZhengyin Qian <qianzy@google.com>2016-01-14 13:31:22 -0800
commit6981c39aff3a05581ad06494469137cde18ca3ab (patch)
treebfd9d3f2f2f513abba4254e05f5e252904a51f93
parenta357d8f651f6249446acb73dbd6ce5320a548dce (diff)
downloadcontexthub-6981c39aff3a05581ad06494469137cde18ca3ab.tar.gz
sensor: bmi160: do not pend a interrupt if the same interrupt is being handled.
Change-Id: Id10960e57129dd47622497be41dbad2a92d1275e
-rw-r--r--firmware/src/drivers/bosch_bmi160_bmm150/bosch_bmi160_bmm150.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/firmware/src/drivers/bosch_bmi160_bmm150/bosch_bmi160_bmm150.c b/firmware/src/drivers/bosch_bmi160_bmm150/bosch_bmi160_bmm150.c
index c7af5d7f..4e70e2da 100644
--- a/firmware/src/drivers/bosch_bmi160_bmm150/bosch_bmi160_bmm150.c
+++ b/firmware/src/drivers/bosch_bmi160_bmm150/bosch_bmi160_bmm150.c
@@ -1718,7 +1718,8 @@ static void int2Evt(void)
// Read the interrupt reg value to determine what interrupts
SPI_READ(BMI160_REG_INT_STATUS_0, 4, mTask.rxBuffer);
spiBatchTxRx(&mTask.mode, sensorSpiCallback, &mTask);
- } else {
+ } else if (mTask.state != SENSOR_INT_2_HANDLING) {
+ // If we are not handling Int 2 right now, we need to put it to pending.
mTask.pending_int[1] = true;
}
}
@@ -1746,7 +1747,8 @@ static void int1Evt(void)
mTask.state = SENSOR_INT_1_HANDLING;
mTask.fifo_state = FIFO_READ_DATA;
int1Handling();
- } else {
+ } else if (mTask.state != SENSOR_INT_1_HANDLING) {
+ // If we are not handling Int 1 right now, we need to put it to pending.
mTask.pending_int[0] = true;
}
}