/src/wireshark/epan/dissectors/file-ttl.c
Line | Count | Source (jump to first uncovered line) |
1 | | /* file-ttl.c |
2 | | * |
3 | | * TTX Logger (TTL) file format from TTTech Computertechnik AG dissector by |
4 | | * Giovanni Musto <giovanni.musto@partner.italdesign.it> |
5 | | * Copyright 2024 Giovanni Musto |
6 | | * |
7 | | * This dissector allows to parse TTL files. |
8 | | * You can find the PDF with the documentation of the format at |
9 | | * https://servicearea.tttech-auto.com/ (registration and approval required). |
10 | | * |
11 | | * SPDX-License-Identifier: GPL-2.0-or-later |
12 | | */ |
13 | | |
14 | | #include "config.h" |
15 | | |
16 | | #include <epan/proto.h> |
17 | | #include <epan/packet.h> |
18 | | #include <epan/expert.h> |
19 | | #include <epan/tvbuff.h> |
20 | | #include <epan/tfs.h> |
21 | | |
22 | | #include <wiretap/ttl.h> |
23 | | |
24 | | static int proto_ttl; |
25 | | |
26 | | static dissector_handle_t xml_handle; |
27 | | |
28 | | static int hf_ttl_header; |
29 | | static int hf_ttl_header_magic; |
30 | | static int hf_ttl_header_file_format_version; |
31 | | static int hf_ttl_header_block_size; |
32 | | static int hf_ttl_header_header_size; |
33 | | static int hf_ttl_header_logfile_info; |
34 | | |
35 | | static int hf_ttl_header_logfile_info_logger_sn; |
36 | | static int hf_ttl_header_logfile_info_logger_sw_version; |
37 | | static int hf_ttl_header_logfile_info_measurement_creation_date; |
38 | | static int hf_ttl_header_logfile_info_measurement_creation_timestamp; |
39 | | static int hf_ttl_header_logfile_info_supplier_name; |
40 | | static int hf_ttl_header_logfile_info_description; |
41 | | static int hf_ttl_header_logfile_info_hw_version; |
42 | | static int hf_ttl_header_logfile_info_configuration_file_name; |
43 | | static int hf_ttl_header_logfile_info_tracefile_sorted; |
44 | | static int hf_ttl_header_logfile_info_tracefile_split_index; |
45 | | static int hf_ttl_header_logfile_info_completion_date; |
46 | | static int hf_ttl_header_logfile_info_completion_timestamp; |
47 | | static int hf_ttl_header_logfile_info_tc_sw_bootloader_version; |
48 | | static int hf_ttl_header_logfile_info_tc_sw_firmware_version; |
49 | | static int hf_ttl_header_logfile_info_most25_fw_version; |
50 | | static int hf_ttl_header_logfile_info_most150_fw_version; |
51 | | static int hf_ttl_header_logfile_info_split_file_creation_date; |
52 | | static int hf_ttl_header_logfile_info_split_file_creation_timestamp; |
53 | | static int hf_ttl_header_logfile_info_unused_bytes; |
54 | | static int hf_ttl_header_logfile_info_sleep_counter; |
55 | | static int hf_ttl_header_logfile_info_reserved_bytes; |
56 | | static int hf_ttl_header_configuration; |
57 | | |
58 | | static int hf_ttl_trace_data; |
59 | | static int hf_ttl_block; |
60 | | static int hf_ttl_trace_data_entry; |
61 | | static int hf_ttl_trace_data_entry_size; |
62 | | static int hf_ttl_trace_data_entry_type; |
63 | | static int hf_ttl_trace_data_entry_dest_addr; |
64 | | static int hf_ttl_trace_data_entry_dest_addr_cascade; |
65 | | static int hf_ttl_trace_data_entry_dest_addr_device_logger; |
66 | | static int hf_ttl_trace_data_entry_dest_addr_device_tap; |
67 | | static int hf_ttl_trace_data_entry_dest_addr_function_fpga; |
68 | | static int hf_ttl_trace_data_entry_dest_addr_function_atom; |
69 | | static int hf_ttl_trace_data_entry_dest_addr_function_tricore1; |
70 | | static int hf_ttl_trace_data_entry_dest_addr_function_tricore2; |
71 | | static int hf_ttl_trace_data_entry_dest_addr_function_tricore3; |
72 | | static int hf_ttl_trace_data_entry_dest_addr_function_tda4x; |
73 | | static int hf_ttl_trace_data_entry_dest_addr_function_fpgaa; |
74 | | static int hf_ttl_trace_data_entry_dest_addr_function_fpgab; |
75 | | static int hf_ttl_trace_data_entry_dest_addr_function_pt15_fpga; |
76 | | static int hf_ttl_trace_data_entry_dest_addr_function_pt20_fpga; |
77 | | static int hf_ttl_trace_data_entry_dest_addr_function_pc3_fpga; |
78 | | static int hf_ttl_trace_data_entry_dest_addr_function_pc3_aurix; |
79 | | static int hf_ttl_trace_data_entry_dest_addr_function_zelda_canfd; |
80 | | static int hf_ttl_trace_data_entry_dest_addr_function_zelda_lin; |
81 | | static int hf_ttl_trace_data_entry_dest_addr_function_unknown; |
82 | | static int hf_ttl_trace_data_entry_meta1; |
83 | | static int hf_ttl_trace_data_entry_meta1_frame_duplication; |
84 | | static int hf_ttl_trace_data_entry_meta1_compressed_format; |
85 | | static int hf_ttl_trace_data_entry_meta1_timestamp_source; |
86 | | static int hf_ttl_trace_data_entry_src_addr; |
87 | | static int hf_ttl_trace_data_entry_src_addr_cascade; |
88 | | static int hf_ttl_trace_data_entry_src_addr_device_logger; |
89 | | static int hf_ttl_trace_data_entry_src_addr_device_tap; |
90 | | static int hf_ttl_trace_data_entry_src_addr_function_fpga; |
91 | | static int hf_ttl_trace_data_entry_src_addr_function_atom; |
92 | | static int hf_ttl_trace_data_entry_src_addr_function_tricore1; |
93 | | static int hf_ttl_trace_data_entry_src_addr_function_tricore2; |
94 | | static int hf_ttl_trace_data_entry_src_addr_function_tricore3; |
95 | | static int hf_ttl_trace_data_entry_src_addr_function_tda4x; |
96 | | static int hf_ttl_trace_data_entry_src_addr_function_fpgaa; |
97 | | static int hf_ttl_trace_data_entry_src_addr_function_fpgab; |
98 | | static int hf_ttl_trace_data_entry_src_addr_function_pt15_fpga; |
99 | | static int hf_ttl_trace_data_entry_src_addr_function_pt20_fpga; |
100 | | static int hf_ttl_trace_data_entry_src_addr_function_pc3_fpga; |
101 | | static int hf_ttl_trace_data_entry_src_addr_function_pc3_aurix; |
102 | | static int hf_ttl_trace_data_entry_src_addr_function_zelda_canfd; |
103 | | static int hf_ttl_trace_data_entry_src_addr_function_zelda_lin; |
104 | | static int hf_ttl_trace_data_entry_src_addr_function_unknown; |
105 | | static int hf_ttl_trace_data_entry_meta2; |
106 | | static int hf_ttl_trace_data_entry_ackmode; |
107 | | |
108 | | static int hf_ttl_trace_data_entry_status_information; |
109 | | static int hf_ttl_trace_data_entry_status_info_eth_type; |
110 | | static int hf_ttl_trace_data_entry_status_info_can_flags; |
111 | | static int hf_ttl_trace_data_entry_status_info_can_valid_frame; |
112 | | static int hf_ttl_trace_data_entry_status_info_can_remote_frame; |
113 | | static int hf_ttl_trace_data_entry_status_info_can_bus_off; |
114 | | static int hf_ttl_trace_data_entry_status_info_can_matched; |
115 | | static int hf_ttl_trace_data_entry_status_info_can_error_code; |
116 | | static int hf_ttl_trace_data_entry_status_info_can_res; |
117 | | static int hf_ttl_trace_data_entry_status_info_can_dlc; |
118 | | static int hf_ttl_trace_data_entry_status_info_can_ide; |
119 | | static int hf_ttl_trace_data_entry_status_info_can_edl; |
120 | | static int hf_ttl_trace_data_entry_status_info_can_brs; |
121 | | static int hf_ttl_trace_data_entry_status_info_can_esi; |
122 | | static int hf_ttl_trace_data_entry_status_info_lin_pid; |
123 | | static int hf_ttl_trace_data_entry_status_info_lin_id; |
124 | | static int hf_ttl_trace_data_entry_status_info_lin_parity; |
125 | | static int hf_ttl_trace_data_entry_status_info_lin_flags; |
126 | | static int hf_ttl_trace_data_entry_status_info_lin_parity_error; |
127 | | static int hf_ttl_trace_data_entry_status_info_lin_sync_error; |
128 | | static int hf_ttl_trace_data_entry_status_info_lin_2_checksum_error; |
129 | | static int hf_ttl_trace_data_entry_status_info_lin_1_checksum_error; |
130 | | static int hf_ttl_trace_data_entry_status_info_lin_no_data_error; |
131 | | static int hf_ttl_trace_data_entry_status_info_lin_abort_error; |
132 | | static int hf_ttl_trace_data_entry_status_info_lin_unused; |
133 | | static int hf_ttl_trace_data_entry_status_info_fr_type; |
134 | | static int hf_ttl_trace_data_entry_status_info_fr_matched; |
135 | | static int hf_ttl_trace_data_entry_status_info_fr_res1; |
136 | | static int hf_ttl_trace_data_entry_status_info_fr_error_flags; |
137 | | static int hf_ttl_trace_data_entry_status_info_fr_fss_error; |
138 | | static int hf_ttl_trace_data_entry_status_info_fr_bss_error; |
139 | | static int hf_ttl_trace_data_entry_status_info_fr_fes_error; |
140 | | static int hf_ttl_trace_data_entry_status_info_fr_frame_crc_error; |
141 | | static int hf_ttl_trace_data_entry_status_info_fr_header_crc_error; |
142 | | static int hf_ttl_trace_data_entry_status_info_fr_idle_error; |
143 | | static int hf_ttl_trace_data_entry_status_info_fr_res2; |
144 | | static int hf_ttl_trace_data_entry_status_info_fr_res3; |
145 | | static int hf_ttl_trace_data_entry_status_info_fr_low_phase_exceeded; |
146 | | static int hf_ttl_trace_data_entry_status_info_fr_res4; |
147 | | static int hf_ttl_trace_data_entry_status_info_fr_pulse_flags; |
148 | | static int hf_ttl_trace_data_entry_status_info_fr_cas; |
149 | | static int hf_ttl_trace_data_entry_status_info_fr_mts; |
150 | | static int hf_ttl_trace_data_entry_status_info_fr_wup; |
151 | | static int hf_ttl_trace_data_entry_status_info_fr_res5; |
152 | | |
153 | | static int hf_ttl_trace_data_entry_timestamp; |
154 | | static int hf_ttl_trace_data_entry_unparsed; |
155 | | static int hf_ttl_trace_data_entry_payload; |
156 | | static int hf_ttl_eth_phy_status; |
157 | | static int hf_ttl_eth_phy_status_data; |
158 | | static int hf_ttl_eth_phy_status_reg_addr; |
159 | | static int hf_ttl_eth_phy_status_unused; |
160 | | static int hf_ttl_eth_phy_status_res1; |
161 | | static int hf_ttl_eth_phy_status_phy_addr; |
162 | | static int hf_ttl_eth_phy_status_res2; |
163 | | static int hf_ttl_eth_phy_status_valid; |
164 | | static int hf_ttl_trace_data_entry_eth_unused; |
165 | | static int hf_ttl_trace_data_entry_can_id; |
166 | | static int hf_ttl_trace_data_entry_lin_checksum; |
167 | | static int hf_ttl_trace_data_entry_fr_low_phase_counter; |
168 | | static int hf_ttl_trace_data_entry_fr_unused; |
169 | | static int hf_ttl_trace_data_entry_fr_eray_eir_register; |
170 | | static int hf_ttl_trace_data_entry_fr_eray_stpw1_register; |
171 | | static int hf_ttl_trace_data_entry_fr_eray_stpw2_register; |
172 | | static int hf_ttl_trace_data_entry_fr_eray_ccsv_register; |
173 | | static int hf_ttl_trace_data_entry_fr_eray_ccev_register; |
174 | | static int hf_ttl_trace_data_entry_fr_eray_swnit_register; |
175 | | static int hf_ttl_trace_data_entry_fr_eray_acs_register; |
176 | | |
177 | | |
178 | | static expert_field ei_ttl_block_size_too_short; |
179 | | static expert_field ei_ttl_header_size_too_short; |
180 | | static expert_field ei_ttl_header_size_implausible; |
181 | | static expert_field ei_ttl_header_logfile_info_too_short; |
182 | | static expert_field ei_ttl_entry_size_too_short; |
183 | | |
184 | | static int ett_ttl; |
185 | | static int ett_ttl_header; |
186 | | static int ett_ttl_header_logfile_info; |
187 | | static int ett_ttl_header_configuration; |
188 | | static int ett_ttl_trace_data; |
189 | | static int ett_ttl_block; |
190 | | static int ett_ttl_trace_data_entry; |
191 | | static int ett_ttl_trace_data_entry_dest_addr; |
192 | | static int ett_ttl_trace_data_entry_src_addr; |
193 | | static int ett_ttl_trace_data_entry_meta1; |
194 | | static int ett_ttl_trace_data_entry_status_information; |
195 | | static int ett_ttl_trace_data_entry_status_info_can_flags; |
196 | | static int ett_ttl_trace_data_entry_status_info_lin_flags; |
197 | | static int ett_ttl_trace_data_entry_status_info_lin_pid; |
198 | | static int ett_ttl_trace_data_entry_status_info_fr_error_flags; |
199 | | static int ett_ttl_trace_data_entry_status_info_fr_pulse_flags; |
200 | | static int ett_ttl_trace_data_entry_payload; |
201 | | static int ett_ttl_eth_phy_status; |
202 | | |
203 | | static const value_string hf_ttl_header_logfile_info_tracefile_sorted_vals[] = { |
204 | | { '0', "Not Sorted" }, |
205 | | { '1', "Sorted" }, |
206 | | { 0, NULL } |
207 | | }; |
208 | | |
209 | | static const value_string hf_ttl_trace_data_entry_type_vals[] = { |
210 | | { TTL_BUS_DATA_ENTRY, "Bus Data Entry" }, |
211 | | { TTL_COMMAND_ENTRY, "Command Entry" }, |
212 | | { TTL_BUS_RESERVED1_ENTRY, "Reserved" }, |
213 | | { TTL_JOURNAL_ENTRY, "Journal Entry" }, |
214 | | { TTL_SEGMENTED_MESSAGE_ENTRY, "Segmented Message Entry" }, |
215 | | { TTL_SEND_FRAME_ENTRY, "Send-Frame Entry" }, |
216 | | { TTL_PADDING_ENTRY, "Padding Entry" }, |
217 | | { TTL_SOFTWARE_DATA_ENTRY, "Software Data Entry" }, |
218 | | { TTL_DROPPED_FRAMES_ENTRY, "Dropped Frames Entry" }, |
219 | | { 0, NULL } |
220 | | }; |
221 | | |
222 | | static const value_string hf_ttl_addr_cascade_vals[] = { |
223 | | { 0, "Logger" }, |
224 | | { 1, "TAP 1" }, |
225 | | { 2, "TAP 2" }, |
226 | | { 3, "TAP 3" }, |
227 | | { 4, "TAP 4" }, |
228 | | { 5, "TAP 5" }, |
229 | | { 6, "TAP 6" }, |
230 | | { 7, "TAP 7" }, |
231 | | { 0, NULL } |
232 | | }; |
233 | | |
234 | | static const value_string hf_ttl_addr_logger_device_vals[] = { |
235 | | { TTL_LOGGER_DEVICE_FPGA, "FPGA" }, |
236 | | { TTL_LOGGER_DEVICE_ATOM, "Atom" }, |
237 | | { TTL_LOGGER_DEVICE_TRICORE1, "Tricore 1" }, |
238 | | { TTL_LOGGER_DEVICE_TRICORE2, "Tricore 2" }, |
239 | | { TTL_LOGGER_DEVICE_TRICORE3, "Tricore 3" }, |
240 | | { TTL_LOGGER_DEVICE_TDA4x, "TDA 4x" }, |
241 | | { TTL_LOGGER_DEVICE_FPGAA, "FPGA A" }, |
242 | | { TTL_LOGGER_DEVICE_FPGAB, "FPGA B" }, |
243 | | { 15, "Not allowed" }, |
244 | | { 0, NULL } |
245 | | }; |
246 | | |
247 | | static const value_string hf_ttl_addr_tap_device_vals[] = { |
248 | | { TTL_TAP_DEVICE_PT15_FPGA, "PT-15B/PT15-CG FPGA" }, |
249 | | { TTL_TAP_DEVICE_PT15_HPS_LINUX, "PT-15B/PT15-CG HPS Linux" }, |
250 | | { TTL_TAP_DEVICE_PT20_FPGA, "PT-20MG FPGA" }, |
251 | | { TTL_TAP_DEVICE_PT20_HPS_LINUX, "PT-20MG HPS Linux" }, |
252 | | { TTL_TAP_DEVICE_PC3_FPGA, "PC-3 FPGA" }, |
253 | | { TTL_TAP_DEVICE_PC3_HPS_LINUX, "PC-3 HPS Linux" }, |
254 | | { TTL_TAP_DEVICE_PC3_AURIX, "PC-3 Aurix" }, |
255 | | { TTL_TAP_DEVICE_ZELDA_CANFD, "Zelda CAN-FD" }, |
256 | | { TTL_TAP_DEVICE_ZELDA_LIN, "Zelda LIN" }, |
257 | | { TTL_TAP_DEVICE_ILLEGAL, "Not allowed" }, |
258 | | { 0, NULL } |
259 | | }; |
260 | | |
261 | | static const value_string hf_ttl_addr_logger_fpga_function_vals[] = { |
262 | | { TTL_LOGGER_FPGA_FUNCTION_CORE, "Core" }, |
263 | | { TTL_LOGGER_FPGA_FUNCTION_EXT0_MOST25, "MOST25" }, |
264 | | { TTL_LOGGER_FPGA_FUNCTION_EXT0_MOST150, "MOST150" }, |
265 | | { TTL_LOGGER_FPGA_FUNCTION_ETHA_CH1, "ETH A (CH1)" }, |
266 | | { TTL_LOGGER_FPGA_FUNCTION_ETHB_CH1, "ETH B (CH1)" }, |
267 | | { TTL_LOGGER_FPGA_FUNCTION_FLEXRAY1A, "FlexRay 1A" }, |
268 | | { TTL_LOGGER_FPGA_FUNCTION_FLEXRAY1B, "FlexRay 1B" }, |
269 | | { TTL_LOGGER_FPGA_FUNCTION_FLEXRAY2A, "FlexRay 2A" }, |
270 | | { TTL_LOGGER_FPGA_FUNCTION_FLEXRAY2B, "FlexRay 2B" }, |
271 | | { TTL_LOGGER_FPGA_FUNCTION_FLEXRAY3A, "FlexRay 3A" }, |
272 | | { TTL_LOGGER_FPGA_FUNCTION_FLEXRAY3B, "FlexRay 3B" }, |
273 | | { TTL_LOGGER_FPGA_FUNCTION_CAN1, "CAN 1" }, |
274 | | { TTL_LOGGER_FPGA_FUNCTION_CAN2, "CAN 2" }, |
275 | | { TTL_LOGGER_FPGA_FUNCTION_CAN3, "CAN 3" }, |
276 | | { TTL_LOGGER_FPGA_FUNCTION_CAN4, "CAN 4" }, |
277 | | { TTL_LOGGER_FPGA_FUNCTION_CAN12, "CAN 12" }, |
278 | | { TTL_LOGGER_FPGA_FUNCTION_CAN6, "CAN 6" }, |
279 | | { TTL_LOGGER_FPGA_FUNCTION_CAN7, "CAN 7" }, |
280 | | { TTL_LOGGER_FPGA_FUNCTION_CAN10, "CAN 10" }, |
281 | | { TTL_LOGGER_FPGA_FUNCTION_CAN11, "CAN 11" }, |
282 | | { TTL_LOGGER_FPGA_FUNCTION_CAN8, "CAN 8" }, |
283 | | { TTL_LOGGER_FPGA_FUNCTION_CAN5, "CAN 5" }, |
284 | | { TTL_LOGGER_FPGA_FUNCTION_CAN9, "CAN 9" }, |
285 | | { TTL_LOGGER_FPGA_FUNCTION_EXT1_MOST25, "MOST25 (Expansion Slot 1)" }, |
286 | | { TTL_LOGGER_FPGA_FUNCTION_LIN10, "LIN 10" }, |
287 | | { TTL_LOGGER_FPGA_FUNCTION_LIN3, "LIN 3" }, |
288 | | { TTL_LOGGER_FPGA_FUNCTION_LIN5, "LIN 5" }, |
289 | | { TTL_LOGGER_FPGA_FUNCTION_LIN4, "LIN 4" }, |
290 | | { TTL_LOGGER_FPGA_FUNCTION_LIN11, "LIN 11" }, |
291 | | { TTL_LOGGER_FPGA_FUNCTION_LIN1, "LIN 1" }, |
292 | | { TTL_LOGGER_FPGA_FUNCTION_LIN7, "LIN 7" }, |
293 | | { TTL_LOGGER_FPGA_FUNCTION_LIN8, "LIN 8" }, |
294 | | { TTL_LOGGER_FPGA_FUNCTION_LIN12, "LIN 12" }, |
295 | | { TTL_LOGGER_FPGA_FUNCTION_LIN6, "LIN 6" }, |
296 | | { TTL_LOGGER_FPGA_FUNCTION_LIN2, "LIN 2" }, |
297 | | { TTL_LOGGER_FPGA_FUNCTION_LIN9, "LIN 9" }, |
298 | | { TTL_LOGGER_FPGA_FUNCTION_CAN13, "CAN 13" }, |
299 | | { TTL_LOGGER_FPGA_FUNCTION_CAN14, "CAN 14" }, |
300 | | { TTL_LOGGER_FPGA_FUNCTION_CAN15, "CAN 15" }, |
301 | | { TTL_LOGGER_FPGA_FUNCTION_CAN16, "CAN 16" }, |
302 | | { TTL_LOGGER_FPGA_FUNCTION_CAN17, "CAN 17" }, |
303 | | { TTL_LOGGER_FPGA_FUNCTION_CAN18, "CAN 18" }, |
304 | | { TTL_LOGGER_FPGA_FUNCTION_CAN19, "CAN 19" }, |
305 | | { TTL_LOGGER_FPGA_FUNCTION_CAN20, "CAN 20" }, |
306 | | { TTL_LOGGER_FPGA_FUNCTION_CAN21, "CAN 21" }, |
307 | | { TTL_LOGGER_FPGA_FUNCTION_CAN22, "CAN 22" }, |
308 | | { TTL_LOGGER_FPGA_FUNCTION_CAN23, "CAN 23" }, |
309 | | { TTL_LOGGER_FPGA_FUNCTION_CAN24, "CAN 24" }, |
310 | | { TTL_LOGGER_FPGA_FUNCTION_ETHA_CH2, "ETH A (CH2)" }, |
311 | | { TTL_LOGGER_FPGA_FUNCTION_ETHB_CH2, "ETH B (CH2)" }, |
312 | | { TTL_LOGGER_FPGA_FUNCTION_ETHA_CH3, "ETH A (CH3)" }, |
313 | | { TTL_LOGGER_FPGA_FUNCTION_ETHB_CH3, "ETH B (CH3)" }, |
314 | | { TTL_LOGGER_FPGA_FUNCTION_CAN_EXT_BOARD, "CAN Extension Board" }, |
315 | | { TTL_LOGGER_FPGA_FUNCTION_RESERVED1, "Reserved" }, |
316 | | { TTL_LOGGER_FPGA_FUNCTION_SLOT_CTRL, "SLOT_CTRL" }, |
317 | | { TTL_LOGGER_FPGA_FUNCTION_DRAM, "DRAM" }, |
318 | | { TTL_LOGGER_FPGA_FUNCTION_SINK, "Sink" }, |
319 | | { TTL_LOGGER_FPGA_FUNCTION_POWER_AGENT, "Power Agent" }, |
320 | | { TTL_LOGGER_FPGA_FUNCTION_PKT_GENERATOR, "Packet Generator" }, |
321 | | { 0, NULL } |
322 | | }; |
323 | | |
324 | | static const value_string hf_ttl_addr_logger_atom_function_vals[] = { |
325 | | { TTL_LOGGER_ATOM_FUNCTION_FRAME_DEVICE, "Frame Device" }, |
326 | | { TTL_LOGGER_ATOM_FUNCTION_CHARACTER_DEVICE, "Character Device" }, |
327 | | { TTL_LOGGER_ATOM_FUNCTION_ATMEL, "Atmel" }, |
328 | | { TTL_LOGGER_ATOM_FUNCTION_ETHA, "ETH-A" }, |
329 | | { TTL_LOGGER_ATOM_FUNCTION_ETHB, "ETH-B" }, |
330 | | { 0, NULL } |
331 | | }; |
332 | | |
333 | | static const value_string hf_ttl_addr_logger_tricore1_function_vals[] = { |
334 | | { TTL_LOGGER_TRICORE1_FUNCTION_CORE, "Core" }, |
335 | | { TTL_LOGGER_TRICORE1_FUNCTION_FLEXRAY1A, "FlexRay 1A" }, |
336 | | { TTL_LOGGER_TRICORE1_FUNCTION_FLEXRAY1B, "FlexRay 1B" }, |
337 | | { TTL_LOGGER_TRICORE1_FUNCTION_CAN1, "CAN 1" }, |
338 | | { TTL_LOGGER_TRICORE1_FUNCTION_CAN2, "CAN 2" }, |
339 | | { TTL_LOGGER_TRICORE1_FUNCTION_CAN3, "CAN 3" }, |
340 | | { TTL_LOGGER_TRICORE1_FUNCTION_CAN4, "CAN 4" }, |
341 | | { TTL_LOGGER_TRICORE1_FUNCTION_ANALOGOUT1, "Analog Out 1" }, |
342 | | { TTL_LOGGER_TRICORE1_FUNCTION_DIGITALOUT6, "Digital Out 6" }, |
343 | | { TTL_LOGGER_TRICORE1_FUNCTION_DIGITALOUT5, "Digital Out 5" }, |
344 | | { TTL_LOGGER_TRICORE1_FUNCTION_RESERVED1, "Reserved" }, |
345 | | { TTL_LOGGER_TRICORE1_FUNCTION_RESERVED2, "Reserved" }, |
346 | | { TTL_LOGGER_TRICORE1_FUNCTION_SERIAL1, "RS232 1" }, |
347 | | { TTL_LOGGER_TRICORE1_FUNCTION_SERIAL2, "RS232 2" }, |
348 | | { TTL_LOGGER_TRICORE1_FUNCTION_ANALOGIN6, "Analog In 6" }, |
349 | | { TTL_LOGGER_TRICORE1_FUNCTION_ANALOGIN8, "Analog In 8" }, |
350 | | { TTL_LOGGER_TRICORE1_FUNCTION_ANALOGIN14, "Analog In 14" }, |
351 | | { TTL_LOGGER_TRICORE1_FUNCTION_ANALOGIN15, "Analog In 15" }, |
352 | | { TTL_LOGGER_TRICORE1_FUNCTION_ANALOGIN11, "Analog In 11" }, |
353 | | { TTL_LOGGER_TRICORE1_FUNCTION_DIGITALIN8, "Digital In 8" }, |
354 | | { TTL_LOGGER_TRICORE1_FUNCTION_DIGITALIN10, "Digital In 10" }, |
355 | | { TTL_LOGGER_TRICORE1_FUNCTION_DIGITALIN12, "Digital In 12" }, |
356 | | { TTL_LOGGER_TRICORE1_FUNCTION_DIGITALIN13, "Digital In 13" }, |
357 | | { TTL_LOGGER_TRICORE1_FUNCTION_DIGITALIN11, "Digital In 11" }, |
358 | | { TTL_LOGGER_TRICORE1_FUNCTION_KL15IN, "KL15 Input" }, |
359 | | { TTL_LOGGER_TRICORE1_FUNCTION_KL30IN, "KL30 Input" }, |
360 | | { TTL_LOGGER_TRICORE1_FUNCTION_FLEXRAY1, "FlexRay 1" }, |
361 | | { TTL_LOGGER_TRICORE1_FUNCTION_FLEXRAY1AB, "FlexRay 1AB" }, |
362 | | { 0, NULL } |
363 | | }; |
364 | | |
365 | | static const value_string hf_ttl_addr_logger_tricore2_function_vals[] = { |
366 | | { TTL_LOGGER_TRICORE2_FUNCTION_CORE, "Core" }, |
367 | | { TTL_LOGGER_TRICORE2_FUNCTION_FLEXRAY2A, "FlexRay 2A" }, |
368 | | { TTL_LOGGER_TRICORE2_FUNCTION_FLEXRAY2B, "FlexRay 2B" }, |
369 | | { TTL_LOGGER_TRICORE2_FUNCTION_CAN12, "CAN 12" }, |
370 | | { TTL_LOGGER_TRICORE2_FUNCTION_CAN6, "CAN 6" }, |
371 | | { TTL_LOGGER_TRICORE2_FUNCTION_CAN7, "CAN 7" }, |
372 | | { TTL_LOGGER_TRICORE2_FUNCTION_CAN10, "CAN 10" }, |
373 | | { TTL_LOGGER_TRICORE2_FUNCTION_ANALOGOUT2, "Analog Out 2" }, |
374 | | { TTL_LOGGER_TRICORE2_FUNCTION_DIGITALOUT4, "Digital Out 4" }, |
375 | | { TTL_LOGGER_TRICORE2_FUNCTION_DIGITALOUT3, "Digital Out 3" }, |
376 | | { TTL_LOGGER_TRICORE2_FUNCTION_RESERVED1, "Reserved" }, |
377 | | { TTL_LOGGER_TRICORE2_FUNCTION_RESERVED2, "Reserved" }, |
378 | | { TTL_LOGGER_TRICORE2_FUNCTION_SERIAL3, "RS232 3" }, |
379 | | { TTL_LOGGER_TRICORE2_FUNCTION_SERIAL4, "RS232 4" }, |
380 | | { TTL_LOGGER_TRICORE2_FUNCTION_ANALOGIN4, "Analog In 4" }, |
381 | | { TTL_LOGGER_TRICORE2_FUNCTION_ANALOGIN3, "Analog In 3" }, |
382 | | { TTL_LOGGER_TRICORE2_FUNCTION_ANALOGIN5, "Analog In 5" }, |
383 | | { TTL_LOGGER_TRICORE2_FUNCTION_ANALOGIN9, "Analog In 9" }, |
384 | | { TTL_LOGGER_TRICORE2_FUNCTION_ANALOGIN7, "Analog In 7" }, |
385 | | { TTL_LOGGER_TRICORE2_FUNCTION_DIGITALIN14, "Digital In 14" }, |
386 | | { TTL_LOGGER_TRICORE2_FUNCTION_DIGITALIN9, "Digital In 9" }, |
387 | | { TTL_LOGGER_TRICORE2_FUNCTION_DIGITALIN15, "Digital In 15" }, |
388 | | { TTL_LOGGER_TRICORE2_FUNCTION_DIGITALIN7, "Digital In 7" }, |
389 | | { TTL_LOGGER_TRICORE2_FUNCTION_DIGITALIN6, "Digital In 6" }, |
390 | | { TTL_LOGGER_TRICORE2_FUNCTION_FLEXRAY2, "FlexRay 2" }, |
391 | | { TTL_LOGGER_TRICORE2_FUNCTION_FLEXRAY2AB, "FlexRay 2AB" }, |
392 | | { 0, NULL } |
393 | | }; |
394 | | |
395 | | static const value_string hf_ttl_addr_logger_tricore3_function_vals[] = { |
396 | | { TTL_LOGGER_TRICORE3_FUNCTION_CORE, "Core" }, |
397 | | { TTL_LOGGER_TRICORE3_FUNCTION_FLEXRAY3A, "FlexRay 3A" }, |
398 | | { TTL_LOGGER_TRICORE3_FUNCTION_FLEXRAY3B, "FlexRay 3B" }, |
399 | | { TTL_LOGGER_TRICORE3_FUNCTION_CAN11, "CAN 11" }, |
400 | | { TTL_LOGGER_TRICORE3_FUNCTION_CAN8, "CAN 8" }, |
401 | | { TTL_LOGGER_TRICORE3_FUNCTION_CAN5, "CAN 5" }, |
402 | | { TTL_LOGGER_TRICORE3_FUNCTION_CAN9, "CAN 9" }, |
403 | | { TTL_LOGGER_TRICORE3_FUNCTION_ANALOGOUT3, "Analog Out 3" }, |
404 | | { TTL_LOGGER_TRICORE3_FUNCTION_DIGITALOUT2, "Digital Out 2" }, |
405 | | { TTL_LOGGER_TRICORE3_FUNCTION_DIGITALOUT1, "Digital Out 1" }, |
406 | | { TTL_LOGGER_TRICORE3_FUNCTION_RESERVED1, "Reserved" }, |
407 | | { TTL_LOGGER_TRICORE3_FUNCTION_RESERVED2, "Reserved" }, |
408 | | { TTL_LOGGER_TRICORE3_FUNCTION_SERIAL5, "RS232 5" }, |
409 | | { TTL_LOGGER_TRICORE3_FUNCTION_SERIAL6, "RS232 6" }, |
410 | | { TTL_LOGGER_TRICORE3_FUNCTION_ANALOGIN1, "Analog In 1" }, |
411 | | { TTL_LOGGER_TRICORE3_FUNCTION_ANALOGIN2, "Analog In 2" }, |
412 | | { TTL_LOGGER_TRICORE3_FUNCTION_ANALOGIN10, "Analog In 10" }, |
413 | | { TTL_LOGGER_TRICORE3_FUNCTION_ANALOGIN12, "Analog In 12" }, |
414 | | { TTL_LOGGER_TRICORE3_FUNCTION_ANALOGIN13, "Analog In 13" }, |
415 | | { TTL_LOGGER_TRICORE3_FUNCTION_DIGITALIN5, "Digital In 5" }, |
416 | | { TTL_LOGGER_TRICORE3_FUNCTION_DIGITALIN4, "Digital In 4" }, |
417 | | { TTL_LOGGER_TRICORE3_FUNCTION_DIGITALIN3, "Digital In 3" }, |
418 | | { TTL_LOGGER_TRICORE3_FUNCTION_DIGITALIN2, "Digital In 2" }, |
419 | | { TTL_LOGGER_TRICORE3_FUNCTION_DIGITALIN1, "Digital In 1" }, |
420 | | { TTL_LOGGER_TRICORE3_FUNCTION_FLEXRAY3, "FlexRay 3" }, |
421 | | { TTL_LOGGER_TRICORE3_FUNCTION_FLEXRAY3AB, "FlexRay 3AB" }, |
422 | | { 0, NULL } |
423 | | }; |
424 | | |
425 | | static const value_string hf_ttl_addr_logger_tda4x_function_vals[] = { |
426 | | { TTL_LOGGER_TDA4x_FUNCTION_CORE, "Core" }, |
427 | | { TTL_LOGGER_TDA4x_FUNCTION_CHARACTER_DEVICE, "Character Device" }, |
428 | | { TTL_LOGGER_TDA4x_FUNCTION_CAN1, "CAN 1" }, |
429 | | { TTL_LOGGER_TDA4x_FUNCTION_CAN2, "CAN 2" }, |
430 | | { TTL_LOGGER_TDA4x_FUNCTION_CAN3, "CAN 3" }, |
431 | | { TTL_LOGGER_TDA4x_FUNCTION_CAN4, "CAN 4" }, |
432 | | { TTL_LOGGER_TDA4x_FUNCTION_CAN5, "CAN 5" }, |
433 | | { TTL_LOGGER_TDA4x_FUNCTION_CAN6, "CAN 6" }, |
434 | | { TTL_LOGGER_TDA4x_FUNCTION_CAN7, "CAN 7" }, |
435 | | { TTL_LOGGER_TDA4x_FUNCTION_CAN8, "CAN 8" }, |
436 | | { TTL_LOGGER_TDA4x_FUNCTION_CAN9, "CAN 9" }, |
437 | | { TTL_LOGGER_TDA4x_FUNCTION_CAN10, "CAN 10" }, |
438 | | { TTL_LOGGER_TDA4x_FUNCTION_CAN11, "CAN 11" }, |
439 | | { TTL_LOGGER_TDA4x_FUNCTION_SERIAL1, "RS232 1" }, |
440 | | { TTL_LOGGER_TDA4x_FUNCTION_SERIAL2, "RS232 2" }, |
441 | | { TTL_LOGGER_TDA4x_FUNCTION_SERIAL3, "RS232 3" }, |
442 | | { TTL_LOGGER_TDA4x_FUNCTION_SERIAL4, "RS232 4" }, |
443 | | { TTL_LOGGER_TDA4x_FUNCTION_SERIAL5, "RS232 5" }, |
444 | | { TTL_LOGGER_TDA4x_FUNCTION_SERIAL6, "RS232 6" }, |
445 | | { TTL_LOGGER_TDA4x_FUNCTION_ANALOGIN1, "Analog In 1" }, |
446 | | { TTL_LOGGER_TDA4x_FUNCTION_ANALOGIN2, "Analog In 2" }, |
447 | | { TTL_LOGGER_TDA4x_FUNCTION_ANALOGIN3, "Analog In 3" }, |
448 | | { TTL_LOGGER_TDA4x_FUNCTION_ANALOGIN4, "Analog In 4" }, |
449 | | { TTL_LOGGER_TDA4x_FUNCTION_ANALOGIN5, "Analog In 5" }, |
450 | | { TTL_LOGGER_TDA4x_FUNCTION_ANALOGIN6, "Analog In 6" }, |
451 | | { TTL_LOGGER_TDA4x_FUNCTION_ANALOGOUT1, "Analog Out 1" }, |
452 | | { TTL_LOGGER_TDA4x_FUNCTION_ANALOGOUT2, "Analog Out 2" }, |
453 | | { TTL_LOGGER_TDA4x_FUNCTION_KL15IN, "KL15 Input" }, |
454 | | { TTL_LOGGER_TDA4x_FUNCTION_KL30IN, "KL30 Input" }, |
455 | | { TTL_LOGGER_TDA4x_FUNCTION_FLEXRAY1A, "FlexRay 1A" }, |
456 | | { TTL_LOGGER_TDA4x_FUNCTION_FLEXRAY1B, "FlexRay 1B" }, |
457 | | { TTL_LOGGER_TDA4x_FUNCTION_FLEXRAY1AB, "FlexRay 1AB" }, |
458 | | { TTL_LOGGER_TDA4x_FUNCTION_CAN12, "CAN 12" }, |
459 | | { TTL_LOGGER_TDA4x_FUNCTION_CAN13, "CAN 13" }, |
460 | | { TTL_LOGGER_TDA4x_FUNCTION_CAN14, "CAN 14" }, |
461 | | { TTL_LOGGER_TDA4x_FUNCTION_SERIAL7, "RS232 7" }, |
462 | | { TTL_LOGGER_TDA4x_FUNCTION_SERIAL8, "RS232 8" }, |
463 | | { TTL_LOGGER_TDA4x_FUNCTION_SERIAL9, "RS232 9" }, |
464 | | { TTL_LOGGER_TDA4x_FUNCTION_SERIAL10, "RS232 10" }, |
465 | | { 0, NULL } |
466 | | }; |
467 | | |
468 | | static const value_string hf_ttl_addr_logger_fpgaa_function_vals[] = { |
469 | | { TTL_LOGGER_FPGAA_FUNCTION_CORE, "Core" }, |
470 | | { TTL_LOGGER_FPGAA_FUNCTION_CAN1, "CAN 1" }, |
471 | | { TTL_LOGGER_FPGAA_FUNCTION_CAN2, "CAN 2" }, |
472 | | { TTL_LOGGER_FPGAA_FUNCTION_CAN3, "CAN 3" }, |
473 | | { TTL_LOGGER_FPGAA_FUNCTION_CAN4, "CAN 4" }, |
474 | | { TTL_LOGGER_FPGAA_FUNCTION_CAN5, "CAN 5" }, |
475 | | { TTL_LOGGER_FPGAA_FUNCTION_CAN6, "CAN 6" }, |
476 | | { TTL_LOGGER_FPGAA_FUNCTION_CAN7, "CAN 7" }, |
477 | | { TTL_LOGGER_FPGAA_FUNCTION_CAN8, "CAN 8" }, |
478 | | { TTL_LOGGER_FPGAA_FUNCTION_CAN9, "CAN 9" }, |
479 | | { TTL_LOGGER_FPGAA_FUNCTION_CAN10, "CAN 10" }, |
480 | | { TTL_LOGGER_FPGAA_FUNCTION_CAN11, "CAN 11" }, |
481 | | { TTL_LOGGER_FPGAA_FUNCTION_LIN1, "LIN 1" }, |
482 | | { TTL_LOGGER_FPGAA_FUNCTION_LIN2, "LIN 2" }, |
483 | | { TTL_LOGGER_FPGAA_FUNCTION_LIN3, "LIN 3" }, |
484 | | { TTL_LOGGER_FPGAA_FUNCTION_LIN4, "LIN 4" }, |
485 | | { TTL_LOGGER_FPGAA_FUNCTION_LIN5, "LIN 5" }, |
486 | | { TTL_LOGGER_FPGAA_FUNCTION_LIN6, "LIN 6" }, |
487 | | { TTL_LOGGER_FPGAA_FUNCTION_LIN7, "LIN 7" }, |
488 | | { TTL_LOGGER_FPGAA_FUNCTION_LIN8, "LIN 8" }, |
489 | | { TTL_LOGGER_FPGAA_FUNCTION_LIN9, "LIN 9" }, |
490 | | { TTL_LOGGER_FPGAA_FUNCTION_LIN10, "LIN 10" }, |
491 | | { TTL_LOGGER_FPGAA_FUNCTION_LIN11, "LIN 11" }, |
492 | | { TTL_LOGGER_FPGAA_FUNCTION_LIN12, "LIN 12" }, |
493 | | { TTL_LOGGER_FPGAA_FUNCTION_LIN13, "LIN 13" }, |
494 | | { TTL_LOGGER_FPGAA_FUNCTION_LIN14, "LIN 14" }, |
495 | | { TTL_LOGGER_FPGAA_FUNCTION_LIN15, "LIN 15" }, |
496 | | { TTL_LOGGER_FPGAA_FUNCTION_LIN16, "LIN 16" }, |
497 | | { TTL_LOGGER_FPGAA_FUNCTION_FLEXRAY1A, "FlexRay 1A" }, |
498 | | { TTL_LOGGER_FPGAA_FUNCTION_FLEXRAY1B, "FlexRay 1B" }, |
499 | | { TTL_LOGGER_FPGAA_FUNCTION_SERIAL1, "RS232 1" }, |
500 | | { TTL_LOGGER_FPGAA_FUNCTION_SERIAL2, "RS232 2" }, |
501 | | { TTL_LOGGER_FPGAA_FUNCTION_SERIAL3, "RS232 3" }, |
502 | | { TTL_LOGGER_FPGAA_FUNCTION_SERIAL4, "RS232 4" }, |
503 | | { TTL_LOGGER_FPGAA_FUNCTION_SERIAL5, "RS232 5" }, |
504 | | { TTL_LOGGER_FPGAA_FUNCTION_SERIAL6, "RS232 6" }, |
505 | | { TTL_LOGGER_FPGAA_FUNCTION_SERIAL7, "RS232 7" }, |
506 | | { TTL_LOGGER_FPGAA_FUNCTION_SERIAL8, "RS232 8" }, |
507 | | { TTL_LOGGER_FPGAA_FUNCTION_SERIAL9, "RS232 9" }, |
508 | | { TTL_LOGGER_FPGAA_FUNCTION_SERIAL10, "RS232 10" }, |
509 | | { TTL_LOGGER_FPGAA_FUNCTION_CAN12, "CAN 12" }, |
510 | | { TTL_LOGGER_FPGAA_FUNCTION_CAN13, "CAN 13" }, |
511 | | { TTL_LOGGER_FPGAA_FUNCTION_CAN14, "CAN 14" }, |
512 | | { TTL_LOGGER_FPGAA_FUNCTION_SLOT_CTRL, "SLOT_CTRL" }, |
513 | | { TTL_LOGGER_FPGAA_FUNCTION_DRAM, "DRAM" }, |
514 | | { TTL_LOGGER_FPGAA_FUNCTION_SINK, "Sink" }, |
515 | | { TTL_LOGGER_FPGAA_FUNCTION_POWER_AGENT, "Power Agent" }, |
516 | | { TTL_LOGGER_FPGAA_FUNCTION_PKT_GENERATOR, "Packet Generator" }, |
517 | | { 0, NULL } |
518 | | }; |
519 | | |
520 | | static const value_string hf_ttl_addr_logger_fpgab_function_vals[] = { |
521 | | { TTL_LOGGER_FPGAB_FUNCTION_ETHA_CH1, "Ethernet A (CH1)" }, |
522 | | { TTL_LOGGER_FPGAB_FUNCTION_ETHB_CH1, "Ethernet B (CH1)" }, |
523 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH1a_CH1, "Automotive Ethernet 1a (CH1)" }, |
524 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH1b_CH1, "Automotive Ethernet 1b (CH1)" }, |
525 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH2a_CH1, "Automotive Ethernet 2a (CH1)" }, |
526 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH2b_CH1, "Automotive Ethernet 2b (CH1)" }, |
527 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH3a_CH1, "Automotive Ethernet 3a (CH1)" }, |
528 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH3b_CH1, "Automotive Ethernet 3b (CH1)" }, |
529 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH4a_CH1, "Automotive Ethernet 4a (CH1)" }, |
530 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH4b_CH1, "Automotive Ethernet 4b (CH1)" }, |
531 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH5a_CH1, "Automotive Ethernet 5a (CH1)" }, |
532 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH5b_CH1, "Automotive Ethernet 5b (CH1)" }, |
533 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH6a_CH1, "Automotive Ethernet 6a (CH1)" }, |
534 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH6b_CH1, "Automotive Ethernet 6b (CH1)" }, |
535 | | { TTL_LOGGER_FPGAB_FUNCTION_ETHA_CH2, "Ethernet A (CH2)" }, |
536 | | { TTL_LOGGER_FPGAB_FUNCTION_ETHB_CH2, "Ethernet B (CH2)" }, |
537 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH1a_CH2, "Automotive Ethernet 1a (CH2)" }, |
538 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH1b_CH2, "Automotive Ethernet 1b (CH2)" }, |
539 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH2a_CH2, "Automotive Ethernet 2a (CH2)" }, |
540 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH2b_CH2, "Automotive Ethernet 2b (CH2)" }, |
541 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH3a_CH2, "Automotive Ethernet 3a (CH2)" }, |
542 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH3b_CH2, "Automotive Ethernet 3b (CH2)" }, |
543 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH4a_CH2, "Automotive Ethernet 4a (CH2)" }, |
544 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH4b_CH2, "Automotive Ethernet 4b (CH2)" }, |
545 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH5a_CH2, "Automotive Ethernet 5a (CH2)" }, |
546 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH5b_CH2, "Automotive Ethernet 5b (CH2)" }, |
547 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH6a_CH2, "Automotive Ethernet 6a (CH2)" }, |
548 | | { TTL_LOGGER_FPGAB_FUNCTION_AETH6b_CH2, "Automotive Ethernet 6b (CH2)" }, |
549 | | { 0, NULL } |
550 | | }; |
551 | | |
552 | | static const value_string hf_ttl_addr_pt15_fpga_function_vals[] = { |
553 | | { TTL_PT15_FPGA_FUNCTION_CORE, "Core" }, |
554 | | { TTL_PT15_FPGA_FUNCTION_CAN1, "CAN 1" }, |
555 | | { TTL_PT15_FPGA_FUNCTION_CAN2, "CAN 2" }, |
556 | | { TTL_PT15_FPGA_FUNCTION_BrdR1a, "100BASE-T1 1a (Master)" }, |
557 | | { TTL_PT15_FPGA_FUNCTION_BrdR1b, "100BASE-T1 1b (Slave)" }, |
558 | | { TTL_PT15_FPGA_FUNCTION_BrdR2a, "100BASE-T1 2a (Master)" }, |
559 | | { TTL_PT15_FPGA_FUNCTION_BrdR2b, "100BASE-T1 2b (Slave)" }, |
560 | | { TTL_PT15_FPGA_FUNCTION_BrdR3a, "100BASE-T1 3a (Master)" }, |
561 | | { TTL_PT15_FPGA_FUNCTION_BrdR3b, "100BASE-T1 3b (Slave)" }, |
562 | | { TTL_PT15_FPGA_FUNCTION_BrdR4a, "100BASE-T1 4a (Master)" }, |
563 | | { TTL_PT15_FPGA_FUNCTION_BrdR4b, "100BASE-T1 4b (Slave)" }, |
564 | | { TTL_PT15_FPGA_FUNCTION_BrdR5a, "100BASE-T1 5a (Master)" }, |
565 | | { TTL_PT15_FPGA_FUNCTION_BrdR5b, "100BASE-T1 5b (Slave)" }, |
566 | | { TTL_PT15_FPGA_FUNCTION_BrdR6a, "100BASE-T1 6a (Master)" }, |
567 | | { TTL_PT15_FPGA_FUNCTION_BrdR6b, "100BASE-T1 6b (Slave)" }, |
568 | | { TTL_PT15_FPGA_FUNCTION_MDIO, "MDIO" }, |
569 | | { 0, NULL } |
570 | | }; |
571 | | |
572 | | static const value_string hf_ttl_addr_pt20_fpga_function_vals[] = { |
573 | | { TTL_PT20_FPGA_FUNCTION_CORE, "Core" }, |
574 | | { TTL_PT20_FPGA_FUNCTION_CAN1, "CAN 1" }, |
575 | | { TTL_PT20_FPGA_FUNCTION_CAN2, "CAN 2" }, |
576 | | { TTL_PT20_FPGA_FUNCTION_CAN3, "CAN 3" }, |
577 | | { TTL_PT20_FPGA_FUNCTION_CAN4, "CAN 4" }, |
578 | | { TTL_PT20_FPGA_FUNCTION_CAN5, "CAN 5" }, |
579 | | { TTL_PT20_FPGA_FUNCTION_GbEth1a, "1000BASE-T1 1a (Master)" }, |
580 | | { TTL_PT20_FPGA_FUNCTION_GbEth1b, "1000BASE-T1 1b (Slave)" }, |
581 | | { TTL_PT20_FPGA_FUNCTION_GbEth2a, "1000BASE-T1 2a (Master)" }, |
582 | | { TTL_PT20_FPGA_FUNCTION_GbEth2b, "1000BASE-T1 2b (Slave)" }, |
583 | | { TTL_PT20_FPGA_FUNCTION_GbEth3a, "1000BASE-T1 3a (Master)" }, |
584 | | { TTL_PT20_FPGA_FUNCTION_GbEth3b, "1000BASE-T1 3b (Slave)" }, |
585 | | { TTL_PT20_FPGA_FUNCTION_MDIO, "MDIO" }, |
586 | | { 0, NULL } |
587 | | }; |
588 | | |
589 | | static const value_string hf_ttl_addr_pc3_fpga_function_vals[] = { |
590 | | { TTL_PC3_FPGA_FUNCTION_CORE, "Core" }, |
591 | | { TTL_PC3_FPGA_FUNCTION_BrdR1a, "BroadR-Reach 1a (Master)" }, |
592 | | { TTL_PC3_FPGA_FUNCTION_BrdR1b, "BroadR-Reach 1b (Slave)" }, |
593 | | { 0, NULL } |
594 | | }; |
595 | | |
596 | | static const value_string hf_ttl_addr_pc3_aurix_function_vals[] = { |
597 | | { TTL_PC3_AURIX_FUNCTION_CORE, "Core" }, |
598 | | { TTL_PC3_AURIX_FUNCTION_CAN1, "CAN 1" }, |
599 | | { TTL_PC3_AURIX_FUNCTION_CAN2, "CAN 2" }, |
600 | | { TTL_PC3_AURIX_FUNCTION_CAN3, "CAN 3" }, |
601 | | { TTL_PC3_AURIX_FUNCTION_CAN4, "CAN 4" }, |
602 | | { TTL_PC3_AURIX_FUNCTION_FLEXRAY1A, "FlexRay 1A" }, |
603 | | { TTL_PC3_AURIX_FUNCTION_FLEXRAY1B, "FlexRay 1B" }, |
604 | | { TTL_PC3_AURIX_FUNCTION_FLEXRAY2A, "FlexRay 2A" }, |
605 | | { TTL_PC3_AURIX_FUNCTION_FLEXRAY2B, "FlexRay 2B" }, |
606 | | { TTL_PC3_AURIX_FUNCTION_DIGITALIN1, "Digital In 1" }, |
607 | | { TTL_PC3_AURIX_FUNCTION_DIGITALIN2, "Digital In 2" }, |
608 | | { TTL_PC3_AURIX_FUNCTION_DIGITALOUT1, "Digital Out 1" }, |
609 | | { TTL_PC3_AURIX_FUNCTION_DIGITALOUT2, "Digital Out 2" }, |
610 | | { 0, NULL } |
611 | | }; |
612 | | |
613 | | static const value_string hf_ttl_addr_zelda_canfd_function_vals[] = { |
614 | | { TTL_TAP_DEVICE_ZELDA_CORE, "Core" }, |
615 | | { TTL_TAP_DEVICE_ZELDA_CANFD1, "CAN-FD 1" }, |
616 | | { TTL_TAP_DEVICE_ZELDA_CANFD2, "CAN-FD 2" }, |
617 | | { TTL_TAP_DEVICE_ZELDA_CANFD3, "CAN-FD 3" }, |
618 | | { TTL_TAP_DEVICE_ZELDA_CANFD4, "CAN-FD 4" }, |
619 | | { TTL_TAP_DEVICE_ZELDA_CANFD5, "CAN-FD 5" }, |
620 | | { TTL_TAP_DEVICE_ZELDA_CANFD6, "CAN-FD 6" }, |
621 | | { TTL_TAP_DEVICE_ZELDA_CANFD7, "CAN-FD 7" }, |
622 | | { TTL_TAP_DEVICE_ZELDA_CANFD8, "CAN-FD 8" }, |
623 | | { TTL_TAP_DEVICE_ZELDA_CANFD9, "CAN-FD 9" }, |
624 | | { TTL_TAP_DEVICE_ZELDA_CANFD10, "CAN-FD 10" }, |
625 | | { TTL_TAP_DEVICE_ZELDA_CANFD11, "CAN-FD 11" }, |
626 | | { TTL_TAP_DEVICE_ZELDA_CANFD12, "CAN-FD 12" }, |
627 | | { TTL_TAP_DEVICE_ZELDA_CANFD13, "CAN-FD 13" }, |
628 | | { TTL_TAP_DEVICE_ZELDA_CANFD14, "CAN-FD 14" }, |
629 | | { TTL_TAP_DEVICE_ZELDA_CANFD15, "CAN-FD 15" }, |
630 | | { 0, NULL } |
631 | | }; |
632 | | |
633 | | static const value_string hf_ttl_addr_zelda_lin_function_vals[] = { |
634 | | { TTL_TAP_DEVICE_ZELDA_CORE, "Core" }, |
635 | | { TTL_TAP_DEVICE_ZELDA_LIN1, "LIN 1" }, |
636 | | { TTL_TAP_DEVICE_ZELDA_LIN2, "LIN 2" }, |
637 | | { TTL_TAP_DEVICE_ZELDA_LIN3, "LIN 3" }, |
638 | | { TTL_TAP_DEVICE_ZELDA_LIN4, "LIN 4" }, |
639 | | { TTL_TAP_DEVICE_ZELDA_LIN5, "LIN 5" }, |
640 | | { TTL_TAP_DEVICE_ZELDA_LIN6, "LIN 6" }, |
641 | | { TTL_TAP_DEVICE_ZELDA_LIN7, "LIN 7" }, |
642 | | { TTL_TAP_DEVICE_ZELDA_LIN8, "LIN 8" }, |
643 | | { TTL_TAP_DEVICE_ZELDA_LIN9, "LIN 9" }, |
644 | | { TTL_TAP_DEVICE_ZELDA_LIN10, "LIN 10" }, |
645 | | { TTL_TAP_DEVICE_ZELDA_LIN11, "LIN 11" }, |
646 | | { TTL_TAP_DEVICE_ZELDA_LIN12, "LIN 12" }, |
647 | | { TTL_TAP_DEVICE_ZELDA_LIN13, "LIN 13" }, |
648 | | { TTL_TAP_DEVICE_ZELDA_LIN14, "LIN 14" }, |
649 | | { TTL_TAP_DEVICE_ZELDA_LIN15, "LIN 15" }, |
650 | | { TTL_TAP_DEVICE_ZELDA_LIN16, "LIN 16" }, |
651 | | { TTL_TAP_DEVICE_ZELDA_LIN17, "LIN 17" }, |
652 | | { TTL_TAP_DEVICE_ZELDA_LIN18, "LIN 18" }, |
653 | | { TTL_TAP_DEVICE_ZELDA_LIN19, "LIN 19" }, |
654 | | { TTL_TAP_DEVICE_ZELDA_LIN20, "LIN 20" }, |
655 | | { TTL_TAP_DEVICE_ZELDA_LIN21, "LIN 21" }, |
656 | | { TTL_TAP_DEVICE_ZELDA_LIN22, "LIN 22" }, |
657 | | { TTL_TAP_DEVICE_ZELDA_LIN23, "LIN 23" }, |
658 | | { TTL_TAP_DEVICE_ZELDA_LIN24, "LIN 24" }, |
659 | | { 0, NULL } |
660 | | }; |
661 | | |
662 | | static const true_false_string hf_ttl_trace_data_entry_meta1_frame_duplication_tfs = { |
663 | | "Frame Duplication", |
664 | | "No Frame Duplication" |
665 | | }; |
666 | | |
667 | | static const true_false_string hf_ttl_trace_data_entry_meta1_compressed_format_tfs = { |
668 | | "Compressed (32 bit) Timestamp", |
669 | | "Normal (64 bit) Timestamp" |
670 | | }; |
671 | | |
672 | | static const true_false_string hf_ttl_trace_data_entry_meta1_timestamp_source_tfs = { |
673 | | "Timestamp comes from Source Address component", |
674 | | "Timestamp comes from the FPGA" |
675 | | }; |
676 | | |
677 | | static const value_string hf_ttl_trace_data_entry_ackmode_vals[] = { |
678 | | { 0, "Acknowledgement not used" }, |
679 | | { 1, "Acknowledgement requested" }, |
680 | | { 2, "Request finished: Processing successfully finished" }, |
681 | | { 3, "Request failed: Processing had errors" }, |
682 | | { 4, "Request accepted: Frame received" }, |
683 | | { 5, "Request not accepted: Error in the header processing" }, |
684 | | { 0, NULL } |
685 | | }; |
686 | | |
687 | | static const value_string hf_ttl_trace_data_entry_status_info_can_error_code_vals[] = { |
688 | | { 0, "No Error" }, |
689 | | { 1, "Stuff Error" }, |
690 | | { 2, "Form Error" }, |
691 | | { 3, "Ack Error" }, |
692 | | { 4, "Bit 1 Error" }, |
693 | | { 5, "Bit 0 Error" }, |
694 | | { 6, "CRC Error" }, |
695 | | { 7, "Invalid DLC" }, |
696 | | { 0, NULL } |
697 | | }; |
698 | | |
699 | | static const value_string hf_ttl_trace_data_entry_status_info_eth_type_vals[] = { |
700 | | { TTL_ETH_STATUS_VALID_FRAME, "Valid Ethernet Frame" }, |
701 | | { TTL_ETH_STATUS_CRC_ERROR_FRAME, "Ethernet CRC Error Frame" }, |
702 | | { TTL_ETH_STATUS_LENGTH_ERROR_FRAME, "Ethernet Length Error Frame" }, |
703 | | { TTL_ETH_STATUS_PHY_ERROR_FRAME, "Ethernet PHY Error Frame" }, |
704 | | { TTL_ETH_STATUS_TX_ERROR_FRAME, "Ethernet TX Error Frame" }, |
705 | | { TTL_ETH_STATUS_TX_FREEMEM_INFO_FRAME, "Ethernet TX FreeMem Info Frame" }, |
706 | | { TTL_ETH_STATUS_TX_FRAME, "Ethernet TX Frame" }, |
707 | | { TTL_ETH_STATUS_PHY_STATUS, "Ethernet PHY Status" }, |
708 | | { 0, NULL } |
709 | | }; |
710 | | |
711 | | static const value_string hf_ttl_eth_phy_status_phy_addr_vals[] = { |
712 | | { 2, "BroadR-Reach 1a" }, |
713 | | { 3, "BroadR-Reach 1b" }, |
714 | | { 4, "BroadR-Reach 2a" }, |
715 | | { 5, "BroadR-Reach 2b" }, |
716 | | { 6, "BroadR-Reach 3a" }, |
717 | | { 7, "BroadR-Reach 3b" }, |
718 | | { 8, "BroadR-Reach 4a" }, |
719 | | { 9, "BroadR-Reach 4b" }, |
720 | | { 10, "BroadR-Reach 5a" }, |
721 | | { 11, "BroadR-Reach 5b" }, |
722 | | { 12, "BroadR-Reach 6a" }, |
723 | | { 13, "BroadR-Reach 6b" }, |
724 | | { 0, NULL } |
725 | | }; |
726 | | |
727 | | static const value_string hf_ttl_trace_data_entry_status_info_fr_type_vals[] = { |
728 | | { TTL_FLEXRAY_ITEM_REGULAR_FRAME, "Regular Frame" }, |
729 | | { TTL_FLEXRAY_ITEM_ABORTED_FRAME, "Aborted Frame" }, |
730 | | { TTL_FLEXRAY_ITEM_0_PULSE, "0 Pulse" }, |
731 | | { TTL_FLEXRAY_ITEM_1_PULSE, "1 Pulse" }, |
732 | | { TTL_FLEXRAY_ITEM_ERROR_INFORMATION, "Error Information" }, |
733 | | { 0, NULL } |
734 | | }; |
735 | | |
736 | | static const true_false_string tfs_recognized_not_recognized = { |
737 | | "Recognized", |
738 | | "Not Recognized" |
739 | | }; |
740 | | |
741 | | static int* const ttl_trace_data_entry_meta1[] = { |
742 | | &hf_ttl_trace_data_entry_meta1_frame_duplication, |
743 | | &hf_ttl_trace_data_entry_meta1_compressed_format, |
744 | | &hf_ttl_trace_data_entry_meta1_timestamp_source, |
745 | | NULL |
746 | | }; |
747 | | |
748 | | static int* const ttl_trace_data_entry_status_info_can_flags[] = { |
749 | | &hf_ttl_trace_data_entry_status_info_can_valid_frame, |
750 | | &hf_ttl_trace_data_entry_status_info_can_remote_frame, |
751 | | &hf_ttl_trace_data_entry_status_info_can_bus_off, |
752 | | &hf_ttl_trace_data_entry_status_info_can_matched, |
753 | | &hf_ttl_trace_data_entry_status_info_can_ide, |
754 | | &hf_ttl_trace_data_entry_status_info_can_edl, |
755 | | &hf_ttl_trace_data_entry_status_info_can_brs, |
756 | | &hf_ttl_trace_data_entry_status_info_can_esi, |
757 | | NULL |
758 | | }; |
759 | | |
760 | | static int* const ttl_trace_data_entry_status_info_lin_flags[] = { |
761 | | &hf_ttl_trace_data_entry_status_info_lin_parity_error, |
762 | | &hf_ttl_trace_data_entry_status_info_lin_sync_error, |
763 | | &hf_ttl_trace_data_entry_status_info_lin_2_checksum_error, |
764 | | &hf_ttl_trace_data_entry_status_info_lin_1_checksum_error, |
765 | | &hf_ttl_trace_data_entry_status_info_lin_no_data_error, |
766 | | &hf_ttl_trace_data_entry_status_info_lin_abort_error, |
767 | | NULL |
768 | | }; |
769 | | |
770 | | static int* const ttl_trace_data_entry_status_info_fr_error_flags[] = { |
771 | | &hf_ttl_trace_data_entry_status_info_fr_matched, |
772 | | &hf_ttl_trace_data_entry_status_info_fr_fss_error, |
773 | | &hf_ttl_trace_data_entry_status_info_fr_bss_error, |
774 | | &hf_ttl_trace_data_entry_status_info_fr_fes_error, |
775 | | &hf_ttl_trace_data_entry_status_info_fr_frame_crc_error, |
776 | | &hf_ttl_trace_data_entry_status_info_fr_header_crc_error, |
777 | | &hf_ttl_trace_data_entry_status_info_fr_idle_error, |
778 | | NULL |
779 | | }; |
780 | | |
781 | | static int* const ttl_trace_data_entry_status_info_fr_pulse_flags[] = { |
782 | | &hf_ttl_trace_data_entry_status_info_fr_matched, |
783 | | &hf_ttl_trace_data_entry_status_info_fr_low_phase_exceeded, |
784 | | &hf_ttl_trace_data_entry_status_info_fr_cas, |
785 | | &hf_ttl_trace_data_entry_status_info_fr_mts, |
786 | | &hf_ttl_trace_data_entry_status_info_fr_wup, |
787 | | NULL |
788 | | }; |
789 | | |
790 | | |
791 | | void proto_register_file_ttl(void); |
792 | | void proto_reg_handoff_file_ttl(void); |
793 | | |
794 | 0 | #define TTL_MAGIC_SIZE 4 |
795 | | static const uint8_t ttl_magic[TTL_MAGIC_SIZE] = { 'T', 'T', 'L', ' ' }; |
796 | | |
797 | | static proto_item* |
798 | 0 | dissect_ttl_sw_version(proto_tree* tree, int hf, tvbuff_t* tvb, int offset, int length) { |
799 | 0 | uint8_t major, minor, build, patch; |
800 | 0 | header_field_info* hfinfo; |
801 | |
|
802 | 0 | major = tvb_get_uint8(tvb, offset); |
803 | 0 | minor = tvb_get_uint8(tvb, offset + 1); |
804 | 0 | build = tvb_get_uint8(tvb, offset + 2); |
805 | 0 | patch = tvb_get_uint8(tvb, offset + 3); |
806 | |
|
807 | 0 | hfinfo = proto_registrar_get_nth(hf); |
808 | |
|
809 | 0 | return proto_tree_add_bytes_format(tree, hf, tvb, offset, length, NULL, "%s: %d.%d.%d.%d", |
810 | 0 | hfinfo->name, major, minor, build, patch); |
811 | 0 | } |
812 | | |
813 | | static proto_item* |
814 | 0 | dissect_ttl_hw_version(proto_tree* tree, int hf, tvbuff_t* tvb, int offset, int length) { |
815 | 0 | uint16_t major, minor; |
816 | 0 | header_field_info* hfinfo; |
817 | |
|
818 | 0 | major = tvb_get_uint16(tvb, offset, ENC_LITTLE_ENDIAN); |
819 | 0 | minor = tvb_get_uint16(tvb, offset + 2, ENC_LITTLE_ENDIAN); |
820 | |
|
821 | 0 | hfinfo = proto_registrar_get_nth(hf); |
822 | |
|
823 | 0 | return proto_tree_add_bytes_format(tree, hf, tvb, offset, length, NULL, "%s: %d.%d", |
824 | 0 | hfinfo->name, major, minor); |
825 | 0 | } |
826 | | |
827 | | static proto_item* |
828 | 0 | dissect_ttl_tc_sw_version(proto_tree* tree, int hf, tvbuff_t* tvb, int offset, int length) { |
829 | 0 | uint8_t major, minor; |
830 | 0 | header_field_info* hfinfo; |
831 | |
|
832 | 0 | major = tvb_get_uint8(tvb, offset); |
833 | 0 | minor = tvb_get_uint8(tvb, offset + 1); |
834 | |
|
835 | 0 | hfinfo = proto_registrar_get_nth(hf); |
836 | |
|
837 | 0 | return proto_tree_add_bytes_format(tree, hf, tvb, offset, length, NULL, "%s: %d.%d", |
838 | 0 | hfinfo->name, major, minor); |
839 | 0 | } |
840 | | |
841 | | static int |
842 | 0 | dissect_ttl_logfile_information(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, int offset) { |
843 | 0 | int orig_offset = offset; |
844 | |
|
845 | 0 | proto_tree_add_item(tree, hf_ttl_header_logfile_info_logger_sn, tvb, offset, 20, ENC_NA); |
846 | 0 | offset += 20; |
847 | 0 | dissect_ttl_sw_version(tree, hf_ttl_header_logfile_info_logger_sw_version, tvb, offset, 4); |
848 | 0 | offset += 4; |
849 | 0 | proto_tree_add_item(tree, hf_ttl_header_logfile_info_measurement_creation_date, tvb, offset, 20, ENC_NA); |
850 | 0 | offset += 20; |
851 | 0 | proto_tree_add_time_item(tree, hf_ttl_header_logfile_info_measurement_creation_timestamp, tvb, offset, 8, ENC_LITTLE_ENDIAN|ENC_TIME_USECS, NULL, NULL, NULL); |
852 | 0 | offset += 8; |
853 | 0 | proto_tree_add_item(tree, hf_ttl_header_logfile_info_supplier_name, tvb, offset, 28, ENC_NA); |
854 | 0 | offset += 28; |
855 | 0 | proto_tree_add_item(tree, hf_ttl_header_logfile_info_description, tvb, offset, 128, ENC_NA); |
856 | 0 | offset += 128; |
857 | 0 | dissect_ttl_hw_version(tree, hf_ttl_header_logfile_info_hw_version, tvb, offset, 4); |
858 | 0 | offset += 4; |
859 | 0 | proto_tree_add_item(tree, hf_ttl_header_logfile_info_configuration_file_name, tvb, offset, 64, ENC_NA); |
860 | 0 | offset += 64; |
861 | 0 | proto_tree_add_item(tree, hf_ttl_header_logfile_info_tracefile_sorted, tvb, offset, 1, ENC_NA); |
862 | 0 | offset += 1; |
863 | 0 | proto_tree_add_item(tree, hf_ttl_header_logfile_info_tracefile_split_index, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
864 | 0 | offset += 2; |
865 | 0 | proto_tree_add_item(tree, hf_ttl_header_logfile_info_completion_date, tvb, offset, 20, ENC_NA); |
866 | 0 | offset += 20; |
867 | 0 | proto_tree_add_time_item(tree, hf_ttl_header_logfile_info_completion_timestamp, tvb, offset, 8, ENC_LITTLE_ENDIAN|ENC_TIME_USECS, NULL, NULL, NULL); |
868 | 0 | offset += 8; |
869 | 0 | dissect_ttl_tc_sw_version(tree, hf_ttl_header_logfile_info_tc_sw_bootloader_version, tvb, offset, 2); |
870 | 0 | offset += 2; |
871 | 0 | dissect_ttl_tc_sw_version(tree, hf_ttl_header_logfile_info_tc_sw_firmware_version, tvb, offset, 2); |
872 | 0 | offset += 2; |
873 | 0 | proto_tree_add_item(tree, hf_ttl_header_logfile_info_most25_fw_version, tvb, offset, 32, ENC_NA); |
874 | 0 | offset += 32; |
875 | 0 | proto_tree_add_item(tree, hf_ttl_header_logfile_info_most150_fw_version, tvb, offset, 32, ENC_NA); |
876 | 0 | offset += 32; |
877 | 0 | proto_tree_add_item(tree, hf_ttl_header_logfile_info_split_file_creation_date, tvb, offset, 20, ENC_NA); |
878 | 0 | offset += 20; |
879 | 0 | proto_tree_add_time_item(tree, hf_ttl_header_logfile_info_split_file_creation_timestamp, tvb, offset, 8, ENC_LITTLE_ENDIAN|ENC_TIME_USECS, NULL, NULL, NULL); |
880 | 0 | offset += 8; |
881 | 0 | proto_tree_add_bytes_item(tree, hf_ttl_header_logfile_info_unused_bytes, tvb, offset, 512, ENC_NA, NULL, NULL, NULL); |
882 | 0 | offset += 512; |
883 | 0 | proto_tree_add_item(tree, hf_ttl_header_logfile_info_sleep_counter, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
884 | 0 | offset += 4; |
885 | 0 | proto_tree_add_bytes_item(tree, hf_ttl_header_logfile_info_reserved_bytes, tvb, offset, 3161, ENC_NA, NULL, NULL, NULL); |
886 | 0 | offset += 3161; |
887 | |
|
888 | 0 | return offset - orig_offset; |
889 | 0 | } |
890 | | |
891 | | static int |
892 | 0 | dissect_ttl_dest_addr_ret(proto_tree* tree, tvbuff_t* tvb, int offset, uint16_t* ret) { |
893 | 0 | uint32_t addr, cascade, device; |
894 | 0 | proto_tree* addr_subtree; |
895 | 0 | proto_item* ti; |
896 | |
|
897 | 0 | ti = proto_tree_add_item_ret_uint(tree, hf_ttl_trace_data_entry_dest_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN, &addr); |
898 | 0 | addr_subtree = proto_item_add_subtree(ti, ett_ttl_trace_data_entry_dest_addr); |
899 | 0 | proto_tree_add_item_ret_uint(addr_subtree, hf_ttl_trace_data_entry_dest_addr_cascade, tvb, offset, 2, ENC_LITTLE_ENDIAN, &cascade); |
900 | 0 | if (cascade == 0) { |
901 | 0 | proto_tree_add_item_ret_uint(addr_subtree, hf_ttl_trace_data_entry_dest_addr_device_logger, tvb, offset, 2, ENC_LITTLE_ENDIAN, &device); |
902 | 0 | switch (device) { |
903 | 0 | case TTL_LOGGER_DEVICE_FPGA: |
904 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_dest_addr_function_fpga, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
905 | 0 | break; |
906 | 0 | case TTL_LOGGER_DEVICE_ATOM: |
907 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_dest_addr_function_atom, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
908 | 0 | break; |
909 | 0 | case TTL_LOGGER_DEVICE_TRICORE1: |
910 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_dest_addr_function_tricore1, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
911 | 0 | break; |
912 | 0 | case TTL_LOGGER_DEVICE_TRICORE2: |
913 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_dest_addr_function_tricore2, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
914 | 0 | break; |
915 | 0 | case TTL_LOGGER_DEVICE_TRICORE3: |
916 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_dest_addr_function_tricore3, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
917 | 0 | break; |
918 | 0 | case TTL_LOGGER_DEVICE_TDA4x: |
919 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_dest_addr_function_tda4x, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
920 | 0 | break; |
921 | 0 | case TTL_LOGGER_DEVICE_FPGAA: |
922 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_dest_addr_function_fpgaa, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
923 | 0 | break; |
924 | 0 | case TTL_LOGGER_DEVICE_FPGAB: |
925 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_dest_addr_function_fpgab, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
926 | 0 | break; |
927 | 0 | default: |
928 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_dest_addr_function_unknown, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
929 | 0 | break; |
930 | 0 | } |
931 | 0 | } |
932 | 0 | else { |
933 | 0 | proto_tree_add_item_ret_uint(addr_subtree, hf_ttl_trace_data_entry_dest_addr_device_tap, tvb, offset, 2, ENC_LITTLE_ENDIAN, &device); |
934 | 0 | switch (device) { |
935 | 0 | case TTL_TAP_DEVICE_PT15_FPGA: |
936 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_dest_addr_function_pt15_fpga, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
937 | 0 | break; |
938 | 0 | case TTL_TAP_DEVICE_PT20_FPGA: |
939 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_dest_addr_function_pt20_fpga, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
940 | 0 | break; |
941 | 0 | case TTL_TAP_DEVICE_PC3_FPGA: |
942 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_dest_addr_function_pc3_fpga, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
943 | 0 | break; |
944 | 0 | case TTL_TAP_DEVICE_PC3_AURIX: |
945 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_dest_addr_function_pc3_aurix, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
946 | 0 | break; |
947 | 0 | case TTL_TAP_DEVICE_ZELDA_CANFD: |
948 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_dest_addr_function_zelda_canfd, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
949 | 0 | break; |
950 | 0 | case TTL_TAP_DEVICE_ZELDA_LIN: |
951 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_dest_addr_function_zelda_lin, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
952 | 0 | break; |
953 | 0 | default: |
954 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_dest_addr_function_unknown, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
955 | 0 | break; |
956 | 0 | } |
957 | 0 | } |
958 | | |
959 | 0 | if (ret) { |
960 | 0 | *ret = (uint16_t)addr; |
961 | 0 | } |
962 | 0 | return 2; |
963 | 0 | } |
964 | | |
965 | | static int |
966 | 0 | dissect_ttl_src_addr_ret(proto_tree* tree, tvbuff_t* tvb, int offset, uint16_t* ret) { |
967 | 0 | uint32_t addr, cascade, device; |
968 | 0 | proto_tree* addr_subtree; |
969 | 0 | proto_item* ti; |
970 | |
|
971 | 0 | ti = proto_tree_add_item_ret_uint(tree, hf_ttl_trace_data_entry_src_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN, &addr); |
972 | 0 | addr_subtree = proto_item_add_subtree(ti, ett_ttl_trace_data_entry_src_addr); |
973 | 0 | proto_tree_add_item_ret_uint(addr_subtree, hf_ttl_trace_data_entry_src_addr_cascade, tvb, offset, 2, ENC_LITTLE_ENDIAN, &cascade); |
974 | 0 | if (cascade == 0) { |
975 | 0 | proto_tree_add_item_ret_uint(addr_subtree, hf_ttl_trace_data_entry_src_addr_device_logger, tvb, offset, 2, ENC_LITTLE_ENDIAN, &device); |
976 | 0 | switch (device) { |
977 | 0 | case TTL_LOGGER_DEVICE_FPGA: |
978 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_src_addr_function_fpga, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
979 | 0 | break; |
980 | 0 | case TTL_LOGGER_DEVICE_ATOM: |
981 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_src_addr_function_atom, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
982 | 0 | break; |
983 | 0 | case TTL_LOGGER_DEVICE_TRICORE1: |
984 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_src_addr_function_tricore1, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
985 | 0 | break; |
986 | 0 | case TTL_LOGGER_DEVICE_TRICORE2: |
987 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_src_addr_function_tricore2, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
988 | 0 | break; |
989 | 0 | case TTL_LOGGER_DEVICE_TRICORE3: |
990 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_src_addr_function_tricore3, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
991 | 0 | break; |
992 | 0 | case TTL_LOGGER_DEVICE_TDA4x: |
993 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_src_addr_function_tda4x, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
994 | 0 | break; |
995 | 0 | case TTL_LOGGER_DEVICE_FPGAA: |
996 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_src_addr_function_fpgaa, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
997 | 0 | break; |
998 | 0 | case TTL_LOGGER_DEVICE_FPGAB: |
999 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_src_addr_function_fpgab, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1000 | 0 | break; |
1001 | 0 | default: |
1002 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_src_addr_function_unknown, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1003 | 0 | break; |
1004 | 0 | } |
1005 | 0 | } |
1006 | 0 | else { |
1007 | 0 | proto_tree_add_item_ret_uint(addr_subtree, hf_ttl_trace_data_entry_src_addr_device_tap, tvb, offset, 2, ENC_LITTLE_ENDIAN, &device); |
1008 | 0 | switch (device) { |
1009 | 0 | case TTL_TAP_DEVICE_PT15_FPGA: |
1010 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_src_addr_function_pt15_fpga, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1011 | 0 | break; |
1012 | 0 | case TTL_TAP_DEVICE_PT20_FPGA: |
1013 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_src_addr_function_pt20_fpga, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1014 | 0 | break; |
1015 | 0 | case TTL_TAP_DEVICE_PC3_FPGA: |
1016 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_src_addr_function_pc3_fpga, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1017 | 0 | break; |
1018 | 0 | case TTL_TAP_DEVICE_PC3_AURIX: |
1019 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_src_addr_function_pc3_aurix, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1020 | 0 | break; |
1021 | 0 | case TTL_TAP_DEVICE_ZELDA_CANFD: |
1022 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_src_addr_function_zelda_canfd, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1023 | 0 | break; |
1024 | 0 | case TTL_TAP_DEVICE_ZELDA_LIN: |
1025 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_src_addr_function_zelda_lin, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1026 | 0 | break; |
1027 | 0 | default: |
1028 | 0 | proto_tree_add_item(addr_subtree, hf_ttl_trace_data_entry_src_addr_function_unknown, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1029 | 0 | break; |
1030 | 0 | } |
1031 | 0 | } |
1032 | | |
1033 | 0 | if (ret) { |
1034 | 0 | *ret = (uint16_t)addr; |
1035 | 0 | } |
1036 | 0 | return 2; |
1037 | 0 | } |
1038 | | |
1039 | | static int |
1040 | | dissect_ttl_eth_bus_data_entry(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, int offset, int size, |
1041 | 0 | proto_tree* status_tree, int status_pos, uint16_t src) { |
1042 | 0 | proto_item *ti; |
1043 | 0 | proto_tree *subtree, *payload_subtree; |
1044 | 0 | int orig_offset = offset; |
1045 | 0 | uint16_t status; |
1046 | 0 | uint8_t cascade = (src >> 10) & 0x7; |
1047 | 0 | bool valid; |
1048 | |
|
1049 | 0 | status = tvb_get_uint16(tvb, status_pos, ENC_LITTLE_ENDIAN); |
1050 | |
|
1051 | 0 | if (status != TTL_ETH_STATUS_PHY_STATUS) { |
1052 | 0 | proto_tree_add_item(tree, hf_ttl_trace_data_entry_eth_unused, tvb, offset, 2, ENC_NA); |
1053 | 0 | offset += 2; |
1054 | 0 | size -= 2; |
1055 | 0 | } |
1056 | |
|
1057 | 0 | ti = proto_tree_add_item(tree, hf_ttl_trace_data_entry_payload, tvb, offset, size, ENC_NA); |
1058 | 0 | payload_subtree = proto_item_add_subtree(ti, ett_ttl_trace_data_entry_payload); |
1059 | 0 | proto_item_prepend_text(ti, "%s ", val_to_str_const(status, hf_ttl_trace_data_entry_status_info_eth_type_vals, "Unknown")); |
1060 | |
|
1061 | 0 | proto_tree_add_item(status_tree, hf_ttl_trace_data_entry_status_info_eth_type, tvb, status_pos, 2, ENC_LITTLE_ENDIAN); |
1062 | |
|
1063 | 0 | if (status == TTL_ETH_STATUS_PHY_STATUS) { |
1064 | 0 | while (size >= 4) { |
1065 | 0 | ti = proto_tree_add_item(payload_subtree, hf_ttl_eth_phy_status, tvb, offset, 4, ENC_NA); |
1066 | 0 | subtree = proto_item_add_subtree(ti, ett_ttl_eth_phy_status); |
1067 | 0 | proto_tree_add_item_ret_boolean(subtree, hf_ttl_eth_phy_status_valid, tvb, offset + 3, 1, ENC_NA, &valid); |
1068 | 0 | proto_item_append_text(ti, " (%s)", tfs_get_string(valid, &tfs_valid_invalid)); |
1069 | 0 | proto_tree_add_item(subtree, hf_ttl_eth_phy_status_res2, tvb, offset + 3, 1, ENC_NA); |
1070 | 0 | if (cascade == 0) { |
1071 | 0 | proto_tree_add_item(subtree, hf_ttl_eth_phy_status_unused, tvb, offset + 3, 1, ENC_NA); |
1072 | 0 | } |
1073 | 0 | else { |
1074 | 0 | proto_tree_add_item(subtree, hf_ttl_eth_phy_status_phy_addr, tvb, offset + 3, 1, ENC_NA); |
1075 | 0 | } |
1076 | 0 | proto_tree_add_item(subtree, hf_ttl_eth_phy_status_res1, tvb, offset + 2, 1, ENC_NA); |
1077 | 0 | proto_tree_add_item(subtree, hf_ttl_eth_phy_status_reg_addr, tvb, offset + 2, 1, ENC_NA); |
1078 | 0 | proto_tree_add_item(subtree, hf_ttl_eth_phy_status_data, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1079 | |
|
1080 | 0 | offset += 4; |
1081 | 0 | size -= 4; |
1082 | 0 | } |
1083 | 0 | } |
1084 | 0 | else { |
1085 | 0 | offset += size; |
1086 | 0 | } |
1087 | |
|
1088 | 0 | return offset - orig_offset; |
1089 | 0 | } |
1090 | | |
1091 | | static int |
1092 | | dissect_ttl_can_bus_data_entry(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, int offset, int size, |
1093 | 0 | proto_tree* status_tree, int status_pos) { |
1094 | 0 | proto_item* ti; |
1095 | 0 | int orig_offset = offset; |
1096 | |
|
1097 | 0 | proto_tree_add_bitmask(status_tree, tvb, status_pos, hf_ttl_trace_data_entry_status_info_can_flags, |
1098 | 0 | ett_ttl_trace_data_entry_status_info_can_flags, ttl_trace_data_entry_status_info_can_flags, ENC_LITTLE_ENDIAN); |
1099 | 0 | proto_tree_add_item(status_tree, hf_ttl_trace_data_entry_status_info_can_error_code, tvb, status_pos, 2, ENC_LITTLE_ENDIAN); |
1100 | 0 | proto_tree_add_item(status_tree, hf_ttl_trace_data_entry_status_info_can_res, tvb, status_pos, 2, ENC_LITTLE_ENDIAN); |
1101 | 0 | proto_tree_add_item(status_tree, hf_ttl_trace_data_entry_status_info_can_dlc, tvb, status_pos, 2, ENC_LITTLE_ENDIAN); |
1102 | |
|
1103 | 0 | proto_tree_add_item(tree, hf_ttl_trace_data_entry_can_id, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
1104 | 0 | offset += 4; |
1105 | 0 | size -= 4; |
1106 | |
|
1107 | 0 | ti = proto_tree_add_item(tree, hf_ttl_trace_data_entry_payload, tvb, offset, size, ENC_NA); |
1108 | 0 | proto_item_prepend_text(ti, "CAN "); |
1109 | 0 | offset += size; |
1110 | |
|
1111 | 0 | return offset - orig_offset; |
1112 | 0 | } |
1113 | | |
1114 | | static int |
1115 | | dissect_ttl_lin_bus_data_entry(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, int offset, int size, |
1116 | 0 | proto_tree* status_tree, int status_pos) { |
1117 | 0 | proto_item* ti; |
1118 | 0 | proto_tree* subtree; |
1119 | 0 | int orig_offset = offset; |
1120 | |
|
1121 | 0 | ti = proto_tree_add_item(status_tree, hf_ttl_trace_data_entry_status_info_lin_pid, tvb, status_pos, 1, ENC_NA); |
1122 | 0 | subtree = proto_item_add_subtree(ti, ett_ttl_trace_data_entry_status_info_lin_pid); |
1123 | 0 | proto_tree_add_item(subtree, hf_ttl_trace_data_entry_status_info_lin_parity, tvb, status_pos, 1, ENC_NA); |
1124 | 0 | proto_tree_add_item(subtree, hf_ttl_trace_data_entry_status_info_lin_id, tvb, status_pos, 1, ENC_NA); |
1125 | 0 | proto_tree_add_item(status_tree, hf_ttl_trace_data_entry_status_info_lin_unused, tvb, status_pos + 1, 1, ENC_NA); |
1126 | 0 | proto_tree_add_bitmask(status_tree, tvb, status_pos + 1, hf_ttl_trace_data_entry_status_info_lin_flags, |
1127 | 0 | ett_ttl_trace_data_entry_status_info_lin_flags, ttl_trace_data_entry_status_info_lin_flags, ENC_NA); |
1128 | |
|
1129 | 0 | if (size > 1) { |
1130 | 0 | ti = proto_tree_add_item(tree, hf_ttl_trace_data_entry_payload, tvb, offset, size - 1, ENC_NA); |
1131 | 0 | proto_item_prepend_text(ti, "LIN "); |
1132 | 0 | offset += (size - 1); |
1133 | |
|
1134 | 0 | proto_tree_add_item(tree, hf_ttl_trace_data_entry_lin_checksum, tvb, offset, 1, ENC_NA); |
1135 | 0 | offset += 1; |
1136 | 0 | } |
1137 | |
|
1138 | 0 | return offset - orig_offset; |
1139 | 0 | } |
1140 | | |
1141 | | static int |
1142 | | dissect_ttl_flexray_bus_data_entry(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree, int offset, int size, |
1143 | 0 | proto_tree* status_tree, int status_pos) { |
1144 | 0 | proto_item* ti; |
1145 | 0 | int orig_offset = offset; |
1146 | 0 | uint16_t status; |
1147 | 0 | uint8_t type; |
1148 | |
|
1149 | 0 | status = tvb_get_uint16(tvb, status_pos, ENC_LITTLE_ENDIAN); |
1150 | |
|
1151 | 0 | type = status & TTL_FLEXRAY_ITEM_MASK; |
1152 | |
|
1153 | 0 | proto_tree_add_item(status_tree, hf_ttl_trace_data_entry_status_info_fr_type, tvb, status_pos, 2, ENC_LITTLE_ENDIAN); |
1154 | |
|
1155 | 0 | if (type == TTL_FLEXRAY_ITEM_REGULAR_FRAME || type == TTL_FLEXRAY_ITEM_ABORTED_FRAME) { |
1156 | 0 | proto_tree_add_bitmask(status_tree, tvb, status_pos, hf_ttl_trace_data_entry_status_info_fr_error_flags, |
1157 | 0 | ett_ttl_trace_data_entry_status_info_fr_error_flags, ttl_trace_data_entry_status_info_fr_error_flags, ENC_LITTLE_ENDIAN); |
1158 | 0 | proto_tree_add_item(status_tree, hf_ttl_trace_data_entry_status_info_fr_res1, tvb, status_pos, 2, ENC_LITTLE_ENDIAN); |
1159 | 0 | proto_tree_add_item(status_tree, hf_ttl_trace_data_entry_status_info_fr_res2, tvb, status_pos, 2, ENC_LITTLE_ENDIAN); |
1160 | 0 | } |
1161 | 0 | else if (type == TTL_FLEXRAY_ITEM_0_PULSE || type == TTL_FLEXRAY_ITEM_1_PULSE) { |
1162 | 0 | proto_tree_add_item(status_tree, hf_ttl_trace_data_entry_status_info_fr_res3, tvb, status_pos, 2, ENC_LITTLE_ENDIAN); |
1163 | 0 | proto_tree_add_bitmask(status_tree, tvb, status_pos, hf_ttl_trace_data_entry_status_info_fr_pulse_flags, |
1164 | 0 | ett_ttl_trace_data_entry_status_info_fr_pulse_flags, ttl_trace_data_entry_status_info_fr_pulse_flags, ENC_LITTLE_ENDIAN); |
1165 | 0 | proto_tree_add_item(status_tree, hf_ttl_trace_data_entry_status_info_fr_res4, tvb, status_pos, 2, ENC_LITTLE_ENDIAN); |
1166 | |
|
1167 | 0 | proto_tree_add_item(tree, hf_ttl_trace_data_entry_fr_low_phase_counter, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1168 | 0 | offset += 2; |
1169 | 0 | proto_tree_add_item(tree, hf_ttl_trace_data_entry_fr_unused, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1170 | 0 | offset += 2; |
1171 | 0 | } |
1172 | 0 | else if (type == TTL_FLEXRAY_ITEM_ERROR_INFORMATION) { |
1173 | 0 | proto_tree_add_item(status_tree, hf_ttl_trace_data_entry_status_info_fr_res5, tvb, status_pos, 2, ENC_LITTLE_ENDIAN); |
1174 | |
|
1175 | 0 | proto_tree_add_item(tree, hf_ttl_trace_data_entry_fr_eray_eir_register, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
1176 | 0 | offset += 4; |
1177 | 0 | proto_tree_add_item(tree, hf_ttl_trace_data_entry_fr_eray_stpw1_register, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
1178 | 0 | offset += 4; |
1179 | 0 | proto_tree_add_item(tree, hf_ttl_trace_data_entry_fr_eray_stpw2_register, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
1180 | 0 | offset += 4; |
1181 | 0 | proto_tree_add_item(tree, hf_ttl_trace_data_entry_fr_eray_ccsv_register, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
1182 | 0 | offset += 4; |
1183 | 0 | proto_tree_add_item(tree, hf_ttl_trace_data_entry_fr_eray_ccev_register, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
1184 | 0 | offset += 4; |
1185 | 0 | proto_tree_add_item(tree, hf_ttl_trace_data_entry_fr_eray_swnit_register, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
1186 | 0 | offset += 4; |
1187 | 0 | proto_tree_add_item(tree, hf_ttl_trace_data_entry_fr_eray_acs_register, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
1188 | 0 | offset += 4; |
1189 | 0 | } |
1190 | |
|
1191 | 0 | size -= (offset - orig_offset); |
1192 | |
|
1193 | 0 | if (size > 0) { |
1194 | 0 | ti = proto_tree_add_item(tree, hf_ttl_trace_data_entry_payload, tvb, offset, size, ENC_NA); |
1195 | 0 | proto_item_prepend_text(ti, "FlexRay "); |
1196 | 0 | offset += size; |
1197 | 0 | } |
1198 | |
|
1199 | 0 | return offset - orig_offset; |
1200 | 0 | } |
1201 | | |
1202 | | static int |
1203 | | dissect_ttl_bus_data_entry(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, int offset, int size, |
1204 | 0 | proto_item* root, proto_tree* status_tree, int status_pos, uint16_t src) { |
1205 | 0 | int orig_offset = offset; |
1206 | |
|
1207 | 0 | proto_tree_add_item(tree, hf_ttl_trace_data_entry_timestamp, tvb, offset, 8, ENC_LITTLE_ENDIAN|ENC_TIME_USECS); |
1208 | 0 | offset += 8; |
1209 | |
|
1210 | 0 | switch (ttl_get_address_iface_type(src)) { |
1211 | 0 | case WTAP_ENCAP_ETHERNET: |
1212 | 0 | proto_item_append_text(root, " (Ethernet)"); |
1213 | 0 | offset += dissect_ttl_eth_bus_data_entry(tvb, pinfo, tree, offset, size - (offset - orig_offset), status_tree, status_pos, src); |
1214 | 0 | break; |
1215 | 0 | case WTAP_ENCAP_SOCKETCAN: |
1216 | 0 | proto_item_append_text(root, " (CAN)"); |
1217 | 0 | offset += dissect_ttl_can_bus_data_entry(tvb, pinfo, tree, offset, size - (offset - orig_offset), status_tree, status_pos); |
1218 | 0 | break; |
1219 | 0 | case WTAP_ENCAP_LIN: |
1220 | 0 | proto_item_append_text(root, " (LIN)"); |
1221 | 0 | offset += dissect_ttl_lin_bus_data_entry(tvb, pinfo, tree, offset, size - (offset - orig_offset), status_tree, status_pos); |
1222 | 0 | break; |
1223 | 0 | case WTAP_ENCAP_FLEXRAY: |
1224 | 0 | proto_item_append_text(root, " (FlexRay)"); |
1225 | 0 | offset += dissect_ttl_flexray_bus_data_entry(tvb, pinfo, tree, offset, size - (offset - orig_offset), status_tree, status_pos); |
1226 | 0 | break; |
1227 | 0 | default: |
1228 | 0 | proto_item_append_text(root, " (Unsupported)"); |
1229 | 0 | break; |
1230 | 0 | } |
1231 | | |
1232 | 0 | return offset - orig_offset; |
1233 | 0 | } |
1234 | | |
1235 | | static int |
1236 | 0 | dissect_ttl_entry(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, int offset) { |
1237 | 0 | proto_tree *entry_subtree, *status_subtree; |
1238 | 0 | proto_item *ti, *root_ti; |
1239 | 0 | int orig_offset = offset; |
1240 | 0 | uint32_t status; |
1241 | 0 | uint16_t entry_size_type; |
1242 | 0 | uint16_t size; |
1243 | 0 | uint16_t src_addr; |
1244 | 0 | uint8_t type; |
1245 | |
|
1246 | 0 | entry_size_type = tvb_get_uint16(tvb, offset, ENC_LITTLE_ENDIAN); |
1247 | 0 | type = entry_size_type >> 12; |
1248 | 0 | size = entry_size_type & TTL_SIZE_MASK; |
1249 | |
|
1250 | 0 | root_ti = proto_tree_add_item(tree, hf_ttl_trace_data_entry, tvb, offset, size, ENC_NA); |
1251 | 0 | proto_item_append_text(root_ti, " - %s", val_to_str_const(type, hf_ttl_trace_data_entry_type_vals, "Unknown Entry")); |
1252 | 0 | entry_subtree = proto_item_add_subtree(root_ti, ett_ttl_trace_data_entry); |
1253 | |
|
1254 | 0 | proto_tree_add_item(entry_subtree, hf_ttl_trace_data_entry_type, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1255 | 0 | proto_tree_add_item(entry_subtree, hf_ttl_trace_data_entry_size, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1256 | 0 | offset += 2; |
1257 | 0 | proto_tree_add_bitmask(entry_subtree, tvb, offset, hf_ttl_trace_data_entry_meta1, ett_ttl_trace_data_entry_meta1, ttl_trace_data_entry_meta1, ENC_LITTLE_ENDIAN); |
1258 | 0 | offset += dissect_ttl_dest_addr_ret(entry_subtree, tvb, offset, NULL); |
1259 | 0 | ti = proto_tree_add_item(entry_subtree, hf_ttl_trace_data_entry_meta2, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1260 | 0 | proto_item_set_hidden(ti); |
1261 | 0 | proto_tree_add_item(entry_subtree, hf_ttl_trace_data_entry_ackmode, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1262 | 0 | offset += dissect_ttl_src_addr_ret(entry_subtree, tvb, offset, &src_addr); |
1263 | |
|
1264 | 0 | ti = proto_tree_add_item_ret_uint(entry_subtree, hf_ttl_trace_data_entry_status_information, tvb, offset, 2, ENC_LITTLE_ENDIAN, &status); |
1265 | 0 | status_subtree = proto_item_add_subtree(ti, ett_ttl_trace_data_entry_status_information); |
1266 | 0 | offset += 2; |
1267 | |
|
1268 | 0 | if (size < sizeof(ttl_entryheader_t)) { |
1269 | 0 | expert_add_info(pinfo, root_ti, &ei_ttl_entry_size_too_short); |
1270 | 0 | } |
1271 | 0 | else { |
1272 | 0 | switch (type) { |
1273 | 0 | case TTL_BUS_DATA_ENTRY: |
1274 | 0 | offset += dissect_ttl_bus_data_entry(tvb, pinfo, entry_subtree, offset, (int)size - (offset - orig_offset), |
1275 | 0 | root_ti, status_subtree, orig_offset + 6, src_addr); |
1276 | 0 | break; |
1277 | 0 | case TTL_COMMAND_ENTRY: |
1278 | 0 | case TTL_JOURNAL_ENTRY: |
1279 | 0 | case TTL_SEGMENTED_MESSAGE_ENTRY: |
1280 | 0 | case TTL_SEND_FRAME_ENTRY: |
1281 | 0 | case TTL_PADDING_ENTRY: |
1282 | 0 | case TTL_SOFTWARE_DATA_ENTRY: |
1283 | 0 | case TTL_DROPPED_FRAMES_ENTRY: |
1284 | 0 | default: |
1285 | 0 | break; |
1286 | 0 | } |
1287 | 0 | } |
1288 | | |
1289 | 0 | if ((offset - orig_offset) < size) { |
1290 | 0 | proto_tree_add_item(entry_subtree, hf_ttl_trace_data_entry_unparsed, tvb, offset, (int)size - (offset - orig_offset), ENC_NA); |
1291 | 0 | offset += (int)size - (offset - orig_offset); |
1292 | 0 | } |
1293 | |
|
1294 | 0 | return offset - orig_offset; |
1295 | 0 | } |
1296 | | |
1297 | | static int |
1298 | 0 | dissect_ttl_block(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, int offset, int size) { |
1299 | 0 | proto_tree* block_subtree; |
1300 | 0 | proto_item* ti; |
1301 | 0 | int orig_offset = offset; |
1302 | 0 | int dissected; |
1303 | |
|
1304 | 0 | if (size > 0) { |
1305 | 0 | ti = proto_tree_add_item(tree, hf_ttl_block, tvb, offset, size, ENC_NA); |
1306 | 0 | block_subtree = proto_item_add_subtree(ti, ett_ttl_block); |
1307 | |
|
1308 | 0 | while (size >= (int)sizeof(ttl_entryheader_t)) { |
1309 | 0 | dissected = dissect_ttl_entry(tvb, pinfo, block_subtree, offset); |
1310 | 0 | offset += dissected; |
1311 | 0 | size -= dissected; |
1312 | 0 | } |
1313 | 0 | } |
1314 | |
|
1315 | 0 | return offset - orig_offset; |
1316 | 0 | } |
1317 | | |
1318 | | static int |
1319 | 0 | dissect_ttl(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, void* data _U_) { |
1320 | 0 | int offset = 0; |
1321 | 0 | proto_tree *ttl_tree, *header_subtree, *logfile_info_subtree, *configuration_subtree, *trace_data_subtree; |
1322 | 0 | proto_item* ti; |
1323 | 0 | uint32_t format_version, header_length, block_size; |
1324 | 0 | int logfile_info_length, xml_length, remaining; |
1325 | |
|
1326 | 0 | if (tvb_captured_length(tvb) < sizeof(ttl_fileheader_t) || tvb_memeql(tvb, 0, ttl_magic, TTL_MAGIC_SIZE) != 0) { |
1327 | 0 | return 0; |
1328 | 0 | } |
1329 | | |
1330 | 0 | ti = proto_tree_add_item(tree, proto_ttl, tvb, offset, -1, ENC_NA); |
1331 | 0 | ttl_tree = proto_item_add_subtree(ti, ett_ttl); |
1332 | 0 | header_length = tvb_get_uint32(tvb, 12, ENC_LITTLE_ENDIAN); |
1333 | |
|
1334 | 0 | ti = proto_tree_add_item(ttl_tree, hf_ttl_header, tvb, offset, header_length, ENC_NA); |
1335 | 0 | header_subtree = proto_item_add_subtree(ti, ett_ttl_header); |
1336 | |
|
1337 | 0 | proto_tree_add_item(header_subtree, hf_ttl_header_magic, tvb, offset, 4, ENC_NA); |
1338 | 0 | offset += 4; |
1339 | 0 | proto_tree_add_item_ret_uint(header_subtree, hf_ttl_header_file_format_version, tvb, offset, 4, ENC_LITTLE_ENDIAN, &format_version); |
1340 | 0 | offset += 4; |
1341 | 0 | ti = proto_tree_add_item_ret_uint(header_subtree, hf_ttl_header_block_size, tvb, offset, 4, ENC_LITTLE_ENDIAN, &block_size); |
1342 | 0 | offset += 4; |
1343 | 0 | if (block_size == 0) { |
1344 | 0 | expert_add_info(pinfo, ti, &ei_ttl_block_size_too_short); |
1345 | 0 | } |
1346 | 0 | ti = proto_tree_add_item(header_subtree, hf_ttl_header_header_size, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
1347 | 0 | offset += 4; |
1348 | 0 | if (header_length < sizeof(ttl_fileheader_t)) { |
1349 | 0 | expert_add_info(pinfo, ti, &ei_ttl_header_size_too_short); |
1350 | 0 | } |
1351 | 0 | else if (header_length > INT32_MAX) { |
1352 | 0 | expert_add_info(pinfo, ti, &ei_ttl_header_size_implausible); |
1353 | 0 | } |
1354 | 0 | else { |
1355 | 0 | logfile_info_length = MIN(MIN(tvb_captured_length_remaining(tvb, offset), (int)header_length - offset), TTL_LOGFILE_INFO_SIZE); |
1356 | 0 | ti = proto_tree_add_item(header_subtree, hf_ttl_header_logfile_info, tvb, offset, logfile_info_length, ENC_NA); |
1357 | 0 | logfile_info_subtree = proto_item_add_subtree(ti, ett_ttl_header_logfile_info); |
1358 | |
|
1359 | 0 | if ((logfile_info_length < TTL_LOGFILE_INFO_SIZE) && format_version >= 10) { |
1360 | | /* Starting from format version 10, the header is at least TTL_LOGFILE_INFO_SIZE bytes */ |
1361 | 0 | expert_add_info(pinfo, ti, &ei_ttl_header_logfile_info_too_short); |
1362 | 0 | } |
1363 | |
|
1364 | 0 | offset += dissect_ttl_logfile_information(tvb, pinfo, logfile_info_subtree, offset); |
1365 | |
|
1366 | 0 | if (format_version >= 10 && (int)header_length > offset) { |
1367 | 0 | xml_length = MIN(tvb_captured_length_remaining(tvb, offset), (int)header_length - offset); |
1368 | 0 | ti = proto_tree_add_item(header_subtree, hf_ttl_header_configuration, tvb, offset, xml_length, ENC_NA); |
1369 | |
|
1370 | 0 | if (xml_handle) { |
1371 | 0 | configuration_subtree = proto_item_add_subtree(ti, ett_ttl_header_configuration); |
1372 | 0 | tvbuff_t* new_tvb = tvb_new_subset_length(tvb, offset, xml_length); |
1373 | 0 | call_dissector(xml_handle, new_tvb, pinfo, configuration_subtree); |
1374 | 0 | } |
1375 | 0 | } |
1376 | |
|
1377 | 0 | offset = (int)header_length; |
1378 | |
|
1379 | 0 | ti = proto_tree_add_item(ttl_tree, hf_ttl_trace_data, tvb, offset, -1, ENC_NA); |
1380 | 0 | trace_data_subtree = proto_item_add_subtree(ti, ett_ttl_trace_data); |
1381 | |
|
1382 | 0 | if (block_size != 0) { |
1383 | 0 | while ((remaining = tvb_captured_length_remaining(tvb, offset)) > 0) { |
1384 | 0 | dissect_ttl_block(tvb, pinfo, trace_data_subtree, offset, MIN((int)block_size, remaining)); |
1385 | 0 | offset += block_size; |
1386 | 0 | } |
1387 | 0 | } |
1388 | |
|
1389 | 0 | } |
1390 | |
|
1391 | 0 | return offset; |
1392 | 0 | } |
1393 | | |
1394 | | |
1395 | | static bool |
1396 | 0 | dissect_ttl_heur(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, void* data) { |
1397 | 0 | return dissect_ttl(tvb, pinfo, tree, data) > 0; |
1398 | 0 | } |
1399 | | |
1400 | | void |
1401 | 14 | proto_register_file_ttl(void) { |
1402 | 14 | expert_module_t* expert_ttl; |
1403 | | |
1404 | 14 | static hf_register_info hf[] = { |
1405 | 14 | { &hf_ttl_header, |
1406 | 14 | { "Header Section", "ttl.header", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1407 | 14 | { &hf_ttl_header_magic, |
1408 | 14 | { "Magic", "ttl.header.magic", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1409 | 14 | { &hf_ttl_header_file_format_version, |
1410 | 14 | { "File Format Version", "ttl.header.version", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } }, |
1411 | 14 | { &hf_ttl_header_block_size, |
1412 | 14 | { "Block Size", "ttl.header.block_size", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } }, |
1413 | 14 | { &hf_ttl_header_header_size, |
1414 | 14 | { "Header Size", "ttl.header.header_size", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } }, |
1415 | 14 | { &hf_ttl_header_logfile_info, |
1416 | 14 | { "Logfile Information", "ttl.header.logfile_info", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1417 | | |
1418 | 14 | { &hf_ttl_header_logfile_info_logger_sn, |
1419 | 14 | { "Logger Serial Number", "ttl.header.logfile_info.logger_sn", FT_STRINGZPAD, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1420 | 14 | { &hf_ttl_header_logfile_info_logger_sw_version, |
1421 | 14 | { "Logger Software Version", "ttl.header.logfile_info.logger_sw_version", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1422 | 14 | { &hf_ttl_header_logfile_info_measurement_creation_date, |
1423 | 14 | { "Measurement Creation Date", "ttl.header.logfile_info.measurement_creation_date", FT_STRINGZPAD, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1424 | 14 | { &hf_ttl_header_logfile_info_measurement_creation_timestamp, |
1425 | 14 | { "Measurement Creation Timestamp", "ttl.header.logfile_info.measurement_creation_timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL } }, |
1426 | 14 | { &hf_ttl_header_logfile_info_supplier_name, |
1427 | 14 | { "Supplier Name", "ttl.header.logfile_info.supplier_name", FT_STRINGZPAD, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1428 | 14 | { &hf_ttl_header_logfile_info_description, |
1429 | 14 | { "Description", "ttl.header.logfile_info.description", FT_STRINGZPAD, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1430 | 14 | { &hf_ttl_header_logfile_info_hw_version, |
1431 | 14 | { "Hardware Version", "ttl.header.logfile_info.hw_version", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1432 | 14 | { &hf_ttl_header_logfile_info_configuration_file_name, |
1433 | 14 | { "Configuration File Name", "ttl.header.logfile_info.config_filename", FT_STRINGZPAD, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1434 | 14 | { &hf_ttl_header_logfile_info_tracefile_sorted, |
1435 | 14 | { "Tracefile Sorted", "ttl.header.logfile_info.tracefile_sorted", FT_UINT8, BASE_HEX, VALS(hf_ttl_header_logfile_info_tracefile_sorted_vals), 0x0, NULL, HFILL} }, |
1436 | 14 | { &hf_ttl_header_logfile_info_tracefile_split_index, |
1437 | 14 | { "Tracefile Split Index", "ttl.header.logfile_info.tracefile_split_index", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } }, |
1438 | 14 | { &hf_ttl_header_logfile_info_completion_date, |
1439 | 14 | { "Completion Date", "ttl.header.logfile_info.completion_date", FT_STRINGZPAD, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1440 | 14 | { &hf_ttl_header_logfile_info_completion_timestamp, |
1441 | 14 | { "Completion Timestamp", "ttl.header.logfile_info.completion_timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL } }, |
1442 | 14 | { &hf_ttl_header_logfile_info_tc_sw_bootloader_version, |
1443 | 14 | { "TC SW Bootloader Version", "ttl.header.logfile_info.tc_sw_bootloader_version", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1444 | 14 | { &hf_ttl_header_logfile_info_tc_sw_firmware_version, |
1445 | 14 | { "TC SW Firmware Version", "ttl.header.logfile_info.tc_sw_firmware_version", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1446 | 14 | { &hf_ttl_header_logfile_info_most25_fw_version, |
1447 | 14 | { "MOST25 Piggy Firmware Version", "ttl.header.logfile_info.most25_fw_version", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1448 | 14 | { &hf_ttl_header_logfile_info_most150_fw_version, |
1449 | 14 | { "MOST150 Piggy Firmware Version", "ttl.header.logfile_info.most150_fw_version", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1450 | 14 | { &hf_ttl_header_logfile_info_split_file_creation_date, |
1451 | 14 | { "Split File Creation Date", "ttl.header.logfile_info.split_file_creation_date", FT_STRINGZPAD, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1452 | 14 | { &hf_ttl_header_logfile_info_split_file_creation_timestamp, |
1453 | 14 | { "Split File Creation Timestamp", "ttl.header.logfile_info.split_file_creation_timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL } }, |
1454 | 14 | { &hf_ttl_header_logfile_info_unused_bytes, |
1455 | 14 | { "Unused Bytes", "ttl.header.logfile_info.unused", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1456 | 14 | { &hf_ttl_header_logfile_info_sleep_counter, |
1457 | 14 | { "Sleep Counter", "ttl.header.logfile_info.sleep_counter", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } }, |
1458 | 14 | { &hf_ttl_header_logfile_info_reserved_bytes, |
1459 | 14 | { "Reserved Bytes", "ttl.header.logfile_info.reserved", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1460 | 14 | { &hf_ttl_header_configuration, |
1461 | 14 | { "Configuration", "ttl.header.configuration", FT_STRINGZPAD, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1462 | | |
1463 | 14 | { &hf_ttl_trace_data, |
1464 | 14 | { "Trace Data Section", "ttl.trace_data", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1465 | 14 | { &hf_ttl_block, |
1466 | 14 | { "Trace Data Block", "ttl.trace_data_block", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1467 | 14 | { &hf_ttl_trace_data_entry, |
1468 | 14 | { "Trace Data Entry", "ttl.trace_data.entry", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1469 | 14 | { &hf_ttl_trace_data_entry_size, |
1470 | 14 | { "Entry Size", "ttl.trace_data.entry.size", FT_UINT16, BASE_DEC_HEX, NULL, 0x0fff, NULL, HFILL } }, |
1471 | 14 | { &hf_ttl_trace_data_entry_type, |
1472 | 14 | { "Entry Type", "ttl.trace_data.entry.type", FT_UINT16, BASE_DEC, VALS(hf_ttl_trace_data_entry_type_vals), 0xf000, NULL, HFILL} }, |
1473 | | |
1474 | 14 | { &hf_ttl_trace_data_entry_dest_addr, |
1475 | 14 | { "Destination Address", "ttl.trace_data.entry.dst_addr", FT_UINT16, BASE_DEC_HEX, NULL, 0x1fff, NULL, HFILL } }, |
1476 | 14 | { &hf_ttl_trace_data_entry_dest_addr_cascade, |
1477 | 14 | { "Destination Address Cascade", "ttl.trace_data.entry.dst_addr.cascade", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_cascade_vals), 0x1c00, NULL, HFILL } }, |
1478 | 14 | { &hf_ttl_trace_data_entry_dest_addr_device_logger, |
1479 | 14 | { "Destination Address Device", "ttl.trace_data.entry.dst_addr.device", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_device_vals), 0x03c0, NULL, HFILL} }, |
1480 | 14 | { &hf_ttl_trace_data_entry_dest_addr_device_tap, |
1481 | 14 | { "Destination Address Device", "ttl.trace_data.entry.dst_addr.device", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_tap_device_vals), 0x03c0, NULL, HFILL} }, |
1482 | 14 | { &hf_ttl_trace_data_entry_dest_addr_function_fpga, |
1483 | 14 | { "Destination Address Function", "ttl.trace_data.entry.dst_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_fpga_function_vals), 0x003f, NULL, HFILL} }, |
1484 | 14 | { &hf_ttl_trace_data_entry_dest_addr_function_atom, |
1485 | 14 | { "Destination Address Function", "ttl.trace_data.entry.dst_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_atom_function_vals), 0x003f, NULL, HFILL} }, |
1486 | 14 | { &hf_ttl_trace_data_entry_dest_addr_function_tricore1, |
1487 | 14 | { "Destination Address Function", "ttl.trace_data.entry.dst_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_tricore1_function_vals), 0x003f, NULL, HFILL} }, |
1488 | 14 | { &hf_ttl_trace_data_entry_dest_addr_function_tricore2, |
1489 | 14 | { "Destination Address Function", "ttl.trace_data.entry.dst_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_tricore2_function_vals), 0x003f, NULL, HFILL } }, |
1490 | 14 | { &hf_ttl_trace_data_entry_dest_addr_function_tricore3, |
1491 | 14 | { "Destination Address Function", "ttl.trace_data.entry.dst_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_tricore3_function_vals), 0x003f, NULL, HFILL } }, |
1492 | 14 | { &hf_ttl_trace_data_entry_dest_addr_function_tda4x, |
1493 | 14 | { "Destination Address Function", "ttl.trace_data.entry.dst_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_tda4x_function_vals), 0x003f, NULL, HFILL} }, |
1494 | 14 | { &hf_ttl_trace_data_entry_dest_addr_function_fpgaa, |
1495 | 14 | { "Destination Address Function", "ttl.trace_data.entry.dst_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_fpgaa_function_vals), 0x003f, NULL, HFILL } }, |
1496 | 14 | { &hf_ttl_trace_data_entry_dest_addr_function_fpgab, |
1497 | 14 | { "Destination Address Function", "ttl.trace_data.entry.dst_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_fpgab_function_vals), 0x003f, NULL, HFILL } }, |
1498 | 14 | { &hf_ttl_trace_data_entry_dest_addr_function_pt15_fpga, |
1499 | 14 | { "Destination Address Function", "ttl.trace_data.entry.dst_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_pt15_fpga_function_vals), 0x003f, NULL, HFILL } }, |
1500 | 14 | { &hf_ttl_trace_data_entry_dest_addr_function_pt20_fpga, |
1501 | 14 | { "Destination Address Function", "ttl.trace_data.entry.dst_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_pt20_fpga_function_vals), 0x003f, NULL, HFILL } }, |
1502 | 14 | { &hf_ttl_trace_data_entry_dest_addr_function_pc3_fpga, |
1503 | 14 | { "Destination Address Function", "ttl.trace_data.entry.dst_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_pc3_fpga_function_vals), 0x003f, NULL, HFILL } }, |
1504 | 14 | { &hf_ttl_trace_data_entry_dest_addr_function_pc3_aurix, |
1505 | 14 | { "Destination Address Function", "ttl.trace_data.entry.dst_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_pc3_aurix_function_vals), 0x003f, NULL, HFILL } }, |
1506 | 14 | { &hf_ttl_trace_data_entry_dest_addr_function_zelda_canfd, |
1507 | 14 | { "Destination Address Function", "ttl.trace_data.entry.dst_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_zelda_canfd_function_vals), 0x003f, NULL, HFILL } }, |
1508 | 14 | { &hf_ttl_trace_data_entry_dest_addr_function_zelda_lin, |
1509 | 14 | { "Destination Address Function", "ttl.trace_data.entry.dst_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_zelda_lin_function_vals), 0x003f, NULL, HFILL } }, |
1510 | 14 | { &hf_ttl_trace_data_entry_dest_addr_function_unknown, |
1511 | 14 | { "Destination Address Function", "ttl.trace_data.entry.dst_addr.function", FT_UINT16, BASE_DEC_HEX, NULL, 0x003f, NULL, HFILL } }, |
1512 | | |
1513 | 14 | { &hf_ttl_trace_data_entry_meta1, |
1514 | 14 | { "Meta 1", "ttl.trace_data.entry.meta1", FT_UINT16, BASE_DEC_HEX, NULL, 0xe000, NULL, HFILL } }, |
1515 | 14 | { &hf_ttl_trace_data_entry_meta1_frame_duplication, |
1516 | 14 | { "Frame Duplication Marker", "ttl.trace_data.entry.frame_duplication", FT_BOOLEAN, 16, TFS(&hf_ttl_trace_data_entry_meta1_frame_duplication_tfs), 0x8000, NULL, HFILL } }, |
1517 | 14 | { &hf_ttl_trace_data_entry_meta1_compressed_format, |
1518 | 14 | { "Compressed Format Field", "ttl.trace_data.entry.compressed_format", FT_BOOLEAN, 16, TFS(&hf_ttl_trace_data_entry_meta1_compressed_format_tfs), 0x4000, NULL, HFILL } }, |
1519 | 14 | { &hf_ttl_trace_data_entry_meta1_timestamp_source, |
1520 | 14 | { "Timestamp Source Field", "ttl.trace_data.entry.timestamp_source", FT_BOOLEAN, 16, TFS(&hf_ttl_trace_data_entry_meta1_timestamp_source_tfs), 0x2000, NULL, HFILL } }, |
1521 | | |
1522 | 14 | { &hf_ttl_trace_data_entry_src_addr, |
1523 | 14 | { "Source Address", "ttl.trace_data.entry.src_addr", FT_UINT16, BASE_DEC_HEX, NULL, 0x1fff, NULL, HFILL } }, |
1524 | 14 | { &hf_ttl_trace_data_entry_src_addr_cascade, |
1525 | 14 | { "Source Address Cascade", "ttl.trace_data.entry.src_addr.cascade", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_cascade_vals), 0x1c00, NULL, HFILL } }, |
1526 | 14 | { &hf_ttl_trace_data_entry_src_addr_device_logger, |
1527 | 14 | { "Source Address Device", "ttl.trace_data.entry.src_addr.device", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_device_vals), 0x03c0, NULL, HFILL} }, |
1528 | 14 | { &hf_ttl_trace_data_entry_src_addr_device_tap, |
1529 | 14 | { "Source Address Device", "ttl.trace_data.entry.src_addr.device", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_tap_device_vals), 0x03c0, NULL, HFILL} }, |
1530 | 14 | { &hf_ttl_trace_data_entry_src_addr_function_fpga, |
1531 | 14 | { "Source Address Function", "ttl.trace_data.entry.src_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_fpga_function_vals), 0x003f, NULL, HFILL} }, |
1532 | 14 | { &hf_ttl_trace_data_entry_src_addr_function_atom, |
1533 | 14 | { "Source Address Function", "ttl.trace_data.entry.src_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_atom_function_vals), 0x003f, NULL, HFILL} }, |
1534 | 14 | { &hf_ttl_trace_data_entry_src_addr_function_tricore1, |
1535 | 14 | { "Source Address Function", "ttl.trace_data.entry.src_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_tricore1_function_vals), 0x003f, NULL, HFILL} }, |
1536 | 14 | { &hf_ttl_trace_data_entry_src_addr_function_tricore2, |
1537 | 14 | { "Source Address Function", "ttl.trace_data.entry.src_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_tricore2_function_vals), 0x003f, NULL, HFILL } }, |
1538 | 14 | { &hf_ttl_trace_data_entry_src_addr_function_tricore3, |
1539 | 14 | { "Source Address Function", "ttl.trace_data.entry.src_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_tricore3_function_vals), 0x003f, NULL, HFILL } }, |
1540 | 14 | { &hf_ttl_trace_data_entry_src_addr_function_tda4x, |
1541 | 14 | { "Source Address Function", "ttl.trace_data.entry.src_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_tda4x_function_vals), 0x003f, NULL, HFILL} }, |
1542 | 14 | { &hf_ttl_trace_data_entry_src_addr_function_fpgaa, |
1543 | 14 | { "Source Address Function", "ttl.trace_data.entry.src_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_fpgaa_function_vals), 0x003f, NULL, HFILL } }, |
1544 | 14 | { &hf_ttl_trace_data_entry_src_addr_function_fpgab, |
1545 | 14 | { "Source Address Function", "ttl.trace_data.entry.src_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_logger_fpgab_function_vals), 0x003f, NULL, HFILL } }, |
1546 | 14 | { &hf_ttl_trace_data_entry_src_addr_function_pt15_fpga, |
1547 | 14 | { "Source Address Function", "ttl.trace_data.entry.src_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_pt15_fpga_function_vals), 0x003f, NULL, HFILL } }, |
1548 | 14 | { &hf_ttl_trace_data_entry_src_addr_function_pt20_fpga, |
1549 | 14 | { "Source Address Function", "ttl.trace_data.entry.src_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_pt20_fpga_function_vals), 0x003f, NULL, HFILL } }, |
1550 | 14 | { &hf_ttl_trace_data_entry_src_addr_function_pc3_fpga, |
1551 | 14 | { "Source Address Function", "ttl.trace_data.entry.src_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_pc3_fpga_function_vals), 0x003f, NULL, HFILL } }, |
1552 | 14 | { &hf_ttl_trace_data_entry_src_addr_function_pc3_aurix, |
1553 | 14 | { "Source Address Function", "ttl.trace_data.entry.src_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_pc3_aurix_function_vals), 0x003f, NULL, HFILL } }, |
1554 | 14 | { &hf_ttl_trace_data_entry_src_addr_function_zelda_canfd, |
1555 | 14 | { "Source Address Function", "ttl.trace_data.entry.src_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_zelda_canfd_function_vals), 0x003f, NULL, HFILL } }, |
1556 | 14 | { &hf_ttl_trace_data_entry_src_addr_function_zelda_lin, |
1557 | 14 | { "Source Address Function", "ttl.trace_data.entry.src_addr.function", FT_UINT16, BASE_DEC_HEX, VALS(hf_ttl_addr_zelda_lin_function_vals), 0x003f, NULL, HFILL } }, |
1558 | 14 | { &hf_ttl_trace_data_entry_src_addr_function_unknown, |
1559 | 14 | { "Source Address Function", "ttl.trace_data.entry.src_addr.function", FT_UINT16, BASE_DEC_HEX, NULL, 0x003f, NULL, HFILL } }, |
1560 | | |
1561 | 14 | { &hf_ttl_trace_data_entry_meta2, |
1562 | 14 | { "Meta 2", "ttl.trace_data.entry.meta2", FT_UINT16, BASE_DEC_HEX, NULL, 0xe000, NULL, HFILL }}, |
1563 | 14 | { &hf_ttl_trace_data_entry_ackmode, |
1564 | 14 | { "Ack Mode", "ttl.trace_data.entry.ackmode", FT_UINT16, BASE_DEC, VALS(hf_ttl_trace_data_entry_ackmode_vals), 0xe000, NULL, HFILL}}, |
1565 | | |
1566 | 14 | { &hf_ttl_trace_data_entry_status_information, |
1567 | 14 | { "Status Information", "ttl.trace_data.entry.status_info", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }}, |
1568 | 14 | { &hf_ttl_trace_data_entry_status_info_eth_type, |
1569 | 14 | { "Type", "ttl.trace_data.entry.status_info.eth_type", FT_UINT16, BASE_HEX, VALS(hf_ttl_trace_data_entry_status_info_eth_type_vals), 0x0, NULL, HFILL} }, |
1570 | 14 | { &hf_ttl_trace_data_entry_status_info_can_flags, |
1571 | 14 | { "CAN Flags", "ttl.trace_data.entry.status_info.can_flags", FT_UINT16, BASE_HEX, NULL, 0xf00f, NULL, HFILL } }, |
1572 | 14 | { &hf_ttl_trace_data_entry_status_info_can_valid_frame, |
1573 | 14 | { "Valid Frame", "ttl.trace_data.entry.status_info.can_flags.valid", FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x0001, NULL, HFILL } }, |
1574 | 14 | { &hf_ttl_trace_data_entry_status_info_can_remote_frame, |
1575 | 14 | { "Remote Frame", "ttl.trace_data.entry.status_info.can_flags.rtr", FT_BOOLEAN, 16, NULL, 0x0002, NULL, HFILL } }, |
1576 | 14 | { &hf_ttl_trace_data_entry_status_info_can_bus_off, |
1577 | 14 | { "Bus Off", "ttl.trace_data.entry.status_info.can_flags.bus_off", FT_BOOLEAN, 16, NULL, 0x0004, NULL, HFILL } }, |
1578 | 14 | { &hf_ttl_trace_data_entry_status_info_can_matched, |
1579 | 14 | { "Matched", "ttl.trace_data.entry.status_info.can_flags.matched", FT_BOOLEAN, 16, NULL, 0x0008, NULL, HFILL } }, |
1580 | 14 | { &hf_ttl_trace_data_entry_status_info_can_error_code, |
1581 | 14 | { "CAN Error Code", "ttl.trace_data.entry.status_info.can_error_code", FT_UINT16, BASE_HEX, VALS(hf_ttl_trace_data_entry_status_info_can_error_code_vals), 0x0070, NULL, HFILL}}, |
1582 | 14 | { &hf_ttl_trace_data_entry_status_info_can_res, |
1583 | 14 | { "Reserved", "ttl.trace_data.entry.status_info.can_res", FT_UINT16, BASE_HEX, NULL, 0x0080, NULL, HFILL } }, |
1584 | 14 | { &hf_ttl_trace_data_entry_status_info_can_dlc, |
1585 | 14 | { "CAN DLC", "ttl.trace_data.entry.status_info.can_dlc", FT_UINT16, BASE_DEC, NULL, 0x0f00, NULL, HFILL } }, |
1586 | 14 | { &hf_ttl_trace_data_entry_status_info_can_ide, |
1587 | 14 | { "Extended Frame", "ttl.trace_data.entry.status_info.can_flags.ide", FT_BOOLEAN, 16, NULL, 0x1000, NULL, HFILL } }, |
1588 | 14 | { &hf_ttl_trace_data_entry_status_info_can_edl, |
1589 | 14 | { "Extended Data Length", "ttl.trace_data.entry.status_info.can_flags.edl", FT_BOOLEAN, 16, NULL, 0x2000, NULL, HFILL } }, |
1590 | 14 | { &hf_ttl_trace_data_entry_status_info_can_brs, |
1591 | 14 | { "Bit Rate Switch", "ttl.trace_data.entry.status_info.can_flags.brs", FT_BOOLEAN, 16, NULL, 0x4000, NULL, HFILL } }, |
1592 | 14 | { &hf_ttl_trace_data_entry_status_info_can_esi, |
1593 | 14 | { "Error State Indicator", "ttl.trace_data.entry.status_info.can_flags.esi", FT_BOOLEAN, 16, NULL, 0x8000, NULL, HFILL } }, |
1594 | 14 | { &hf_ttl_trace_data_entry_status_info_lin_pid, |
1595 | 14 | { "LIN PID", "ttl.trace_data.entry.status_info.lin_pid", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } }, |
1596 | 14 | { &hf_ttl_trace_data_entry_status_info_lin_parity, |
1597 | 14 | { "LIN Parity Bits", "ttl.trace_data.entry.status_info.lin_parity", FT_UINT8, BASE_HEX, NULL, 0xc0, NULL, HFILL } }, |
1598 | 14 | { &hf_ttl_trace_data_entry_status_info_lin_id, |
1599 | 14 | { "LIN ID", "ttl.trace_data.entry.status_info.lin_id", FT_UINT8, BASE_DEC_HEX, NULL, 0x3f, NULL, HFILL } }, |
1600 | 14 | { &hf_ttl_trace_data_entry_status_info_lin_flags, |
1601 | 14 | { "LIN Flags", "ttl.trace_data.entry.status_info.lin_flags", FT_UINT8, BASE_HEX, NULL, 0x3f, NULL, HFILL } }, |
1602 | 14 | { &hf_ttl_trace_data_entry_status_info_lin_parity_error, |
1603 | 14 | { "Parity Error", "ttl.trace_data.entry.status_info.lin_flags.parity_error", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL } }, |
1604 | 14 | { &hf_ttl_trace_data_entry_status_info_lin_sync_error, |
1605 | 14 | { "Sync Error", "ttl.trace_data.entry.status_info.lin_flags.sync_error", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL } }, |
1606 | 14 | { &hf_ttl_trace_data_entry_status_info_lin_2_checksum_error, |
1607 | 14 | { "LIN 2.x Checksum Error", "ttl.trace_data.entry.status_info.lin_flags.lin2_checksum_error", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL } }, |
1608 | 14 | { &hf_ttl_trace_data_entry_status_info_lin_1_checksum_error, |
1609 | 14 | { "LIN 1.x Checksum Error", "ttl.trace_data.entry.status_info.lin_flags.lin1_checksum_error", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL } }, |
1610 | 14 | { &hf_ttl_trace_data_entry_status_info_lin_no_data_error, |
1611 | 14 | { "No Slave Response", "ttl.trace_data.entry.status_info.lin_flags.no_slave_response", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL } }, |
1612 | 14 | { &hf_ttl_trace_data_entry_status_info_lin_abort_error, |
1613 | 14 | { "Abort Error", "ttl.trace_data.entry.status_info.lin_flags.abort_error", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL } }, |
1614 | 14 | { &hf_ttl_trace_data_entry_status_info_lin_unused, |
1615 | 14 | { "Unused", "ttl.trace_data.entry.status_info.lin_unused", FT_UINT8, BASE_HEX, NULL, 0xc0, NULL, HFILL } }, |
1616 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_type, |
1617 | 14 | { "Type", "ttl.trace_data.entry.status_info.fr_type", FT_UINT16, BASE_HEX, VALS(hf_ttl_trace_data_entry_status_info_fr_type_vals), 0x0007, NULL, HFILL}}, |
1618 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_error_flags, |
1619 | 14 | { "FlexRay Flags", "ttl.trace_data.entry.status_info.fr_flags", FT_UINT16, BASE_HEX, NULL, 0x07e8, NULL, HFILL } }, |
1620 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_matched, |
1621 | 14 | { "Matched", "ttl.trace_data.entry.status_info.fr_flags.matched", FT_BOOLEAN, 16, NULL, 0x0008, NULL, HFILL } }, |
1622 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_res1, |
1623 | 14 | { "Reserved", "ttl.trace_data.entry.status_info.fr_res1", FT_UINT16, BASE_HEX, NULL, 0x0010, NULL, HFILL } }, |
1624 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_fss_error, |
1625 | 14 | { "FSS Error", "ttl.trace_data.entry.status_info.fr_flags.fss_error", FT_BOOLEAN, 16, NULL, 0x0020, NULL, HFILL } }, |
1626 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_bss_error, |
1627 | 14 | { "BSS Error", "ttl.trace_data.entry.status_info.fr_flags.bss_error", FT_BOOLEAN, 16, NULL, 0x0040, NULL, HFILL } }, |
1628 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_fes_error, |
1629 | 14 | { "FES Error", "ttl.trace_data.entry.status_info.fr_flags.fes_error", FT_BOOLEAN, 16, NULL, 0x0080, NULL, HFILL } }, |
1630 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_frame_crc_error, |
1631 | 14 | { "Frame CRC Error", "ttl.trace_data.entry.status_info.fr_flags.frame_crc_error", FT_BOOLEAN, 16, NULL, 0x0100, NULL, HFILL } }, |
1632 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_header_crc_error, |
1633 | 14 | { "Header CRC Error", "ttl.trace_data.entry.status_info.fr_flags.header_crc_error", FT_BOOLEAN, 16, NULL, 0x0200, NULL, HFILL } }, |
1634 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_idle_error, |
1635 | 14 | { "Idle Error", "ttl.trace_data.entry.status_info.fr_flags.idle_error", FT_BOOLEAN, 16, NULL, 0x0400, NULL, HFILL } }, |
1636 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_res2, |
1637 | 14 | { "Reserved", "ttl.trace_data.entry.status_info.fr_res2", FT_UINT16, BASE_HEX, NULL, 0xf800, NULL, HFILL } }, |
1638 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_res3, |
1639 | 14 | { "Reserved", "ttl.trace_data.entry.status_info.fr_res3", FT_UINT16, BASE_HEX, NULL, 0x07f0, NULL, HFILL } }, |
1640 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_pulse_flags, |
1641 | 14 | { "FlexRay Flags", "ttl.trace_data.entry.status_info.fr_pulse_flags", FT_UINT16, BASE_HEX, NULL, 0xe808, NULL, HFILL } }, |
1642 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_low_phase_exceeded, |
1643 | 14 | { "Low Phase Exceeded", "ttl.trace_data.entry.status_info.fr_flags.low_phase_exceeded", FT_BOOLEAN, 16, NULL, 0x0800, NULL, HFILL } }, |
1644 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_res4, |
1645 | 14 | { "Reserved", "ttl.trace_data.entry.status_info.fr_res4", FT_UINT16, BASE_HEX, NULL, 0x1000, NULL, HFILL } }, |
1646 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_cas, |
1647 | 14 | { "Collision Avoidance Symbol", "ttl.trace_data.entry.status_info.fr_flags.cas", FT_BOOLEAN, 16, TFS(&tfs_recognized_not_recognized), 0x2000, NULL, HFILL}}, |
1648 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_mts, |
1649 | 14 | { "Media Test Symbol", "ttl.trace_data.entry.status_info.fr_flags.mts", FT_BOOLEAN, 16, TFS(&tfs_recognized_not_recognized), 0x4000, NULL, HFILL } }, |
1650 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_wup, |
1651 | 14 | { "Wake-Up Pattern", "ttl.trace_data.entry.status_info.fr_flags.wup", FT_BOOLEAN, 16, TFS(&tfs_recognized_not_recognized), 0x8000, NULL, HFILL } }, |
1652 | 14 | { &hf_ttl_trace_data_entry_status_info_fr_res5, |
1653 | 14 | { "Reserved", "ttl.trace_data.entry.status_info.fr_res5", FT_UINT16, BASE_HEX, NULL, 0xfff8, NULL, HFILL } }, |
1654 | | |
1655 | 14 | { &hf_ttl_trace_data_entry_timestamp, |
1656 | 14 | { "Timestamp", "ttl.trace_data.entry.timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL } }, |
1657 | 14 | { &hf_ttl_trace_data_entry_eth_unused, |
1658 | 14 | { "Unused", "ttl.trace_data.entry.eth_unused", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1659 | 14 | { &hf_ttl_trace_data_entry_can_id, |
1660 | 14 | { "CAN Frame ID", "ttl.trace_data.entry.can_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } }, |
1661 | 14 | { &hf_ttl_trace_data_entry_lin_checksum, |
1662 | 14 | { "LIN Checksum", "ttl.trace_data.entry.lin_checksum", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
1663 | 14 | { &hf_ttl_trace_data_entry_fr_low_phase_counter, |
1664 | 14 | { "FlexRay Low Phase Counter", "ttl.trace_data.entry.fr_low_phase_counter", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
1665 | 14 | { &hf_ttl_trace_data_entry_fr_unused, |
1666 | 14 | { "Unused", "ttl.trace_data.entry.fr_unused", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
1667 | 14 | { &hf_ttl_trace_data_entry_fr_eray_eir_register, |
1668 | 14 | { "FlexRay Eray EIR Register", "ttl.trace_data.entry.fr_eir", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
1669 | 14 | { &hf_ttl_trace_data_entry_fr_eray_stpw1_register, |
1670 | 14 | { "FlexRay Eray STPW1 Register", "ttl.trace_data.entry.fr_stpw1", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
1671 | 14 | { &hf_ttl_trace_data_entry_fr_eray_stpw2_register, |
1672 | 14 | { "FlexRay Eray STPW2 Register", "ttl.trace_data.entry.fr_stpw2", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
1673 | 14 | { &hf_ttl_trace_data_entry_fr_eray_ccsv_register, |
1674 | 14 | { "FlexRay Eray CCSV Register", "ttl.trace_data.entry.fr_ccsv", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
1675 | 14 | { &hf_ttl_trace_data_entry_fr_eray_ccev_register, |
1676 | 14 | { "FlexRay Eray CCEV Register", "ttl.trace_data.entry.fr_ccev", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
1677 | 14 | { &hf_ttl_trace_data_entry_fr_eray_swnit_register, |
1678 | 14 | { "FlexRay Eray SWNIT Register", "ttl.trace_data.entry.fr_swnit", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
1679 | 14 | { &hf_ttl_trace_data_entry_fr_eray_acs_register, |
1680 | 14 | { "FlexRay Eray ACS Register", "ttl.trace_data.entry.fr_acs", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
1681 | | |
1682 | 14 | { &hf_ttl_trace_data_entry_unparsed, |
1683 | 14 | { "Unparsed Data", "ttl.trace_data.entry.unparsed", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1684 | 14 | { &hf_ttl_trace_data_entry_payload, |
1685 | 14 | { "Payload", "ttl.trace_data.entry.payload", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1686 | | |
1687 | 14 | { &hf_ttl_eth_phy_status, |
1688 | 14 | { "Ethernet PHY Status", "ttl.trace_data.entry.eth_phy_status", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
1689 | 14 | { &hf_ttl_eth_phy_status_valid, |
1690 | 14 | { "Valid Entry", "ttl.trace_data.entry.eth_phy_status.valid", FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x80, NULL, HFILL } }, |
1691 | 14 | { &hf_ttl_eth_phy_status_res2, |
1692 | 14 | { "Reserved", "ttl.trace_data.entry.eth_phy_status.res2", FT_UINT8, BASE_HEX, NULL, 0x60, NULL, HFILL } }, |
1693 | 14 | { &hf_ttl_eth_phy_status_phy_addr, |
1694 | 14 | { "PHY Address", "ttl.trace_data.entry.eth_phy_status.phy_addr", FT_UINT8, BASE_HEX, VALS(hf_ttl_eth_phy_status_phy_addr_vals), 0x1f, NULL, HFILL } }, |
1695 | 14 | { &hf_ttl_eth_phy_status_unused, |
1696 | 14 | { "Unused", "ttl.trace_data.entry.eth_phy_status.unused", FT_UINT8, BASE_HEX, NULL, 0x1f, NULL, HFILL } }, |
1697 | 14 | { &hf_ttl_eth_phy_status_res1, |
1698 | 14 | { "Reserved", "ttl.trace_data.entry.eth_phy_status.res1", FT_UINT8, BASE_HEX, NULL, 0xe0, NULL, HFILL } }, |
1699 | 14 | { &hf_ttl_eth_phy_status_reg_addr, |
1700 | 14 | { "MDIO Register", "ttl.trace_data.entry.eth_phy_status.reg_addr", FT_UINT8, BASE_HEX, NULL, 0x1f, NULL, HFILL } }, |
1701 | 14 | { &hf_ttl_eth_phy_status_data, |
1702 | 14 | { "MDIO Data", "ttl.trace_data.entry.eth_phy_status.data", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
1703 | 14 | }; |
1704 | | |
1705 | 14 | static ei_register_info ei[] = { |
1706 | 14 | { &ei_ttl_block_size_too_short, |
1707 | 14 | { "ttl.block_size_too_short", PI_MALFORMED, PI_ERROR, |
1708 | 14 | "block size is too short", |
1709 | 14 | EXPFILL }}, |
1710 | 14 | { &ei_ttl_header_size_too_short, |
1711 | 14 | { "ttl.header_size_too_short", PI_MALFORMED, PI_ERROR, |
1712 | 14 | "header size is too short", |
1713 | 14 | EXPFILL }}, |
1714 | 14 | { &ei_ttl_header_size_implausible, |
1715 | 14 | { "ttl.header_size_implausible", PI_MALFORMED, PI_ERROR, |
1716 | 14 | "header size is implausible", |
1717 | 14 | EXPFILL }}, |
1718 | 14 | { &ei_ttl_header_logfile_info_too_short, |
1719 | 14 | { "ttl.header.logfile_info_too_short", PI_MALFORMED, PI_ERROR, |
1720 | 14 | "logfile info is too short", |
1721 | 14 | EXPFILL }}, |
1722 | 14 | { &ei_ttl_entry_size_too_short, |
1723 | 14 | { "ttl.trace_data.entry_size_too_short", PI_MALFORMED, PI_ERROR, |
1724 | 14 | "entry size is too short", |
1725 | 14 | EXPFILL }}, |
1726 | 14 | }; |
1727 | | |
1728 | 14 | static int* ett[] = { |
1729 | 14 | &ett_ttl, |
1730 | 14 | &ett_ttl_header, |
1731 | 14 | &ett_ttl_header_logfile_info, |
1732 | 14 | &ett_ttl_header_configuration, |
1733 | 14 | &ett_ttl_trace_data, |
1734 | 14 | &ett_ttl_block, |
1735 | 14 | &ett_ttl_trace_data_entry, |
1736 | 14 | &ett_ttl_trace_data_entry_dest_addr, |
1737 | 14 | &ett_ttl_trace_data_entry_src_addr, |
1738 | 14 | &ett_ttl_trace_data_entry_meta1, |
1739 | 14 | &ett_ttl_trace_data_entry_status_information, |
1740 | 14 | &ett_ttl_trace_data_entry_status_info_can_flags, |
1741 | 14 | &ett_ttl_trace_data_entry_status_info_lin_flags, |
1742 | 14 | &ett_ttl_trace_data_entry_status_info_lin_pid, |
1743 | 14 | &ett_ttl_trace_data_entry_status_info_fr_error_flags, |
1744 | 14 | &ett_ttl_trace_data_entry_status_info_fr_pulse_flags, |
1745 | 14 | &ett_ttl_trace_data_entry_payload, |
1746 | 14 | &ett_ttl_eth_phy_status, |
1747 | 14 | }; |
1748 | | |
1749 | 14 | proto_ttl = proto_register_protocol("TTL File Format", "File-TTL", "file-ttl"); |
1750 | 14 | expert_ttl = expert_register_protocol(proto_ttl); |
1751 | 14 | expert_register_field_array(expert_ttl, ei, array_length(ei)); |
1752 | | |
1753 | 14 | proto_register_field_array(proto_ttl, hf, array_length(hf)); |
1754 | 14 | proto_register_subtree_array(ett, array_length(ett)); |
1755 | | |
1756 | 14 | register_dissector("file-ttl", dissect_ttl, proto_ttl); |
1757 | 14 | } |
1758 | | |
1759 | | void |
1760 | 14 | proto_reg_handoff_file_ttl(void) { |
1761 | 14 | heur_dissector_add("wtap_file", dissect_ttl_heur, "TTL File", "ttl_wtap", proto_ttl, HEURISTIC_ENABLE); |
1762 | 14 | xml_handle = find_dissector_add_dependency("xml", proto_ttl); |
1763 | 14 | } |
1764 | | |
1765 | | /* |
1766 | | * Editor modelines - https://www.wireshark.org/tools/modelines.html |
1767 | | * |
1768 | | * Local Variables: |
1769 | | * c-basic-offset: 4 |
1770 | | * tab-width: 8 |
1771 | | * indent-tabs-mode: nil |
1772 | | * End: |
1773 | | * |
1774 | | * ex: set shiftwidth=4 tabstop=8 expandtab: |
1775 | | * :indentSize=4:tabSize=8:noTabs=true: |
1776 | | */ |