Commit | Line | Data |
---|---|---|
7a4bdb54 YB |
1 | |
2 | ||
3 | ||
4 | #include <lttv/event.h> | |
5 | #include <lttv/time.h> | |
6 | #include <babeltrace/ctf/events.h> | |
7 | ||
8 | LttTime lttv_event_get_timestamp(LttvEvent *event) | |
9 | { | |
762e15b0 | 10 | return ltt_time_from_uint64(bt_ctf_get_timestamp(event->bt_event)); |
7a4bdb54 YB |
11 | } |
12 | ||
13 | //TODO ybrosseau find a way to return an error code | |
14 | unsigned long lttv_event_get_long_unsigned(LttvEvent *event, const char* field) | |
15 | { | |
7f092317 | 16 | const struct bt_definition *scope; |
7a4bdb54 YB |
17 | unsigned long timestamp; |
18 | unsigned long data; | |
19 | struct bt_ctf_event *ctf_event = event->bt_event; | |
20 | ||
21 | timestamp = bt_ctf_get_timestamp(ctf_event); | |
22 | if (timestamp == -1ULL) { | |
2230bb65 | 23 | printf("ERROR: lttv_event_get_long_unsigned - invalid event\n"); |
7a4bdb54 YB |
24 | return 0; |
25 | } | |
26 | //scope = bt_ctf_get_top_level_scope(ctf_event, BT_STREAM_PACKET_CONTEXT); | |
27 | scope = bt_ctf_get_top_level_scope(ctf_event, BT_EVENT_FIELDS); | |
28 | if (bt_ctf_field_get_error()) { | |
2230bb65 | 29 | printf("ERROR: lttv_event_get_long_unsigned - cannot get field scope\n"); |
7a4bdb54 YB |
30 | return 0; |
31 | } | |
32 | data = bt_ctf_get_uint64(bt_ctf_get_field(ctf_event, scope, field)); | |
33 | if (bt_ctf_field_get_error()) { | |
2230bb65 | 34 | printf("ERROR: lttv_event_get_long_unsigned - cannot get field data %s \n", field); |
7a4bdb54 YB |
35 | return 0; |
36 | } else { | |
37 | return data; | |
38 | } | |
39 | } | |
40 | ||
41 | ||
42 | char* lttv_event_get_string(LttvEvent *event, const char* field) | |
43 | { | |
7f092317 | 44 | const struct bt_definition *scope; |
7a4bdb54 YB |
45 | unsigned long timestamp; |
46 | char* data; | |
47 | struct bt_ctf_event *ctf_event = event->bt_event; | |
48 | ||
49 | timestamp = bt_ctf_get_timestamp(ctf_event); | |
50 | if (timestamp == -1ULL) { | |
1f3686cd | 51 | printf("ERROR: lttv_event_get_string - cannot read timestamps"); |
7a4bdb54 YB |
52 | return 0; |
53 | } | |
54 | //scope = bt_ctf_get_top_level_scope(ctf_event, BT_STREAM_PACKET_CONTEXT); | |
55 | scope = bt_ctf_get_top_level_scope(ctf_event, BT_EVENT_FIELDS); | |
56 | if (bt_ctf_field_get_error()) { | |
1f3686cd | 57 | printf("ERROR: lttv_event_get_string - cannot get field scope"); |
7a4bdb54 YB |
58 | return 0; |
59 | } | |
60 | data = bt_ctf_get_char_array(bt_ctf_get_field(ctf_event, scope, field)); | |
61 | if (bt_ctf_field_get_error()) { | |
1f3686cd YB |
62 | // Try get_string if we fail on char_array |
63 | // TODO ybrosseau: properly detect right type | |
64 | data = bt_ctf_get_string(bt_ctf_get_field(ctf_event, scope, field)); | |
65 | if (bt_ctf_field_get_error()) { | |
66 | ||
67 | ||
68 | printf("ERROR: lttv_event_get_string - cannot get field data %s", field); | |
69 | ||
70 | return 0; | |
71 | } else { | |
72 | return data; | |
73 | } | |
74 | ||
7a4bdb54 YB |
75 | } else { |
76 | return data; | |
77 | } | |
78 | } | |
79 | long lttv_event_get_long(LttvEvent *event, const char* field) | |
80 | { | |
7f092317 | 81 | const struct bt_definition *scope; |
7a4bdb54 YB |
82 | unsigned long timestamp; |
83 | long data; | |
84 | struct bt_ctf_event *ctf_event = event->bt_event; | |
85 | ||
86 | timestamp = bt_ctf_get_timestamp(ctf_event); | |
87 | if (timestamp == -1ULL) { | |
2230bb65 | 88 | printf("ERROR: lttv_event_get_long - invalid event\n"); |
7a4bdb54 YB |
89 | return 0; |
90 | } | |
91 | scope = bt_ctf_get_top_level_scope(ctf_event, BT_EVENT_FIELDS); | |
92 | if (bt_ctf_field_get_error()) { | |
2230bb65 | 93 | printf("ERROR: lttv_event_get_long - cannot get field scope\n"); |
7a4bdb54 YB |
94 | return 0; |
95 | } | |
96 | data = bt_ctf_get_int64(bt_ctf_get_field(ctf_event, scope, field)); | |
97 | if (bt_ctf_field_get_error()) { | |
2230bb65 | 98 | printf("ERROR: lttv_event_get_long - cannot get field data %s \n", field); |
7a4bdb54 YB |
99 | return 0; |
100 | } else { | |
101 | return data; | |
102 | } | |
103 | } | |
104 | /* | |
105 | unsigned int lttv_event_get_int_unsigned(LttvEvent *event, const char* field) | |
106 | { | |
7f092317 | 107 | struct bt_definition *scope; |
7a4bdb54 YB |
108 | unsigned long timestamp; |
109 | char* data; | |
110 | struct bt_ctf_event *ctf_event = event->bt_event; | |
111 | ||
112 | timestamp = bt_ctf_get_timestamp(ctf_event); | |
113 | if (timestamp == -1ULL) { | |
114 | return 0; | |
115 | } | |
116 | scope = bt_ctf_get_top_level_scope(ctf_event, BT_STREAM_PACKET_CONTEXT); | |
117 | if (bt_ctf_field_get_error()) { | |
118 | return 0; | |
119 | } | |
120 | data = bt_ctf_get_char_array(bt_ctf_get_field(ctf_event, scope, field)); | |
121 | if (bt_ctf_field_get_error()) { | |
122 | return 0; | |
123 | } else { | |
124 | return data; | |
125 | } | |
126 | } | |
127 | int lttv_event_get_int(LttvEvent *event, const char* field) | |
128 | { | |
7f092317 | 129 | struct bt_definition *scope; |
7a4bdb54 YB |
130 | unsigned long timestamp; |
131 | char* data; | |
132 | struct bt_ctf_event *ctf_event = event->bt_event; | |
133 | ||
134 | timestamp = bt_ctf_get_timestamp(ctf_event); | |
135 | if (timestamp == -1ULL) { | |
136 | return 0; | |
137 | } | |
138 | scope = bt_ctf_get_top_level_scope(ctf_event, BT_STREAM_PACKET_CONTEXT); | |
139 | if (bt_ctf_field_get_error()) { | |
140 | return 0; | |
141 | } | |
142 | data = bt_ctf_get_char_array(bt_ctf_get_field(ctf_event, scope, field)); | |
143 | if (bt_ctf_field_get_error()) { | |
144 | return 0; | |
145 | } else { | |
146 | return data; | |
147 | } | |
148 | } | |
149 | */ |