summaryrefslogtreecommitdiff
path: root/ucoolib/hal/i2c/i2c_hard.stm32.cc
diff options
context:
space:
mode:
authorNicolas Schodet2013-02-20 17:15:53 +0100
committerNicolas Schodet2019-10-06 23:29:59 +0200
commit850e3632931d7555f80b6a84eada7952c7482dab (patch)
treed21905af5b1ab9e8d656a39faadcca6bab87afad /ucoolib/hal/i2c/i2c_hard.stm32.cc
parentc6e9a45e1c6e1568e58051c4f345a6b943383db7 (diff)
ucoolib/hal/i2c: add finished handler call
Diffstat (limited to 'ucoolib/hal/i2c/i2c_hard.stm32.cc')
-rw-r--r--ucoolib/hal/i2c/i2c_hard.stm32.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/ucoolib/hal/i2c/i2c_hard.stm32.cc b/ucoolib/hal/i2c/i2c_hard.stm32.cc
index 7529953..f11006b 100644
--- a/ucoolib/hal/i2c/i2c_hard.stm32.cc
+++ b/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;