From 5a627634ef532ef6f23fe7a821e833c4948334dc Mon Sep 17 00:00:00 2001 From: Fabrizio Monti <fabrizio.monti@skywarder.eu> Date: Thu, 6 Feb 2025 21:21:37 +0100 Subject: [PATCH] [DMA] Now timeouts use std chrono. --- src/shared/drivers/dma/DMA.cpp | 9 +++++---- src/shared/drivers/dma/DMA.h | 5 +++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/shared/drivers/dma/DMA.cpp b/src/shared/drivers/dma/DMA.cpp index 07679e4f9..fef96ad56 100644 --- a/src/shared/drivers/dma/DMA.cpp +++ b/src/shared/drivers/dma/DMA.cpp @@ -499,22 +499,23 @@ void DMAStream::waitForTransferComplete() transferCompleteFlag, -1); } -bool DMAStream::timedWaitForHalfTransfer(uint64_t timeout_ns) +bool DMAStream::timedWaitForHalfTransfer(std::chrono::nanoseconds timeout_ns) { return waitForInterruptEventImpl( currentSetup.enableHalfTransferInterrupt, std::bind(&DMAStream::getHalfTransferFlagStatus, this), std::bind(&DMAStream::clearHalfTransferFlag, this), halfTransferFlag, - timeout_ns); + timeout_ns.count()); } -bool DMAStream::timedWaitForTransferComplete(uint64_t timeout_ns) +bool DMAStream::timedWaitForTransferComplete( + std::chrono::nanoseconds timeout_ns) { return waitForInterruptEventImpl( currentSetup.enableTransferCompleteInterrupt, std::bind(&DMAStream::getTransferCompleteFlagStatus, this), std::bind(&DMAStream::clearTransferCompleteFlag, this), - transferCompleteFlag, timeout_ns); + transferCompleteFlag, timeout_ns.count()); } void DMAStream::setHalfTransferCallback(std::function<void()> callback) diff --git a/src/shared/drivers/dma/DMA.h b/src/shared/drivers/dma/DMA.h index 8fda416db..754e9ba8f 100644 --- a/src/shared/drivers/dma/DMA.h +++ b/src/shared/drivers/dma/DMA.h @@ -27,6 +27,7 @@ #include <kernel/sync.h> #include <utils/TimedPollingFlag.h> +#include <chrono> #include <functional> #include <map> @@ -187,9 +188,9 @@ public: void waitForTransferComplete(); - bool timedWaitForHalfTransfer(uint64_t timeout_ns); + bool timedWaitForHalfTransfer(std::chrono::nanoseconds timeout_ns); - bool timedWaitForTransferComplete(uint64_t timeout_ns); + bool timedWaitForTransferComplete(std::chrono::nanoseconds timeout_ns); void setHalfTransferCallback(std::function<void()> callback); -- GitLab