aboutsummaryrefslogtreecommitdiffstats
path: root/src/drivers/SpiMaster.cpp
diff options
context:
space:
mode:
authormark9064 <30447455+mark9064@users.noreply.github.com>2024-04-11 00:03:36 +0100
committerJF <JF002@users.noreply.github.com>2024-05-01 16:13:47 +0200
commit24e6a2f8abab219868cb2eb6d02b3d83504c223c (patch)
treebf1707edcdb0d5406d55e22a238abc31464d7665 /src/drivers/SpiMaster.cpp
parent9a7ba405e1384510f92f68e75b4bb54218f637c3 (diff)
Avoid storing lambda
Diffstat (limited to 'src/drivers/SpiMaster.cpp')
-rw-r--r--src/drivers/SpiMaster.cpp16
1 files changed, 3 insertions, 13 deletions
diff --git a/src/drivers/SpiMaster.cpp b/src/drivers/SpiMaster.cpp
index 5bfbf7b4..eec62cb7 100644
--- a/src/drivers/SpiMaster.cpp
+++ b/src/drivers/SpiMaster.cpp
@@ -137,9 +137,6 @@ void SpiMaster::OnEndEvent() {
spiBaseAddress->TASKS_START = 1;
} else {
nrf_gpio_pin_set(this->pinCsn);
- if (this->TransactionHook != nullptr) {
- this->TransactionHook(false);
- }
currentBufferAddr = 0;
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
xSemaphoreGiveFromISR(mutex, &xHigherPriorityTaskWoken);
@@ -170,13 +167,12 @@ void SpiMaster::PrepareRx(const uint32_t bufferAddress, const size_t size) {
spiBaseAddress->EVENTS_END = 0;
}
-bool SpiMaster::Write(uint8_t pinCsn, const uint8_t* data, size_t size, std::function<void(bool)> TransactionHook) {
+bool SpiMaster::Write(uint8_t pinCsn, const uint8_t* data, size_t size, const std::function<void()>& transactionHook) {
if (data == nullptr)
return false;
auto ok = xSemaphoreTake(mutex, portMAX_DELAY);
ASSERT(ok == true);
- this->TransactionHook = TransactionHook;
this->pinCsn = pinCsn;
if (size == 1) {
@@ -185,8 +181,8 @@ bool SpiMaster::Write(uint8_t pinCsn, const uint8_t* data, size_t size, std::fun
DisableWorkaroundForFtpan58(spiBaseAddress, 0, 0);
}
- if (this->TransactionHook != nullptr) {
- this->TransactionHook(true);
+ if (transactionHook != nullptr) {
+ transactionHook();
}
nrf_gpio_pin_clear(this->pinCsn);
@@ -203,9 +199,6 @@ bool SpiMaster::Write(uint8_t pinCsn, const uint8_t* data, size_t size, std::fun
while (spiBaseAddress->EVENTS_END == 0)
;
nrf_gpio_pin_set(this->pinCsn);
- if (this->TransactionHook != nullptr) {
- this->TransactionHook(false);
- }
currentBufferAddr = 0;
DisableWorkaroundForFtpan58(spiBaseAddress, 0, 0);
@@ -219,7 +212,6 @@ bool SpiMaster::Write(uint8_t pinCsn, const uint8_t* data, size_t size, std::fun
bool SpiMaster::Read(uint8_t pinCsn, uint8_t* cmd, size_t cmdSize, uint8_t* data, size_t dataSize) {
xSemaphoreTake(mutex, portMAX_DELAY);
- this->TransactionHook = nullptr;
this->pinCsn = pinCsn;
DisableWorkaroundForFtpan58(spiBaseAddress, 0, 0);
spiBaseAddress->INTENCLR = (1 << 6);
@@ -267,8 +259,6 @@ void SpiMaster::Wakeup() {
bool SpiMaster::WriteCmdAndBuffer(uint8_t pinCsn, const uint8_t* cmd, size_t cmdSize, const uint8_t* data, size_t dataSize) {
xSemaphoreTake(mutex, portMAX_DELAY);
- this->TransactionHook = nullptr;
-
this->pinCsn = pinCsn;
DisableWorkaroundForFtpan58(spiBaseAddress, 0, 0);
spiBaseAddress->INTENCLR = (1 << 6);