Refactor the verbose tracing in PLDM

1. Add verbose tracing in requester code
2. Change the prefix of verbose tracing to "Tx: " and "Rx: "
3. Remove explicit verbose tracing flag in libpldmresponder
4. Change the prefix of pldmtool verbose tracing to "pldmtool: Tx: "
   and "pldmtool: Rx: "

Signed-off-by: Tom Joseph <rushtotom@gmail.com>
Change-Id: Ie2c6b323e32e0828ed5ecaeb3e61943a98a2f089
diff --git a/requester/handler.hpp b/requester/handler.hpp
index 2af4ade..6290526 100644
--- a/requester/handler.hpp
+++ b/requester/handler.hpp
@@ -91,19 +91,21 @@
      *  @param[in] fd - fd of MCTP communications socket
      *  @param[in] event - reference to PLDM daemon's main event loop
      *  @param[in] requester - reference to Requester object
+     *  @param[in] verbose - verbose tracing flag
      *  @param[in] instanceIdExpiryInterval - instance ID expiration interval
      *  @param[in] numRetries - number of request retries
      *  @param[in] responseTimeOut - time to wait between each retry
      */
     explicit Handler(
         int fd, sdeventplus::Event& event, pldm::dbus_api::Requester& requester,
+        bool verbose,
         std::chrono::seconds instanceIdExpiryInterval =
             std::chrono::seconds(INSTANCE_ID_EXPIRATION_INTERVAL),
         uint8_t numRetries = static_cast<uint8_t>(NUMBER_OF_REQUEST_RETRIES),
         std::chrono::milliseconds responseTimeOut =
             std::chrono::milliseconds(RESPONSE_TIME_OUT)) :
         fd(fd),
-        event(event), requester(requester),
+        event(event), requester(requester), verbose(verbose),
         instanceIdExpiryInterval(instanceIdExpiryInterval),
         numRetries(numRetries), responseTimeOut(responseTimeOut)
     {}
@@ -162,7 +164,8 @@
         };
 
         auto request = std::make_unique<RequestInterface>(
-            fd, eid, event, std::move(requestMsg), numRetries, responseTimeOut);
+            fd, eid, event, std::move(requestMsg), numRetries, responseTimeOut,
+            verbose);
         auto timer = std::make_unique<phosphor::Timer>(
             event.get(), instanceIdExpiryCallBack);
 
@@ -237,15 +240,16 @@
     int fd; //!< file descriptor of MCTP communications socket
     sdeventplus::Event& event; //!< reference to PLDM daemon's main event loop
     pldm::dbus_api::Requester& requester; //!< reference to Requester object
+    bool verbose;                         //!< verbose tracing flag
     std::chrono::seconds
         instanceIdExpiryInterval; //!< Instance ID expiration interval
     uint8_t numRetries;           //!< number of request retries
     std::chrono::milliseconds
         responseTimeOut; //!< time to wait between each retry
 
-    /** @brief Container for storing the details of the PLDM request message,
-     *         handler for the corresponding PLDM response and the timer object
-     *         for the Instance ID expiration
+    /** @brief Container for storing the details of the PLDM request
+     *         message, handler for the corresponding PLDM response and the
+     *         timer object for the Instance ID expiration
      */
     using RequestValue =
         std::tuple<std::unique_ptr<RequestInterface>, ResponseHandler,
diff --git a/requester/request.hpp b/requester/request.hpp
index f1a91d7..24e6942 100644
--- a/requester/request.hpp
+++ b/requester/request.hpp
@@ -4,6 +4,7 @@
 #include "libpldm/requester/pldm.h"
 
 #include "common/types.hpp"
+#include "common/utils.hpp"
 
 #include <sdbusplus/timer.hpp>
 #include <sdeventplus/event.hpp>
@@ -144,18 +145,20 @@
      *  @param[in] requestMsg - PLDM request message
      *  @param[in] numRetries - number of request retries
      *  @param[in] timeout - time to wait between each retry in milliseconds
+     *  @param[in] verbose - verbose tracing flag
      */
     explicit Request(int fd, mctp_eid_t eid, sdeventplus::Event& event,
                      pldm::Request&& requestMsg, uint8_t numRetries,
-                     std::chrono::milliseconds timeout) :
+                     std::chrono::milliseconds timeout, bool verbose) :
         RequestRetryTimer(event, numRetries, timeout),
-        fd(fd), eid(eid), requestMsg(std::move(requestMsg))
+        fd(fd), eid(eid), requestMsg(std::move(requestMsg)), verbose(verbose)
     {}
 
   private:
     int fd;                   //!< file descriptor of MCTP communications socket
     mctp_eid_t eid;           //!< endpoint ID of the remote MCTP endpoint
     pldm::Request requestMsg; //!< PLDM request message
