Commit | Line | Data |
---|---|---|
0235b0db MJ |
1 | # SPDX-License-Identifier: GPL-2.0-only |
2 | # | |
3 | # Copyright (C) 2019 EfficiOS Inc. | |
4 | # | |
5 | ||
8cca03c6 FD |
6 | import bt2 |
7 | import math | |
8 | ||
9 | bt2.register_plugin(__name__, "test_debug_info") | |
10 | ||
11 | ||
12 | class CompleteIter(bt2._UserMessageIterator): | |
13 | def __init__(self, config, output_port): | |
14 | ec = output_port.user_data | |
15 | sc = ec.stream_class | |
16 | tc = sc.trace_class | |
17 | ||
18 | trace = tc() | |
19 | stream = trace.create_stream(sc) | |
20 | ||
21 | ev = self._create_event_message(ec, stream, default_clock_snapshot=123) | |
22 | ||
23 | ev.event.payload_field["bool"] = False | |
24 | ev.event.payload_field["real_single"] = 2.0 | |
25 | ev.event.payload_field["real_double"] = math.pi | |
26 | ev.event.payload_field["int32"] = 121 | |
27 | ev.event.payload_field["int3"] = -1 | |
28 | ev.event.payload_field["int9_hex"] = -92 | |
29 | ev.event.payload_field["uint32"] = 121 | |
30 | ev.event.payload_field["uint61"] = 299792458 | |
31 | ev.event.payload_field["uint5_oct"] = 29 | |
32 | ev.event.payload_field["struct"]['str'] = "Rotisserie St-Hubert" | |
33 | ev.event.payload_field["struct"]['option_real'] = math.pi | |
34 | ev.event.payload_field["string"] = "ð" | |
35 | ev.event.payload_field["dyn_array"] = [1.2, 2 / 3, 42.3, math.pi] | |
36 | ev.event.payload_field["dyn_array_len"] = 4 | |
37 | ev.event.payload_field["dyn_array_with_len"] = [5.2, 5 / 3, 42.5, math.pi * 12] | |
38 | ev.event.payload_field["sta_array"] = ['ð°', 'ðĶī', ' ð'] | |
39 | ev.event.payload_field["option_none"] | |
40 | ev.event.payload_field["option_some"] = "NORMANDIN" | |
41 | ev.event.payload_field["option_bool_selector"] = True | |
42 | ev.event.payload_field["option_bool"] = "Mike's" | |
43 | ev.event.payload_field["option_int_selector"] = 1 | |
44 | ev.event.payload_field["option_int"] = "Barbies resto bar grill" | |
45 | ev.event.payload_field['variant'].selected_option_index = 0 | |
46 | ev.event.payload_field["variant"] = "Couche-Tard" | |
47 | ||
48 | self._msgs = [ | |
49 | self._create_stream_beginning_message(stream), | |
50 | ev, | |
51 | self._create_stream_end_message(stream), | |
52 | ] | |
53 | ||
54 | def __next__(self): | |
55 | if len(self._msgs) > 0: | |
56 | return self._msgs.pop(0) | |
57 | else: | |
58 | raise StopIteration | |
59 | ||
60 | ||
61 | @bt2.plugin_component_class | |
62 | class CompleteSrc(bt2._UserSourceComponent, message_iterator_class=CompleteIter): | |
63 | def __init__(self, config, params, obj): | |
64 | tc = self._create_trace_class() | |
65 | cc = self._create_clock_class() | |
66 | sc = tc.create_stream_class(default_clock_class=cc) | |
67 | ||
68 | dyn_array_elem_fc = tc.create_double_precision_real_field_class() | |
69 | dyn_array_with_len_elem_fc = tc.create_double_precision_real_field_class() | |
70 | dyn_array_with_len_fc = tc.create_unsigned_integer_field_class(19) | |
71 | sta_array_elem_fc = tc.create_string_field_class() | |
72 | option_some_fc = tc.create_string_field_class() | |
73 | variant_fc = tc.create_variant_field_class() | |
74 | variant_fc.append_option( | |
75 | name='var_str', field_class=tc.create_string_field_class() | |
76 | ) | |
77 | option_none_fc = tc.create_double_precision_real_field_class() | |
78 | struct_fc = tc.create_structure_field_class() | |
79 | struct_option_fc = tc.create_double_precision_real_field_class() | |
80 | struct_fc.append_member('str', tc.create_string_field_class()) | |
81 | struct_fc.append_member( | |
82 | 'option_real', | |
83 | tc.create_option_without_selector_field_class(struct_option_fc), | |
84 | ) | |
85 | option_bool_selector_fc = tc.create_bool_field_class() | |
86 | option_int_selector_fc = tc.create_unsigned_integer_field_class(8) | |
87 | ||
88 | payload = tc.create_structure_field_class() | |
89 | payload += [ | |
90 | ("bool", tc.create_bool_field_class()), | |
91 | ("real_single", tc.create_single_precision_real_field_class()), | |
92 | ("real_double", tc.create_double_precision_real_field_class()), | |
93 | ("int32", tc.create_signed_integer_field_class(32)), | |
94 | ("int3", tc.create_signed_integer_field_class(3)), | |
95 | ( | |
96 | "int9_hex", | |
97 | tc.create_signed_integer_field_class( | |
98 | 9, preferred_display_base=bt2.IntegerDisplayBase.HEXADECIMAL | |
99 | ), | |
100 | ), | |
101 | ("uint32", tc.create_unsigned_integer_field_class(32)), | |
102 | ("uint61", tc.create_unsigned_integer_field_class(61)), | |
103 | ( | |
104 | "uint5_oct", | |
105 | tc.create_unsigned_integer_field_class( | |
106 | 5, preferred_display_base=bt2.IntegerDisplayBase.OCTAL | |
107 | ), | |
108 | ), | |
109 | ("struct", struct_fc), | |
110 | ("string", tc.create_string_field_class()), | |
111 | ("dyn_array", tc.create_dynamic_array_field_class(dyn_array_elem_fc)), | |
112 | ("dyn_array_len", dyn_array_with_len_fc), | |
113 | ( | |
114 | "dyn_array_with_len", | |
115 | tc.create_dynamic_array_field_class( | |
116 | dyn_array_with_len_elem_fc, length_fc=dyn_array_with_len_fc | |
117 | ), | |
118 | ), | |
119 | ("sta_array", tc.create_dynamic_array_field_class(sta_array_elem_fc)), | |
120 | ( | |
121 | "option_none", | |
122 | tc.create_option_without_selector_field_class(option_none_fc), | |
123 | ), | |
124 | ( | |
125 | "option_some", | |
126 | tc.create_option_without_selector_field_class(option_some_fc), | |
127 | ), | |
128 | ("option_bool_selector", option_bool_selector_fc), | |
129 | ( | |
130 | "option_bool", | |
131 | tc.create_option_with_bool_selector_field_class( | |
132 | tc.create_string_field_class(), option_bool_selector_fc | |
133 | ), | |
134 | ), | |
135 | ( | |
136 | "option_bool_reversed", | |
137 | tc.create_option_with_bool_selector_field_class( | |
138 | tc.create_string_field_class(), | |
139 | option_bool_selector_fc, | |
140 | selector_is_reversed=True, | |
141 | ), | |
142 | ), | |
143 | ("option_int_selector", option_int_selector_fc), | |
144 | ( | |
145 | "option_int", | |
146 | tc.create_option_with_integer_selector_field_class( | |
147 | tc.create_string_field_class(), | |
148 | option_int_selector_fc, | |
149 | bt2.UnsignedIntegerRangeSet([(1, 3), (18, 44)]), | |
150 | ), | |
151 | ), | |
152 | ("variant", variant_fc), | |
153 | ] | |
154 | ec = sc.create_event_class(name="my-event", payload_field_class=payload) | |
155 | ||
156 | self._add_output_port("some-name", ec) |