+
+static
+void set_stream_default_clock_snapshot(
+ struct bt_message *msg, uint64_t raw_value,
+ const char *api_func)
+{
+ struct bt_message_stream *stream_msg = (void *) msg;
+ struct bt_stream_class *sc;
+
+ BT_ASSERT(msg);
+ BT_ASSERT_PRE_DEV_HOT_FROM_FUNC(api_func, "message", msg,
+ "Message", ": %!+n", msg);
+ sc = stream_msg->stream->class;
+ BT_ASSERT(sc);
+ BT_ASSERT_PRE_MSG_SC_DEF_CLK_CLS_FROM_FUNC(api_func, msg, sc);
+ BT_ASSERT(stream_msg->default_cs);
+ bt_clock_snapshot_set_raw_value(stream_msg->default_cs, raw_value);
+ stream_msg->default_cs_state = BT_MESSAGE_STREAM_CLOCK_SNAPSHOT_STATE_KNOWN;
+ BT_LIB_LOGD("Set stream message's default clock snapshot: "
+ "%![msg-]+n, value=%" PRIu64, msg, raw_value);
+}
+
+void bt_message_stream_beginning_set_default_clock_snapshot(
+ struct bt_message *message, uint64_t raw_value)
+{
+ BT_ASSERT_PRE_MSG_NON_NULL(message);
+ BT_ASSERT_PRE_DEV_MSG_IS_STREAM_BEGINNING(message);
+ set_stream_default_clock_snapshot(message, raw_value, __func__);
+}
+
+void bt_message_stream_end_set_default_clock_snapshot(
+ struct bt_message *message, uint64_t raw_value)
+{
+ BT_ASSERT_PRE_MSG_NON_NULL(message);
+ BT_ASSERT_PRE_DEV_MSG_IS_STREAM_END(message);
+ return set_stream_default_clock_snapshot(message, raw_value, __func__);
+}
+
+static enum bt_message_stream_clock_snapshot_state
+borrow_stream_message_default_clock_snapshot_const(
+ const bt_message *msg, const bt_clock_snapshot **snapshot,
+ const char *api_func)
+{
+ struct bt_message_stream *stream_msg = (void *) msg;
+ struct bt_stream_class *sc;
+
+ BT_ASSERT_DBG(msg);
+ sc = stream_msg->stream->class;
+ BT_ASSERT_DBG(sc);
+ BT_ASSERT_PRE_DEV_MSG_SC_DEF_CLK_CLS_FROM_FUNC(api_func, msg, sc);
+ BT_ASSERT_DBG(stream_msg->default_cs);
+
+ *snapshot = stream_msg->default_cs;
+
+ return stream_msg->default_cs_state;
+}
+
+enum bt_message_stream_clock_snapshot_state
+bt_message_stream_beginning_borrow_default_clock_snapshot_const(
+ const bt_message *message, const bt_clock_snapshot **snapshot)
+{
+ BT_ASSERT_PRE_DEV_MSG_NON_NULL(message);
+ BT_ASSERT_PRE_DEV_MSG_IS_STREAM_BEGINNING(message);
+ return borrow_stream_message_default_clock_snapshot_const(
+ message, snapshot, __func__);
+}
+
+enum bt_message_stream_clock_snapshot_state
+bt_message_stream_end_borrow_default_clock_snapshot_const(
+ const bt_message *message, const bt_clock_snapshot **snapshot)
+{
+ BT_ASSERT_PRE_DEV_MSG_NON_NULL(message);
+ BT_ASSERT_PRE_DEV_MSG_IS_STREAM_END(message);
+ return borrow_stream_message_default_clock_snapshot_const(
+ message, snapshot, __func__);
+}
+
+static inline
+const struct bt_clock_class *
+borrow_stream_message_stream_class_default_clock_class(
+ const struct bt_message *msg)
+{
+ struct bt_message_stream *stream_msg = (void *) msg;
+
+ BT_ASSERT_DBG(msg);
+ return stream_msg->stream->class->default_clock_class;
+}
+
+const struct bt_clock_class *
+bt_message_stream_beginning_borrow_stream_class_default_clock_class_const(
+ const struct bt_message *msg)
+{
+ BT_ASSERT_PRE_DEV_MSG_NON_NULL(msg);
+ BT_ASSERT_PRE_DEV_MSG_IS_STREAM_BEGINNING(msg);
+ return borrow_stream_message_stream_class_default_clock_class(msg);
+}
+
+const struct bt_clock_class *
+bt_message_stream_end_borrow_stream_class_default_clock_class_const(
+ const struct bt_message *msg)
+{
+ BT_ASSERT_PRE_DEV_MSG_NON_NULL(msg);
+ BT_ASSERT_PRE_DEV_MSG_IS_STREAM_END(msg);
+ return borrow_stream_message_stream_class_default_clock_class(msg);
+}