libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
LibXR::STDIO Class Reference

STDIO interface for read/write ports. More...

#include <libxr_rw.hpp>

Collaboration diagram for LibXR::STDIO:
[legend]

Static Public Member Functions

static int Printf (const char *fmt,...)
 Prints a formatted string to the write port (like printf).
 

Static Public Attributes

static ReadPortread_ = nullptr
 Read port instance. 读取端口。
 
static WritePortwrite_ = nullptr
 Write port instance. 写入端口。
 

Detailed Description

STDIO interface for read/write ports.

提供静态全局的输入输出接口绑定与缓冲区管理。

Definition at line 817 of file libxr_rw.hpp.

Member Function Documentation

◆ Printf()

static int LibXR::STDIO::Printf ( const char * fmt,
... )
inlinestatic

Prints a formatted string to the write port (like printf).

将格式化字符串发送至写入端口,类似 printf。

Parameters
fmtThe format string. 格式化字符串。
...Variable arguments to be formatted. 需要格式化的参数。
Returns
Number of characters written, or negative on error. 成功返回写入的字符数,失败返回负数。

Definition at line 838 of file libxr_rw.hpp.

839 {
840#if LIBXR_PRINTF_BUFFER_SIZE > 0
841 if (!STDIO::write_ || !STDIO::write_->Writable())
842 {
843 return -1;
844 }
845
846 static LibXR::Mutex mutex; // NOLINT
847
848 LibXR::Mutex::LockGuard lock_guard(mutex);
849
850 va_list args;
851 va_start(args, fmt);
852 int len = vsnprintf(STDIO::printf_buff_, LIBXR_PRINTF_BUFFER_SIZE, fmt, args);
853 va_end(args);
854
855 // Check result and limit length
856 if (len < 0)
857 {
858 return -1;
859 }
860 if (static_cast<size_t>(len) >= LIBXR_PRINTF_BUFFER_SIZE)
861 {
862 len = LIBXR_PRINTF_BUFFER_SIZE - 1;
863 }
864
865 ConstRawData data = {reinterpret_cast<const uint8_t *>(STDIO::printf_buff_),
866 static_cast<size_t>(len)};
867
868 static WriteOperation op; // NOLINT
869 return static_cast<int>(STDIO::write_->operator()(data, op));
870#else
871 UNUSED(fmt);
872 return 0;
873#endif
874 }
互斥锁的 RAII 机制封装 (RAII-style mechanism for automatic mutex management).
Definition mutex.hpp:65
互斥锁类,提供线程同步机制 (Mutex class providing thread synchronization mechanisms).
Definition mutex.hpp:18
static WritePort * write_
Write port instance. 写入端口。
Definition libxr_rw.hpp:822
Operation< ErrorCode > WriteOperation
Write operation type.
Definition libxr_rw.hpp:239

Field Documentation

◆ read_

ReadPort* LibXR::STDIO::read_ = nullptr
inlinestatic

Read port instance. 读取端口。

Definition at line 821 of file libxr_rw.hpp.

◆ write_

WritePort* LibXR::STDIO::write_ = nullptr
inlinestatic

Write port instance. 写入端口。

Definition at line 822 of file libxr_rw.hpp.


The documentation for this class was generated from the following file: