From 1dfb8d45dc04222d3d2f2bb3a8622a7e59d68228 Mon Sep 17 00:00:00 2001 From: Kieran Bingham Date: Wed, 10 Mar 2021 20:23:29 +0000 Subject: libcamera: request: Add a toString() Provide a toString helper to assist in printing Request state for debug and logging contexts. Reviewed-by: Laurent Pinchart Signed-off-by: Kieran Bingham --- include/libcamera/request.h | 3 +++ src/libcamera/request.cpp | 28 +++++++++++++++++++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/include/libcamera/request.h b/include/libcamera/request.h index cd5a2474..4cf5ff3f 100644 --- a/include/libcamera/request.h +++ b/include/libcamera/request.h @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -56,6 +57,8 @@ public: bool hasPendingBuffers() const { return !pending_.empty(); } + std::string toString() const; + private: LIBCAMERA_DISABLE_COPY(Request) diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp index 5280b68c..ce2dd7b1 100644 --- a/src/libcamera/request.cpp +++ b/src/libcamera/request.cpp @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -286,9 +287,7 @@ void Request::complete() status_ = cancelled_ ? RequestCancelled : RequestComplete; - LOG(Request, Debug) - << "Request has completed - cookie: " << cookie_ - << (cancelled_ ? " [Cancelled]" : ""); + LOG(Request, Debug) << toString(); LIBCAMERA_TRACEPOINT(request_complete, this); } @@ -321,4 +320,27 @@ bool Request::completeBuffer(FrameBuffer *buffer) return !hasPendingBuffers(); } +/** + * \brief Generate a string representation of the Request internals + * + * This function facilitates debugging of Request state while it is used + * internally within libcamera. + * + * \return A string representing the current state of the request + */ +std::string Request::toString() const +{ + std::stringstream ss; + + /* Pending, Completed, Cancelled(X). */ + static const char *statuses = "PCX"; + + /* Example Output: Request(55:P:1/2:6523524) */ + ss << "Request(" << sequence_ << ":" << statuses[status_] << ":" + << pending_.size() << "/" << bufferMap_.size() << ":" + << cookie_ << ")"; + + return ss.str(); +} + } /* namespace libcamera */ -- cgit v1.2.1