16#include "pw_log/levels.h"
17#include "pw_log/options.h"
18#include "pw_polyfill/static_assert.h"
19#include "pw_tokenizer/config.h"
33#ifndef PW_LOG_TOKENIZED_ENCODING_BUFFER_SIZE_BYTES
34#define PW_LOG_TOKENIZED_ENCODING_BUFFER_SIZE_BYTES \
35 PW_TOKENIZER_CFG_ENCODING_BUFFER_SIZE_BYTES
38#define PW_LOG_TOKENIZED_FIELD_PREFIX "■"
39#define PW_LOG_TOKENIZED_KEY_VALUE_SEPARATOR "♦"
43#ifndef PW_LOG_TOKENIZED_FORMAT_STRING
45#define _PW_LOG_TOKENIZED_FIELD(name, contents) \
46 PW_LOG_TOKENIZED_FIELD_PREFIX name PW_LOG_TOKENIZED_KEY_VALUE_SEPARATOR \
54#define PW_LOG_TOKENIZED_FORMAT_STRING(module, message) \
55 _PW_LOG_TOKENIZED_FIELD("msg", message) \
56 _PW_LOG_TOKENIZED_FIELD("module", module) \
57 _PW_LOG_TOKENIZED_FIELD("file", __FILE__)
67#ifndef PW_LOG_TOKENIZED_LEVEL_BITS
68#define PW_LOG_TOKENIZED_LEVEL_BITS PW_LOG_LEVEL_BITS
85#ifndef PW_LOG_TOKENIZED_LINE_BITS
86#define PW_LOG_TOKENIZED_LINE_BITS 11
90#ifndef PW_LOG_TOKENIZED_FLAG_BITS
91#define PW_LOG_TOKENIZED_FLAG_BITS 2
96#ifndef PW_LOG_TOKENIZED_MODULE_BITS
97#define PW_LOG_TOKENIZED_MODULE_BITS 16
102 "Log metadata fields must use 32 bits");
105#if PW_LOG_TOKENIZED_LEVEL_BITS == 0
106#define _PW_LOG_TOKENIZED_LEVEL(value) ((uintptr_t)0)
108#define _PW_LOG_TOKENIZED_LEVEL(value) \
109 (value < ((uintptr_t)1 << PW_LOG_TOKENIZED_LEVEL_BITS) \
111 : ((uintptr_t)1 << PW_LOG_TOKENIZED_LEVEL_BITS) - 1)
116#if PW_LOG_TOKENIZED_LINE_BITS == 0
117#define _PW_LOG_TOKENIZED_LINE(line) ((uintptr_t)0)
119#define _PW_LOG_TOKENIZED_LINE(line) \
120 ((uintptr_t)(line < (1 << PW_LOG_TOKENIZED_LINE_BITS) ? line : 0) \
121 << PW_LOG_TOKENIZED_LEVEL_BITS)
125#if PW_LOG_TOKENIZED_FLAG_BITS == 0
126#define _PW_LOG_TOKENIZED_FLAGS(value) ((uintptr_t)0)
128#define _PW_LOG_TOKENIZED_FLAGS(value) \
129 (((uintptr_t)(value) & (((uintptr_t)1 << PW_LOG_TOKENIZED_FLAG_BITS) - 1)) \
130 << (PW_LOG_TOKENIZED_LEVEL_BITS + PW_LOG_TOKENIZED_LINE_BITS))
134#if PW_LOG_TOKENIZED_MODULE_BITS == 0
135#define _PW_LOG_TOKENIZED_MODULE(value) ((uintptr_t)0)
137#define _PW_LOG_TOKENIZED_MODULE(value) \
138 ((uintptr_t)(value) << ((PW_LOG_TOKENIZED_LEVEL_BITS + \
139 PW_LOG_TOKENIZED_LINE_BITS + \
140 PW_LOG_TOKENIZED_FLAG_BITS)))
147namespace pw::log_tokenized {
150inline constexpr size_t kEncodingBufferSizeBytes =
151 PW_LOG_TOKENIZED_ENCODING_BUFFER_SIZE_BYTES;
#define PW_LOG_TOKENIZED_LINE_BITS
Definition: config.h:86
#define PW_LOG_TOKENIZED_MODULE_BITS
Definition: config.h:97
#define PW_LOG_TOKENIZED_LEVEL_BITS
Bits to allocate for the log level. Defaults to PW_LOG_LEVEL_BITS (3).
Definition: config.h:68
#define PW_LOG_TOKENIZED_FLAG_BITS
Bits to use for implementation-defined flags. Defaults to 2.
Definition: config.h:91