Move to kernel style SPDX license identifiers
[babeltrace.git] / tests / plugins / sink.ctf.fs / succeed / gen-trace-float.c
1 /*
2 * SPDX-License-Identifier: MIT
3 *
4 * Copyright (C) 2019 Philippe Proulx <pproulx@efficios.com>
5 */
6
7 #include <stdint.h>
8 #include <babeltrace2-ctf-writer/writer.h>
9 #include <babeltrace2-ctf-writer/clock.h>
10 #include <babeltrace2-ctf-writer/clock-class.h>
11 #include <babeltrace2-ctf-writer/stream.h>
12 #include <babeltrace2-ctf-writer/event.h>
13 #include <babeltrace2-ctf-writer/event-types.h>
14 #include <babeltrace2-ctf-writer/event-fields.h>
15 #include <babeltrace2-ctf-writer/stream-class.h>
16 #include <babeltrace2-ctf-writer/trace.h>
17
18 #include "common/assert.h"
19
20 struct config {
21 struct bt_ctf_writer *writer;
22 struct bt_ctf_trace *trace;
23 struct bt_ctf_clock *clock;
24 struct bt_ctf_stream_class *sc;
25 struct bt_ctf_stream *stream;
26 struct bt_ctf_event_class *ec;
27 };
28
29 static
30 void fini_config(struct config *cfg)
31 {
32 bt_ctf_object_put_ref(cfg->stream);
33 bt_ctf_object_put_ref(cfg->sc);
34 bt_ctf_object_put_ref(cfg->ec);
35 bt_ctf_object_put_ref(cfg->clock);
36 bt_ctf_object_put_ref(cfg->trace);
37 bt_ctf_object_put_ref(cfg->writer);
38 }
39
40 static
41 void configure_writer(struct config *cfg, const char *path)
42 {
43 struct bt_ctf_field_type *ft;
44 int ret;
45
46 cfg->writer = bt_ctf_writer_create(path);
47 BT_ASSERT(cfg->writer);
48 cfg->trace = bt_ctf_writer_get_trace(cfg->writer);
49 BT_ASSERT(cfg->trace);
50 cfg->clock = bt_ctf_clock_create("default");
51 BT_ASSERT(cfg->clock);
52 ret = bt_ctf_writer_add_clock(cfg->writer, cfg->clock);
53 BT_ASSERT(ret == 0);
54 ret = bt_ctf_writer_set_byte_order(cfg->writer,
55 BT_CTF_BYTE_ORDER_BIG_ENDIAN);
56 BT_ASSERT(ret == 0);
57 cfg->sc = bt_ctf_stream_class_create("hello");
58 BT_ASSERT(cfg->sc);
59 ret = bt_ctf_stream_class_set_clock(cfg->sc, cfg->clock);
60 BT_ASSERT(ret == 0);
61 cfg->ec = bt_ctf_event_class_create("ev");
62 BT_ASSERT(cfg->ec);
63 ft = bt_ctf_field_type_floating_point_create();
64 BT_ASSERT(ft);
65 ret = bt_ctf_field_type_floating_point_set_exponent_digits(ft, 8);
66 BT_ASSERT(ret == 0);
67 ret = bt_ctf_field_type_floating_point_set_mantissa_digits(ft, 24);
68 BT_ASSERT(ret == 0);
69 ret = bt_ctf_event_class_add_field(cfg->ec, ft, "flt");
70 BT_ASSERT(ret == 0);
71 bt_ctf_object_put_ref(ft);
72 ret = bt_ctf_stream_class_add_event_class(cfg->sc, cfg->ec);
73 BT_ASSERT(ret == 0);
74 cfg->stream = bt_ctf_writer_create_stream(cfg->writer, cfg->sc);
75 BT_ASSERT(cfg->stream);
76 }
77
78 static
79 void write_stream(struct config *cfg)
80 {
81 struct bt_ctf_event *ev;
82 struct bt_ctf_field *field;
83 int ret;
84
85 /* Create event and fill fields */
86 ev = bt_ctf_event_create(cfg->ec);
87 BT_ASSERT(ev);
88 field = bt_ctf_event_get_payload(ev, "flt");
89 BT_ASSERT(field);
90 ret = bt_ctf_field_floating_point_set_value(field, -28.4751);
91 BT_ASSERT(ret == 0);
92 bt_ctf_object_put_ref(field);
93 ret = bt_ctf_clock_set_time(cfg->clock, 0);
94 BT_ASSERT(ret == 0);
95
96 /* Append event */
97 ret = bt_ctf_stream_append_event(cfg->stream, ev);
98 BT_ASSERT(ret == 0);
99 bt_ctf_object_put_ref(ev);
100
101 /* Create packet */
102 ret = bt_ctf_stream_flush(cfg->stream);
103 BT_ASSERT(ret == 0);
104 }
105
106 int main(int argc, char **argv)
107 {
108 struct config cfg = {0};
109
110 BT_ASSERT(argc >= 2);
111 configure_writer(&cfg, argv[1]);
112 write_stream(&cfg);
113 fini_config(&cfg);
114 return 0;
115 }
This page took 0.030932 seconds and 4 git commands to generate.