+    bool verbose;             //!< verbose tracing flag
 
     /** @brief Sends the PLDM request message on the socket
      *
@@ -163,6 +166,10 @@
      */
     int send() const
     {
+        if (verbose)
+        {
+            pldm::utils::printBuffer(pldm::utils::Tx, requestMsg);
+        }
         auto rc = pldm_send(eid, fd, requestMsg.data(), requestMsg.size());
         if (rc < 0)
         {
diff --git a/requester/test/handler_test.cpp b/requester/test/handler_test.cpp
index aa0655f..144e5f5 100644
--- a/requester/test/handler_test.cpp
+++ b/requester/test/handler_test.cpp
@@ -74,7 +74,7 @@
 
 TEST_F(HandlerTest, singleRequestResponseScenario)
 {
-    Handler<NiceMock<MockRequest>> reqHandler(fd, event, dbusImplReq,
+    Handler<NiceMock<MockRequest>> reqHandler(fd, event, dbusImplReq, false,
                                               seconds(1), 2, milliseconds(100));
     pldm::Request request{};
     auto instanceId = dbusImplReq.getInstanceId(eid);
@@ -96,7 +96,7 @@
 
 TEST_F(HandlerTest, singleRequestInstanceIdTimerExpired)
 {
-    Handler<NiceMock<MockRequest>> reqHandler(fd, event, dbusImplReq,
+    Handler<NiceMock<MockRequest>> reqHandler(fd, event, dbusImplReq, false,
                                               seconds(1), 2, milliseconds(100));
     pldm::Request request{};
     auto instanceId = dbusImplReq.getInstanceId(eid);
@@ -116,7 +116,7 @@
 
 TEST_F(HandlerTest, multipleRequestResponseScenario)
 {
-    Handler<NiceMock<MockRequest>> reqHandler(fd, event, dbusImplReq,
+    Handler<NiceMock<MockRequest>> reqHandler(fd, event, dbusImplReq, false,
                                               seconds(2), 2, milliseconds(100));
     pldm::Request request{};
     auto instanceId = dbusImplReq.getInstanceId(eid);
diff --git a/requester/test/mock_request.hpp b/requester/test/mock_request.hpp
index 8b51a03..355609d 100644
--- a/requester/test/mock_request.hpp
+++ b/requester/test/mock_request.hpp
@@ -16,7 +16,7 @@
   public:
     MockRequest(int /*fd*/, mctp_eid_t /*eid*/, sdeventplus::Event& event,
                 pldm::Request&& /*requestMsg*/, uint8_t numRetries,
-                std::chrono::milliseconds responseTimeOut) :
+                std::chrono::milliseconds responseTimeOut, bool /*verbose*/) :
         RequestRetryTimer(event, numRetries, responseTimeOut)
     {}
 
diff --git a/requester/test/request_test.cpp b/requester/test/request_test.cpp
index 1b41ff6..5239c12 100644
--- a/requester/test/request_test.cpp
+++ b/requester/test/request_test.cpp
@@ -49,7 +49,7 @@
 TEST_F(RequestIntfTest, 0Retries100msTimeout)
 {
     MockRequest request(fd, eid, event, std::move(requestMsg), 0,
-                        milliseconds(100));
+                        milliseconds(100), false);
     EXPECT_CALL(request, send())
         .Times(Exactly(1))
         .WillOnce(Return(PLDM_SUCCESS));
@@ -60,7 +60,7 @@
 TEST_F(RequestIntfTest, 2Retries100msTimeout)
 {
     MockRequest request(fd, eid, event, std::move(requestMsg), 2,
-                        milliseconds(100));
+                        milliseconds(100), false);
     // send() is called a total of 3 times, the original plus two retries
     EXPECT_CALL(request, send()).Times(3).WillRepeatedly(Return(PLDM_SUCCESS));
     auto rc = request.start();
@@ -71,7 +71,7 @@
 TEST_F(RequestIntfTest, 9Retries100msTimeoutRequestStoppedAfter1sec)
 {
     MockRequest request(fd, eid, event, std::move(requestMsg), 9,
-                        milliseconds(100));
+                        milliseconds(100), false);
     // send() will be called a total of 10 times, the original plus 9 retries.
     // In a ideal scenario send() would have been called 10 times in 1 sec (when
     // the timer is stopped) with a timeout of 100ms. Because there are delays
@@ -94,7 +94,7 @@
 TEST_F(RequestIntfTest, 2Retries100msTimeoutsendReturnsError)
 {
     MockRequest request(fd, eid, event, std::move(requestMsg), 2,
-                        milliseconds(100));
+                        milliseconds(100), false);
     EXPECT_CALL(request, send()).Times(Exactly(1)).WillOnce(Return(PLDM_ERROR));
     auto rc = request.start();
     EXPECT_EQ(rc, PLDM_ERROR);