summaryrefslogtreecommitdiffhomepage
path: root/digital/ucoolib/ucoolib/hal/i2c/i2c_hard.stm32.cc
diff options
context:
space:
mode:
authorNicolas Schodet2013-02-20 17:15:53 +0100
committerNicolas Schodet2013-02-20 17:15:53 +0100
commitce8581af2514e8d60c0ce14f4a2c39944b6ab988 (patch)
tree93b245c49226494f14686f2b12c10bddbd4d1d2e /digital/ucoolib/ucoolib/hal/i2c/i2c_hard.stm32.cc
parentcab54c77e772be0cce1d77439bdcbd63910c62be (diff)
digital/ucoolib/ucoolib/hal/i2c: add finished handler call
Diffstat (limited to 'digital/ucoolib/ucoolib/hal/i2c/i2c_hard.stm32.cc')
-rw-r--r--digital/ucoolib/ucoolib/hal/i2c/i2c_hard.stm32.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/digital/ucoolib/ucoolib/hal/i2c/i2c_hard.stm32.cc b/digital/ucoolib/ucoolib/hal/i2c/i2c_hard.stm32.cc
index 75299535..f11006ba 100644
--- a/digital/ucoolib/ucoolib/hal/i2c/i2c_hard.stm32.cc
+++ b/digital/ucoolib/ucoolib/hal/i2c/i2c_hard.stm32.cc
@@ -280,6 +280,8 @@ I2cHard::ev_isr (int n)
I2C_CR1 (base) = I2C_CR1_ACK | I2C_CR1_STOP | I2C_CR1_PE;
i2c.master_ = false;
i2c.master_status_ = i2c.buf_index_;
+ if (i2c.finished_handler_)
+ i2c.finished_handler_->finished (i2c.master_status_);
}
else if (i2c.buf_count_ - i2c.buf_index_ == 3)
{
@@ -297,6 +299,8 @@ I2cHard::ev_isr (int n)
i2c.master_buf_[i2c.buf_index_++] = I2C_DR (base);
i2c.master_ = false;
i2c.master_status_ = i2c.buf_index_;
+ if (i2c.finished_handler_)
+ i2c.finished_handler_->finished (i2c.master_status_);
}
}
else
@@ -381,6 +385,8 @@ I2cHard::er_isr (int n)
I2C_CR1 (base) = I2C_CR1_ACK | I2C_CR1_STOP | I2C_CR1_PE;
i2c.master_ = false;
i2c.master_status_ = i2c.buf_index_;
+ if (i2c.finished_handler_)
+ i2c.finished_handler_->finished (i2c.master_status_);
}
}
I2C_CR2 (base) &= ~I2C_CR2_ITBUFEN;