1 # SPDX-License-Identifier: GPL-2.0-only
3 # Copyright (C) 2019 EfficiOS Inc.
10 bt2
.register_plugin(__name__
, "test_debug_info")
13 class CompleteIter(bt2
._UserMessageIterator
):
14 def __init__(self
, config
, output_port
):
15 ec
= output_port
.user_data
20 stream
= trace
.create_stream(sc
)
22 ev
= self
._create
_event
_message
(ec
, stream
, default_clock_snapshot
=123)
24 ev
.event
.payload_field
["bool"] = False
25 ev
.event
.payload_field
["real_single"] = 2.0
26 ev
.event
.payload_field
["real_double"] = math
.pi
27 ev
.event
.payload_field
["int32"] = 121
28 ev
.event
.payload_field
["int3"] = -1
29 ev
.event
.payload_field
["int9_hex"] = -92
30 ev
.event
.payload_field
["uint32"] = 121
31 ev
.event
.payload_field
["uint61"] = 299792458
32 ev
.event
.payload_field
["uint5_oct"] = 29
33 ev
.event
.payload_field
["struct"]["str"] = "Rotisserie St-Hubert"
34 ev
.event
.payload_field
["struct"]["option_real"] = math
.pi
35 ev
.event
.payload_field
["string"] = "ð"
36 ev
.event
.payload_field
["dyn_array"] = [1.2, 2 / 3, 42.3, math
.pi
]
37 ev
.event
.payload_field
["dyn_array_len"] = 4
38 ev
.event
.payload_field
["dyn_array_with_len"] = [5.2, 5 / 3, 42.5, math
.pi
* 12]
39 ev
.event
.payload_field
["sta_array"] = ["ð°", "ðĶī", " ð"]
40 ev
.event
.payload_field
["option_none"]
41 ev
.event
.payload_field
["option_some"] = "NORMANDIN"
42 ev
.event
.payload_field
["option_bool_selector"] = True
43 ev
.event
.payload_field
["option_bool"] = "Mike's"
44 ev
.event
.payload_field
["option_int_selector"] = 1
45 ev
.event
.payload_field
["option_int"] = "Barbies resto bar grill"
46 ev
.event
.payload_field
["variant"].selected_option_index
= 0
47 ev
.event
.payload_field
["variant"] = "Couche-Tard"
50 self
._create
_stream
_beginning
_message
(stream
),
52 self
._create
_stream
_end
_message
(stream
),
56 if len(self
._msgs
) > 0:
57 return self
._msgs
.pop(0)
62 @bt2.plugin_component_class
63 class CompleteSrc(bt2
._UserSourceComponent
, message_iterator_class
=CompleteIter
):
64 def __init__(self
, config
, params
, obj
):
65 tc
= self
._create
_trace
_class
()
66 cc
= self
._create
_clock
_class
()
67 sc
= tc
.create_stream_class(default_clock_class
=cc
)
69 dyn_array_elem_fc
= tc
.create_double_precision_real_field_class()
70 dyn_array_with_len_elem_fc
= tc
.create_double_precision_real_field_class()
71 dyn_array_with_len_fc
= tc
.create_unsigned_integer_field_class(19)
72 sta_array_elem_fc
= tc
.create_string_field_class()
73 option_some_fc
= tc
.create_string_field_class()
74 variant_fc
= tc
.create_variant_field_class()
75 variant_fc
.append_option(
76 name
="var_str", field_class
=tc
.create_string_field_class()
78 option_none_fc
= tc
.create_double_precision_real_field_class()
79 struct_fc
= tc
.create_structure_field_class()
80 struct_option_fc
= tc
.create_double_precision_real_field_class()
81 struct_fc
.append_member("str", tc
.create_string_field_class())
82 struct_fc
.append_member(
84 tc
.create_option_without_selector_field_class(struct_option_fc
),
86 option_bool_selector_fc
= tc
.create_bool_field_class()
87 option_int_selector_fc
= tc
.create_unsigned_integer_field_class(8)
89 payload
= tc
.create_structure_field_class()
91 ("bool", tc
.create_bool_field_class()),
92 ("real_single", tc
.create_single_precision_real_field_class()),
93 ("real_double", tc
.create_double_precision_real_field_class()),
94 ("int32", tc
.create_signed_integer_field_class(32)),
95 ("int3", tc
.create_signed_integer_field_class(3)),
98 tc
.create_signed_integer_field_class(
99 9, preferred_display_base
=bt2
.IntegerDisplayBase
.HEXADECIMAL
102 ("uint32", tc
.create_unsigned_integer_field_class(32)),
103 ("uint61", tc
.create_unsigned_integer_field_class(61)),
106 tc
.create_unsigned_integer_field_class(
107 5, preferred_display_base
=bt2
.IntegerDisplayBase
.OCTAL
110 ("struct", struct_fc
),
111 ("string", tc
.create_string_field_class()),
112 ("dyn_array", tc
.create_dynamic_array_field_class(dyn_array_elem_fc
)),
113 ("dyn_array_len", dyn_array_with_len_fc
),
115 "dyn_array_with_len",
116 tc
.create_dynamic_array_field_class(
117 dyn_array_with_len_elem_fc
, length_fc
=dyn_array_with_len_fc
120 ("sta_array", tc
.create_static_array_field_class(sta_array_elem_fc
, 3)),
123 tc
.create_option_without_selector_field_class(option_none_fc
),
127 tc
.create_option_without_selector_field_class(option_some_fc
),
129 ("option_bool_selector", option_bool_selector_fc
),
132 tc
.create_option_with_bool_selector_field_class(
133 tc
.create_string_field_class(), option_bool_selector_fc
137 "option_bool_reversed",
138 tc
.create_option_with_bool_selector_field_class(
139 tc
.create_string_field_class(),
140 option_bool_selector_fc
,
141 selector_is_reversed
=True,
144 ("option_int_selector", option_int_selector_fc
),
147 tc
.create_option_with_integer_selector_field_class(
148 tc
.create_string_field_class(),
149 option_int_selector_fc
,
150 bt2
.UnsignedIntegerRangeSet([(1, 3), (18, 44)]),
153 ("variant", variant_fc
),
155 ec
= sc
.create_event_class(name
="my-event", payload_field_class
=payload
)
157 self
._add
_output
_port
("some-name", ec
)