/* * Copyright 2017 NXP * All rights reserved. * * * SPDX-License-Identifier: BSD-3-Clause */ #ifndef _EMBEDDED_RPC__LOGEVENTLISTENERS_H_ #define _EMBEDDED_RPC__LOGEVENTLISTENERS_H_ #include "erpc_transport.hpp" /*! * @addtogroup infra_transport * @{ * @file */ //////////////////////////////////////////////////////////////////////////////// // Classes //////////////////////////////////////////////////////////////////////////////// namespace erpc { /*! * @brief Logging messages objects used for logging sent/received messages. * * @ingroup infra_utility */ class MessageLogger { public: /*! * @brief MessageLogger constructor. */ explicit MessageLogger(Transport *transport) : m_next(NULL), m_transport(transport){}; /*! * @brief MessageLogger destructor */ ~MessageLogger(void){}; /*! * @brief Return next logger. * * @return Pointer to next logger. */ MessageLogger *getNext(void) { return m_next; } /*! * @brief Set next logger. * * @param[in] next Pointer to next logger. */ void setNext(MessageLogger *next) { m_next = next; } /*! * @brief Returns next transport object used for logging messages. * * @return Transport object used for logging messages. */ Transport *getLogger(void) { return m_transport; } protected: MessageLogger *m_next; /*!< Pointer to next logger. */ Transport *m_transport; /*!< Pointer to transport object used for logging messages. */ }; /*! * @brief Logging messages functionality. * * @ingroup infra_utility */ class MessageLoggers { public: /*! * @brief Constructor. */ MessageLoggers(void) : m_logger(NULL){}; /*! * @brief Transport destructor */ ~MessageLoggers(void); /*! * @brief This function add given transport to newly created MessageLogger object. * * @param[in] transport Transport used for logging messages * * @retval True When transport was successfully added. * @retval False When transport wasn't added. */ bool addMessageLogger(Transport *transport); protected: MessageLogger *m_logger; /*!< Pointer to first logger. */ /*! * @brief This function add given transport to newly created MessageLogger object. * * @param[in] msg Buffer which will be logged. * * @return The eRPC status based on transport type. */ erpc_status_t logMessage(MessageBuffer *msg); private: /** * @brief This function create new MessageLogger object * * @param[in] transport Transport used by MessageLogger. * * @return MessageLogger* Returns new MessageLogger object. */ MessageLogger *create(Transport *transport); }; } // namespace erpc /*! @} */ #endif // _EMBEDDED_RPC__LOGEVENTLISTENERS_H_