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"
31#ifndef PW_LOG_TOKENIZED_ENCODING_BUFFER_SIZE_BYTES
32#define PW_LOG_TOKENIZED_ENCODING_BUFFER_SIZE_BYTES \
33 PW_TOKENIZER_CFG_ENCODING_BUFFER_SIZE_BYTES
36#define PW_LOG_TOKENIZED_FIELD_PREFIX "■"
37#define PW_LOG_TOKENIZED_KEY_VALUE_SEPARATOR "♦"
41#ifndef PW_LOG_TOKENIZED_FORMAT_STRING
43#define _PW_LOG_TOKENIZED_FIELD(name, contents) \
44 PW_LOG_TOKENIZED_FIELD_PREFIX name PW_LOG_TOKENIZED_KEY_VALUE_SEPARATOR \
52#define PW_LOG_TOKENIZED_FORMAT_STRING(module, message) \
53 _PW_LOG_TOKENIZED_FIELD("msg", message) \
54 _PW_LOG_TOKENIZED_FIELD("module", module) \
55 _PW_LOG_TOKENIZED_FIELD("file", __FILE__)
66#ifndef PW_LOG_TOKENIZED_LEVEL_BITS
67#define PW_LOG_TOKENIZED_LEVEL_BITS PW_LOG_LEVEL_BITS
84#ifndef PW_LOG_TOKENIZED_LINE_BITS
85#define PW_LOG_TOKENIZED_LINE_BITS 11
89#ifndef PW_LOG_TOKENIZED_FLAG_BITS
90#define PW_LOG_TOKENIZED_FLAG_BITS 2
96#ifndef PW_LOG_TOKENIZED_MODULE_BITS
97#define PW_LOG_TOKENIZED_MODULE_BITS 16
100static_assert((PW_LOG_TOKENIZED_LEVEL_BITS + PW_LOG_TOKENIZED_LINE_BITS +
101 PW_LOG_TOKENIZED_FLAG_BITS + PW_LOG_TOKENIZED_MODULE_BITS) == 32,
102 "Log metadata fields must use 32 bits");
108namespace pw::log_tokenized {
111inline constexpr size_t kEncodingBufferSizeBytes =
112 PW_LOG_TOKENIZED_ENCODING_BUFFER_SIZE_BYTES;