|
|
#define | PW_LOG_TOKENIZED_ENCODING_BUFFER_SIZE_BYTES PW_TOKENIZER_CFG_ENCODING_BUFFER_SIZE_BYTES |
| |
|
#define | PW_LOG_TOKENIZED_FIELD_PREFIX "■" |
| |
|
#define | PW_LOG_TOKENIZED_KEY_VALUE_SEPARATOR "♦" |
| |
| #define | _PW_LOG_TOKENIZED_FIELD(name, contents) |
| |
| #define | PW_LOG_TOKENIZED_FORMAT_STRING(module, message) |
| |
|
#define | PW_LOG_TOKENIZED_LEVEL_BITS PW_LOG_LEVEL_BITS |
| | Bits to allocate for the log level. Defaults to PW_LOG_LEVEL_BITS (3).
|
| |
| #define | PW_LOG_TOKENIZED_LINE_BITS 11 |
| |
|
#define | PW_LOG_TOKENIZED_FLAG_BITS 2 |
| | Bits to use for implementation-defined flags. Defaults to 2.
|
| |
| #define | PW_LOG_TOKENIZED_MODULE_BITS 16 |
| |
|
#define | _PW_LOG_TOKENIZED_LEVEL(value) ((uintptr_t)0) |
| |
| #define | _PW_LOG_TOKENIZED_LINE(line) |
| |
| #define | _PW_LOG_TOKENIZED_FLAGS(value) |
| |
| #define | _PW_LOG_TOKENIZED_MODULE(value) |
| |
| #define | PW_LOG_TOKENIZED_TO_GLOBAL_HANDLER_WITH_METADATA( level, module, flags, message, ...) |
| |
|
#define | PW_LOG_TOKENIZED_TO_GLOBAL_HANDLER_WITH_PAYLOAD PW_LOG_TOKENIZED_TO_GLOBAL_HANDLER_WITH_METADATA |
| | Legacy alias for PW_LOG_TOKENIZED_TO_GLOBAL_HANDLER_WITH_METADATA.
|
| |
| #define | PW_LOG_TOKENIZED_ENCODE_MESSAGE(metadata, format, ...) |
| |
| #define | PW_LOG_TOKENIZED_TO_GLOBAL_HANDLER(level, module, flags, message, ...) |
| |
| #define | PW_LOG_TOKENIZED_ENCODE_MESSAGE_LIGHT(format, ...) |
| |
|
| InlineString< kBase64EncodedBufferSizeBytes > | pw::log_tokenized::PrefixedBase64Encode (span< const std::byte > binary_message) |
| |
| template<typename Function > |
| constexpr StatusWithSize | pw::log_tokenized::ParseFields (std::string_view string, Function field_consumer, std::string_view field_prefix=PW_LOG_TOKENIZED_FIELD_PREFIX, std::string_view key_val_separator=PW_LOG_TOKENIZED_KEY_VALUE_SEPARATOR) |
| |
| void | pw_log_tokenized_HandleLog (uint32_t metadata, const uint8_t encoded_message[], size_t size_bytes) |
| |
| void | pw_log_tokenized_HandleLogWithoutMetadata (const uint8_t encoded_message[], size_t size_bytes) |
| |
|
static constexpr T | pw::log_tokenized::internal::BitField< T, kBits, kShift >::Get (T value) |
| |
|
static constexpr T | pw::log_tokenized::internal::BitField< T, kBits, kShift >::Shift (T value) |
| |
|
static constexpr T | pw::log_tokenized::internal::BitField< T, 0, kShift >::Get (T) |
| |
|
static constexpr T | pw::log_tokenized::internal::BitField< T, 0, kShift >::Shift (T) |
| |
|
template<T log_level = 0, T module = 0, T flags = 0, T line = 0> |
| static constexpr GenericMetadata | pw::log_tokenized::GenericMetadata< kLevelBits, kLineBits, kFlagBits, kModuleBits, T >::Set () |
| |
| constexpr | pw::log_tokenized::GenericMetadata< kLevelBits, kLineBits, kFlagBits, kModuleBits, T >::GenericMetadata (T log_level, T module, T flags, T line) |
| |
|
constexpr | pw::log_tokenized::GenericMetadata< kLevelBits, kLineBits, kFlagBits, kModuleBits, T >::GenericMetadata (T value) |
| |
|
constexpr T | pw::log_tokenized::GenericMetadata< kLevelBits, kLineBits, kFlagBits, kModuleBits, T >::level () const |
| | The log level of this message.
|
| |
| constexpr T | pw::log_tokenized::GenericMetadata< kLevelBits, kLineBits, kFlagBits, kModuleBits, T >::line_number () const |
| |
|
constexpr T | pw::log_tokenized::GenericMetadata< kLevelBits, kLineBits, kFlagBits, kModuleBits, T >::flags () const |
| | The flags provided to the log call.
|
| |
|
constexpr T | pw::log_tokenized::GenericMetadata< kLevelBits, kLineBits, kFlagBits, kModuleBits, T >::module () const |
| | The 16-bit tokenized version of the module name (PW_LOG_MODULE_NAME).
|
| |
|
constexpr T | pw::log_tokenized::GenericMetadata< kLevelBits, kLineBits, kFlagBits, kModuleBits, T >::value () const |
| | The underlying packed metadata.
|
| |
| #define PW_LOG_TOKENIZED_LINE_BITS 11 |
Bits to allocate for the line number. Defaults to 11 (up to line 2047). If the line number is too large to be represented by this field, line is reported as 0.
Including the line number can slightly increase code size. Without the line number, the log metadata argument is the same for all logs with the same level and flags. With the line number, each metadata value is unique and must be encoded as a separate word in the binary. Systems with extreme space constraints may exclude line numbers by setting this macro to 0.
It is possible to include line numbers in tokenized log format strings, but that is discouraged because line numbers change whenever a file is edited. Passing the line number with the metadata is a lightweight way to include it.
| #define PW_LOG_TOKENIZED_TO_GLOBAL_HANDLER_WITH_METADATA |
( |
|
level, |
|
|
|
module, |
|
|
|
flags, |
|
|
|
message, |
|
|
|
... |
|
) |
| |
Value: do { \
_PW_TOKENIZER_CONST uintptr_t _pw_log_tokenized_module_token = \
PW_TOKENIZE_STRING_MASK("pw_log_module_names", \
module); \
const uintptr_t _pw_log_tokenized_level = level; \
PW_LOG_TOKENIZED_ENCODE_MESSAGE( \
(_PW_LOG_TOKENIZED_LEVEL(_pw_log_tokenized_level) | \
_PW_LOG_TOKENIZED_MODULE(_pw_log_tokenized_module_token) | \
_PW_LOG_TOKENIZED_FLAGS(flags) | _PW_LOG_TOKENIZED_LINE(__LINE__)), \
__VA_ARGS__); \
} while (0)
#define PW_LOG_TOKENIZED_MODULE_BITS
Definition: config.h:97
This macro implements PW_LOG using pw_tokenizer. Users must implement pw_log_tokenized_HandleLog(uint32_t metadata, const uint8_t* buffer, size_t
size). The log level, module token, and flags are packed into the metadata argument.
Two strings are tokenized in this macro:
- The log format string, tokenized in the default tokenizer domain.
- Log module name, masked to 16 bits and tokenized in the "pw_log_module_names" tokenizer domain.
To use this macro, implement pw_log_tokenized_HandleLog(), which is defined in pw_log_tokenized/handler.h. The log metadata can be accessed using pw::log_tokenized::Metadata. For example:
uint32_t metadata, const uint8_t data[], size_t size) {
if (metadata.level() >= kLogLevel && ModuleEnabled(metadata.module())) {
EmitLogMessage(data, size, metadata.flags());
}
}
void pw_log_tokenized_HandleLog(uint32_t metadata, const uint8_t encoded_message[], size_t size_bytes)