1 # SPDX-License-Identifier: GPL-2.0-only
3 # Copyright (C) 2019 EfficiOS Inc.
9 bt2
.register_plugin(__name__
, "test_debug_info")
12 class CompleteIter(bt2
._UserMessageIterator
):
13 def __init__(self
, config
, output_port
):
14 ec
= output_port
.user_data
19 stream
= trace
.create_stream(sc
)
21 ev
= self
._create
_event
_message
(ec
, stream
, default_clock_snapshot
=123)
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"
49 self
._create
_stream
_beginning
_message
(stream
),
51 self
._create
_stream
_end
_message
(stream
),
55 if len(self
._msgs
) > 0:
56 return self
._msgs
.pop(0)
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
)
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()
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(
83 tc
.create_option_without_selector_field_class(struct_option_fc
),
85 option_bool_selector_fc
= tc
.create_bool_field_class()
86 option_int_selector_fc
= tc
.create_unsigned_integer_field_class(8)
88 payload
= tc
.create_structure_field_class()
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)),
97 tc
.create_signed_integer_field_class(
98 9, preferred_display_base
=bt2
.IntegerDisplayBase
.HEXADECIMAL
101 ("uint32", tc
.create_unsigned_integer_field_class(32)),
102 ("uint61", tc
.create_unsigned_integer_field_class(61)),
105 tc
.create_unsigned_integer_field_class(
106 5, preferred_display_base
=bt2
.IntegerDisplayBase
.OCTAL
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
),
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
119 ("sta_array", tc
.create_dynamic_array_field_class(sta_array_elem_fc
)),
122 tc
.create_option_without_selector_field_class(option_none_fc
),
126 tc
.create_option_without_selector_field_class(option_some_fc
),
128 ("option_bool_selector", option_bool_selector_fc
),
131 tc
.create_option_with_bool_selector_field_class(
132 tc
.create_string_field_class(), option_bool_selector_fc
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,
143 ("option_int_selector", option_int_selector_fc
),
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)]),
152 ("variant", variant_fc
),
154 ec
= sc
.create_event_class(name
="my-event", payload_field_class
=payload
)
156 self
._add
_output
_port
("some-name", ec
)