25#include "pw_span/span.h"
26#include "pw_status/status.h"
27#include "pw_trace_tokenized/config.h"
28#include "pw_trace_tokenized/trace_tokenized.h"
58 PW_TRACE_CALL_ONLY_WHEN_ENABLED = 0,
59 PW_TRACE_CALL_ON_EVERY_EVENT = 1,
63 PW_TRACE_EVENT_RETURN_FLAGS_NONE = 0,
64 PW_TRACE_EVENT_RETURN_FLAGS_SKIP_EVENT = 1 << 0,
65 PW_TRACE_EVENT_RETURN_FLAGS_DISABLE_AFTER_PROCESSING = 1 << 1
67typedef uint32_t pw_trace_TraceEventReturnFlags;
69typedef size_t pw_trace_EventCallbackHandle;
70typedef pw_trace_TraceEventReturnFlags (*pw_trace_EventCallback)(
71 void* user_data, pw_trace_tokenized_TraceEvent* event);
74 pw_trace_EventCallback callback,
77 pw_trace_EventCallbackHandle* handle);
106typedef void (*pw_trace_SinkAddBytes)(
void* user_data,
109typedef void (*pw_trace_SinkEndBlock)(
void* user_data);
110typedef size_t pw_trace_SinkHandle;
112 pw_trace_SinkAddBytes add_bytes_func,
113 pw_trace_SinkEndBlock end_block_func,
115 pw_trace_SinkHandle* handle);
137 enum CallOnEveryEvent {
138 kCallOnlyWhenEnabled = PW_TRACE_CALL_ONLY_WHEN_ENABLED,
139 kCallOnEveryEvent = PW_TRACE_CALL_ON_EVERY_EVENT,
142 using SinkAddBytes = pw_trace_SinkAddBytes;
143 using SinkEndBlock = pw_trace_SinkEndBlock;
144 using SinkHandle = pw_trace_SinkHandle;
147 SinkStartBlock start_block;
148 SinkAddBytes add_bytes;
149 SinkEndBlock end_block;
151 using EventCallback = pw_trace_EventCallback;
152 using EventCallbackHandle = pw_trace_EventCallbackHandle;
153 using TraceEvent = pw_trace_tokenized_TraceEvent;
156 EventCallback callback;
157 CallOnEveryEvent called_on_every_event;
160 pw::Status RegisterSink(SinkStartBlock start_func,
161 SinkAddBytes add_bytes_func,
162 SinkEndBlock end_block_func,
163 void* user_data =
nullptr,
164 SinkHandle* handle =
nullptr);
171 EventCallback callback,
172 CallOnEveryEvent called_on_every_event = kCallOnlyWhenEnabled,
173 void* user_data =
nullptr,
174 EventCallbackHandle* handle =
nullptr);
175 pw::Status UnregisterEventCallback(EventCallbackHandle handle);
178 pw_trace_TraceEventReturnFlags CallEventCallbacks(
179 CallOnEveryEvent called_on_every_event, TraceEvent* event);
180 size_t GetCalledOnEveryEventCount()
const {
181 return called_on_every_event_count_;
187 size_t called_on_every_event_count_ = 0;
189 bool IsSinkFree(pw_trace_SinkHandle handle) {
190 return sink_callbacks_[handle].start_block ==
nullptr &&
191 sink_callbacks_[handle].add_bytes ==
nullptr &&
192 sink_callbacks_[handle].end_block ==
nullptr;
197Callbacks& GetCallbacks();
206 Callbacks::EventCallback event_callback,
207 Callbacks::CallOnEveryEvent called_on_every_event =
208 Callbacks::kCallOnlyWhenEnabled,
209 void* user_data =
nullptr)
210 : callbacks_(callbacks) {
212 .RegisterEventCallback(event_callback, called_on_every_event, user_data)
216 Callbacks::SinkStartBlock sink_start,
217 Callbacks::SinkAddBytes sink_add_bytes,
218 Callbacks::SinkEndBlock sink_end,
219 void* user_data =
nullptr)
220 : callbacks_(callbacks) {
221 callbacks_.RegisterSink(sink_start, sink_add_bytes, sink_end, user_data)
constexpr void IgnoreError() const
Definition: status.h:430
Definition: span_impl.h:235
Definition: trace_callback.h:135
Definition: trace_callback.h:202
pw_Status
C API for status codes. In C++, use the pw::Status class instead.
Definition: status.h:40
#define PW_TRACE_CONFIG_MAX_SINKS
The maximum number of encoded event sinks which can be registered at a time.
Definition: config.h:76
pw_Status pw_trace_UnregisterEventCallback(pw_trace_EventCallbackHandle handle)
Causes the callback to not receive any more events.
void(* pw_trace_SinkStartBlock)(void *user_data, size_t size)
Definition: trace_callback.h:105
#define PW_TRACE_CONFIG_MAX_EVENT_CALLBACKS
The maximum number of event callbacks which can be registered at a time.
Definition: config.h:71
pw_trace_ShouldCallOnEveryEvent
Definition: trace_callback.h:57
pw_Status pw_trace_UnregisterSink(pw_trace_SinkHandle handle)
Causes the sink to stop receiving trace data.
The Pigweed namespace.
Definition: alignment.h:27
pw::InlineBasicString and pw::InlineString are safer alternatives to std::basic_string and std::strin...
Definition: trace_callback.h:154
Definition: trace_callback.h:145