13#ifndef ZEPHYR_INCLUDE_LOGGING_LOG_FRONTEND_STMESP_DEMUX_H_
14#define ZEPHYR_INCLUDE_LOGGING_LOG_FRONTEND_STMESP_DEMUX_H_
35#define LOG_FRONTEND_STMESP_DEMUX_MAJOR_BITS 3
38#define LOG_FRONTEND_STMESP_DEMUX_LEVEL_BITS 3
41#define LOG_FRONTEND_STMESP_DEMUX_TLENGTH_BITS 15
44#define LOG_FRONTEND_STMESP_DEMUX_PLENGTH_BITS 10
47#define LOG_FRONTEND_STMESP_DEMUX_HAS_DATA_BITS 1
50#define LOG_FRONTEND_STMESP_DEMUX_MAJOR_MAX BIT(LOG_FRONTEND_STMESP_DEMUX_MAJOR_BITS)
53#define LOG_FRONTEND_STMESP_DEMUX_TYPE_LOG 0
56#define LOG_FRONTEND_STMESP_DEMUX_TYPE_TRACE_POINT 1
59#define LOG_FRONTEND_STMESP_DEMUX_TYPE_HW_EVENT 2
const char * log_frontend_stmesp_demux_sname_get(uint32_t m_id, uint16_t s_id)
Get source name for a turbo log message.
void log_frontend_stmesp_demux_timestamp(uint64_t ts)
Indicate timestamp.
bool log_frontend_stmesp_demux_is_idle(void)
Check if there are any started but not completed log messages.
void log_frontend_stmesp_demux_data(uint8_t *data, size_t len)
Indicate data.
#define LOG_FRONTEND_STMESP_DEMUX_MAJOR_BITS
Bits used to store major index.
Definition log_frontend_stmesp_demux.h:35
void log_frontend_stmesp_demux_packet_end(void)
Indicate packet end (Flag).
void log_frontend_stmesp_demux_reset(void)
Close any opened messages and mark them as invalid.
#define LOG_FRONTEND_STMESP_DEMUX_HAS_DATA_BITS
Bits used to indicate if hexdump is present.
Definition log_frontend_stmesp_demux.h:47
void log_frontend_stmesp_demux_channel(uint16_t id)
Indicate channel opcode in the STPv2 stream.
#define LOG_FRONTEND_STMESP_DEMUX_PLENGTH_BITS
Bits used to store package length.
Definition log_frontend_stmesp_demux.h:44
int log_frontend_stmesp_demux_log0(uint16_t source_id, uint64_t *ts)
Indicate optimized log message with no arguments.
int log_frontend_stmesp_demux_max_utilization(void)
Get maximum buffer utilization.
const char * log_frontend_stmesp_demux_str_get(uint32_t m_id, uint16_t s_id)
Get the format string of a turbo log message.
void log_frontend_stmesp_demux_major(uint16_t id)
Indicate major opcode in the STPv2 stream.
int log_frontend_stmesp_demux_init(const struct log_frontend_stmesp_demux_config *config)
Initialize the demultiplexer.
uint32_t log_frontend_stmesp_demux_get_dropped(void)
Get number of dropped messages and reset the counter.
void log_frontend_stmesp_demux_free(union log_frontend_stmesp_demux_packet packet)
Free previously claimed packet.
void log_frontend_stmesp_demux_source_id(uint16_t source_id)
Indicate source ID.
#define LOG_FRONTEND_STMESP_DEMUX_TLENGTH_BITS
Bits used to store total length.
Definition log_frontend_stmesp_demux.h:41
int log_frontend_stmesp_demux_packet_start(uint32_t *data, uint64_t *ts)
Indicate detected packet start (DMTS).
#define LOG_FRONTEND_STMESP_DEMUX_LEVEL_BITS
Bits used to store severity level.
Definition log_frontend_stmesp_demux.h:38
union log_frontend_stmesp_demux_packet log_frontend_stmesp_demux_claim(void)
Claim packet.
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT64_TYPE__ uint64_t
Definition stdint.h:91
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Demultiplexer configuration.
Definition log_frontend_stmesp_demux.h:194
size_t source_id_buf_len
It must be multiple of number of major ID's count.
Definition log_frontend_stmesp_demux.h:205
uint32_t * source_id_buf
Buffer for storing source ID's.
Definition log_frontend_stmesp_demux.h:202
uint32_t m_ids_cnt
Array length.
Definition log_frontend_stmesp_demux.h:199
const uint16_t * m_ids
Array with expected major ID's.
Definition log_frontend_stmesp_demux.h:196
Packet with HW event.
Definition log_frontend_stmesp_demux.h:155
uint64_t timestamp
Timestamp.
Definition log_frontend_stmesp_demux.h:166
uint8_t evt
HW event ID.
Definition log_frontend_stmesp_demux.h:169
uint64_t type
Type.
Definition log_frontend_stmesp_demux.h:160
MPSC_PBUF_HDR
Data for MPSC packet handling.
Definition log_frontend_stmesp_demux.h:157
uint64_t content_invalid
Flag indicating if packet is valid.
Definition log_frontend_stmesp_demux.h:163
Packet with logging message.
Definition log_frontend_stmesp_demux.h:101
uint64_t content_invalid
Flag indicating if packet is valid.
Definition log_frontend_stmesp_demux.h:109
struct log_frontend_stmesp_demux_log_header hdr
Logging header.
Definition log_frontend_stmesp_demux.h:115
uint32_t padding
Padding so that data is 8 bytes aligned.
Definition log_frontend_stmesp_demux.h:118
MPSC_PBUF_HDR
Data for MPSC packet handling.
Definition log_frontend_stmesp_demux.h:103
uint64_t type
Type.
Definition log_frontend_stmesp_demux.h:106
uint8_t data[]
Content.
Definition log_frontend_stmesp_demux.h:121
uint64_t timestamp
Timestamp.
Definition log_frontend_stmesp_demux.h:112
Generic STP demux packet.
Definition log_frontend_stmesp_demux.h:89
uint64_t content_invalid
Flag indicating if packet is valid.
Definition log_frontend_stmesp_demux.h:97
uint64_t type
Type.
Definition log_frontend_stmesp_demux.h:94
MPSC_PBUF_HDR
Data for MPSC packet handling.
Definition log_frontend_stmesp_demux.h:91
Packet with trace point.
Definition log_frontend_stmesp_demux.h:125
uint64_t has_data
Flag indicating if trace point includes data.
Definition log_frontend_stmesp_demux.h:136
uint16_t source_id
Source ID - used for compressed logging.
Definition log_frontend_stmesp_demux.h:145
uint64_t content_invalid
Flag indicating if packet is valid.
Definition log_frontend_stmesp_demux.h:133
uint64_t timestamp
Timestamp.
Definition log_frontend_stmesp_demux.h:139
uint64_t type
Type.
Definition log_frontend_stmesp_demux.h:130
uint64_t major
Major ID.
Definition log_frontend_stmesp_demux.h:142
uint32_t data
Content.
Definition log_frontend_stmesp_demux.h:151
MPSC_PBUF_HDR
Data for MPSC packet handling.
Definition log_frontend_stmesp_demux.h:127
uint16_t id
ID.
Definition log_frontend_stmesp_demux.h:148
Union of all packet types.
Definition log_frontend_stmesp_demux.h:173
struct log_frontend_stmesp_demux_packet_generic * generic_packet
Pointer to the generic log_frontend_stmesp_demux packet.
Definition log_frontend_stmesp_demux.h:190
struct log_frontend_stmesp_demux_trace_point * trace_point
Pointer to the trace point message.
Definition log_frontend_stmesp_demux.h:184
const union mpsc_pbuf_generic * rgeneric
Pointer to generic mpsc_pbuf const packet.
Definition log_frontend_stmesp_demux.h:175
struct log_frontend_stmesp_demux_log * log
Pointer to the log message.
Definition log_frontend_stmesp_demux.h:181
struct log_frontend_stmesp_demux_hw_event * hw_event
Pointer to the HW event message.
Definition log_frontend_stmesp_demux.h:187
Generic packet header.
Definition mpsc_packet.h:49