/src/wireshark/epan/dissectors/packet-isobus-vt.c
Line | Count | Source |
1 | | /* packet-isobus-vt.c |
2 | | * Routines for ISObus VT dissection (Based on CANOpen Dissector) |
3 | | * Copyright 2016, Jeroen Sack <jeroen@jeroensack.nl> |
4 | | * ISO 11783-6 |
5 | | * |
6 | | * Wireshark - Network traffic analyzer |
7 | | * By Gerald Combs <gerald@wireshark.org> |
8 | | * Copyright 1998 Gerald Combs |
9 | | * |
10 | | * SPDX-License-Identifier: GPL-2.0-or-later |
11 | | */ |
12 | | |
13 | | #include "config.h" |
14 | | |
15 | | #include <epan/packet.h> |
16 | | #include <epan/prefs.h> |
17 | | #include <wsutil/file_util.h> |
18 | | |
19 | | #define MAX_OBJECT_ID_DB_SIZE 10000 |
20 | | |
21 | | void proto_register_isobus_vt(void); |
22 | | void proto_reg_handoff_isobus_vt(void); |
23 | | |
24 | | static uint8_t current_vt_version; |
25 | | |
26 | | /* Initialize the protocol and registered fields */ |
27 | | static int proto_vt; |
28 | | static int hf_isobus_vt; |
29 | | static int hf_isobus_vt_command; |
30 | | static int hf_isobus_vt_objectid; |
31 | | static int hf_isobus_vt_softkey_keyactcode; |
32 | | static int hf_isobus_vt_softkey_objectid; |
33 | | static int hf_isobus_vt_softkey_parentobjectid; |
34 | | static int hf_isobus_vt_softkey_keynumber; |
35 | | static int hf_isobus_vt_button_keyactcode; |
36 | | static int hf_isobus_vt_button_objectid; |
37 | | static int hf_isobus_vt_button_parentobjectid; |
38 | | static int hf_isobus_vt_button_keynumber; |
39 | | static int hf_isobus_vt_pointing_xposition; |
40 | | static int hf_isobus_vt_pointing_yposition; |
41 | | static int hf_isobus_vt_pointing_touchstate; |
42 | | static int hf_isobus_vt_vtselectinputobject_objectid; |
43 | | static int hf_isobus_vt_vtselectinputobject_selection; |
44 | | static int hf_isobus_vt_vtselectinputobject_openforinput; |
45 | | static int hf_isobus_vt_vtescmessage_objectid; |
46 | | static int hf_isobus_vt_vtescmessage_errorcodes; |
47 | | static int hf_isobus_vt_vtchgnumval_objectid; |
48 | | static int hf_isobus_vt_vtchgnumval_value; |
49 | | static int hf_isobus_vt_vtchgactivemask_maskobjectid; |
50 | | static int hf_isobus_vt_vtchgactivemask_errorcodes; |
51 | | static int hf_isobus_vt_vtchgactivemask_errorobjectid; |
52 | | static int hf_isobus_vt_vtchgactivemask_errorobjectidparent; |
53 | | static int hf_isobus_vt_vtchgstrval_objectid; |
54 | | static int hf_isobus_vt_vtchgstrval_length; |
55 | | static int hf_isobus_vt_vtchgstrval_value; |
56 | | static int hf_isobus_vt_vtonuserlayouthideshow_objectid_1; |
57 | | static int hf_isobus_vt_vtonuserlayouthideshow_status_1; |
58 | | static int hf_isobus_vt_vtonuserlayouthideshow_objectid_2; |
59 | | static int hf_isobus_vt_vtonuserlayouthideshow_status_2; |
60 | | static int hf_isobus_vt_vtcontrolaudiosignaltermination_terminationcause; |
61 | | static int hf_isobus_vt_endofobjectpool_errorcodes; |
62 | | static int hf_isobus_vt_endofobjectpool_faultyobjectid; |
63 | | static int hf_isobus_vt_endofobjectpool_faultyparentobjectid; |
64 | | static int hf_isobus_vt_endofobjectpool_objectpoolerrorcodes; |
65 | | static int hf_isobus_vt_auxiliaryassignmenttype1_sourceaddressauxinputdevice; |
66 | | static int hf_isobus_vt_auxiliaryassignmenttype1_auxinputnumber; |
67 | | static int hf_isobus_vt_auxiliaryassignmenttype1_objectidauxinputdevice; |
68 | | static int hf_isobus_vt_auxiliaryinputtype1status_inputnumber; |
69 | | static int hf_isobus_vt_auxiliaryinputtype1status_analyzevalue; |
70 | | static int hf_isobus_vt_auxiliaryinputtype1status_numberoftransitions; |
71 | | static int hf_isobus_vt_auxiliaryinputtype1status_booleanvalue; |
72 | | static int hf_isobus_vt_preferredassignment_numberofinputunits; |
73 | | static int hf_isobus_vt_preferredassignment_auxinputunit_name; |
74 | | static int hf_isobus_vt_preferredassignment_auxinputunit_modelidentificationcode; |
75 | | static int hf_isobus_vt_preferredassignment_auxinputunit_numberofpreferredfunctions; |
76 | | static int hf_isobus_vt_preferredassignment_auxinputunit_preferredfunctions_auxfunctionobjectid; |
77 | | static int hf_isobus_vt_preferredassignment_auxinputunit_preferredfunctions_auxinputobjectid; |
78 | | static int hf_isobus_vt_preferredassignment_errorcodes; |
79 | | static int hf_isobus_vt_preferredassignment_faultyauxiliaryfunctionobjectid; |
80 | | static int hf_isobus_vt_auxiliaryinputtype2maintenance_modelidentificationcode; |
81 | | static int hf_isobus_vt_auxiliaryinputtype2maintenance_status; |
82 | | static int hf_isobus_vt_auxiliaryassignmenttype2_name; |
83 | | static int hf_isobus_vt_auxiliaryassignmenttype2_flags; |
84 | | static int hf_isobus_vt_auxiliaryassignmenttype2_flags_preferredassignment; |
85 | | static int hf_isobus_vt_auxiliaryassignmenttype2_flags_auxiliaryfunctiontype; |
86 | | static int hf_isobus_vt_auxiliaryassignmenttype2_auxinputobjectid; |
87 | | static int hf_isobus_vt_auxiliaryassignmenttype2_auxfunctionobjectid; |
88 | | static int hf_isobus_vt_auxiliaryassignmenttype2_errorcodes; |
89 | | static int hf_isobus_vt_auxiliaryinputstatustype2enable_auxiliaryinputobjectid; |
90 | | static int hf_isobus_vt_auxiliaryinputstatustype2enable_enable; |
91 | | static int hf_isobus_vt_auxiliaryinputstatustype2enable_status; |
92 | | static int hf_isobus_vt_auxiliaryinputstatustype2enable_errorcodes; |
93 | | static int hf_isobus_vt_auxiliaryinputtype2status_auxiliaryinputobjectid; |
94 | | static int hf_isobus_vt_auxiliaryinputtype2status_value1; |
95 | | static int hf_isobus_vt_auxiliaryinputtype2status_value2; |
96 | | static int hf_isobus_vt_auxiliaryinputtype2status_operatingstate; |
97 | | static int hf_isobus_vt_auxiliaryinputtype2status_operatingstate_learnmodeactive; |
98 | | static int hf_isobus_vt_auxiliaryinputtype2status_operatingstate_inputactivatedinlearnmode; |
99 | | static int hf_isobus_vt_auxiliarycapabilities_requesttype; |
100 | | static int hf_isobus_vt_auxiliarycapabilities_numberofauxiliaryunits; |
101 | | static int hf_isobus_vt_auxiliarycapabilities_auxiliaryunit_name; |
102 | | static int hf_isobus_vt_auxiliarycapabilities_auxiliaryunit_numberofdifferentsets; |
103 | | static int hf_isobus_vt_auxiliarycapabilities_auxiliaryunit_set_numberofinstances; |
104 | | static int hf_isobus_vt_auxiliarycapabilities_auxiliaryunit_set_functionattribute; |
105 | | static int hf_isobus_vt_auxiliarycapabilities_auxiliaryunit_set_assignedattribute; |
106 | | static int hf_isobus_vt_esc_objectid; |
107 | | static int hf_isobus_vt_esc_errorcodes; |
108 | | static int hf_isobus_vt_hideshowobj_objectid; |
109 | | static int hf_isobus_vt_hideshowobj_action; |
110 | | static int hf_isobus_vt_hideshowobj_errorcodes; |
111 | | static int hf_isobus_vt_enabledisableobj_objectid; |
112 | | static int hf_isobus_vt_enabledisableobj_enabledisable; |
113 | | static int hf_isobus_vt_enabledisableobj_errorcodes; |
114 | | static int hf_isobus_vt_selectinputobject_objectid; |
115 | | static int hf_isobus_vt_selectinputobject_option; |
116 | | static int hf_isobus_vt_selectinputobject_response; |
117 | | static int hf_isobus_vt_selectinputobject_errorcodes; |
118 | | static int hf_isobus_vt_controlaudiosignal_activations; |
119 | | static int hf_isobus_vt_controlaudiosignal_frequency; |
120 | | static int hf_isobus_vt_controlaudiosignal_ontime; |
121 | | static int hf_isobus_vt_controlaudiosignal_offtime; |
122 | | static int hf_isobus_vt_controlaudiosignal_errorcodes; |
123 | | static int hf_isobus_vt_setaudiovolume_volume; |
124 | | static int hf_isobus_vt_setaudiovolume_errorcodes; |
125 | | static int hf_isobus_vt_changechildlocation_parentobjectid; |
126 | | static int hf_isobus_vt_changechildlocation_objectid; |
127 | | static int hf_isobus_vt_changechildlocation_relativexpos; |
128 | | static int hf_isobus_vt_changechildlocation_relativeypos; |
129 | | static int hf_isobus_vt_changechildlocation_errorcodes; |
130 | | static int hf_isobus_vt_changesize_objectid; |
131 | | static int hf_isobus_vt_changesize_newwidth; |
132 | | static int hf_isobus_vt_changesize_newheight; |
133 | | static int hf_isobus_vt_changesize_errorcodes; |
134 | | static int hf_isobus_vt_changebackgroundcolour_objectid; |
135 | | static int hf_isobus_vt_changebackgroundcolour_colour; |
136 | | static int hf_isobus_vt_changebackgroundcolour_errorcodes; |
137 | | static int hf_isobus_vt_chgnumval_objectid; |
138 | | static int hf_isobus_vt_chgnumval_errorcodes; |
139 | | static int hf_isobus_vt_chgnumval_value; |
140 | | static int hf_isobus_vt_changeendpoint_objectid; |
141 | | static int hf_isobus_vt_changeendpoint_width; |
142 | | static int hf_isobus_vt_changeendpoint_height; |
143 | | static int hf_isobus_vt_changeendpoint_linedirection; |
144 | | static int hf_isobus_vt_changefontattributes_objectid; |
145 | | static int hf_isobus_vt_changefontattributes_fontcolour; |
146 | | static int hf_isobus_vt_changefontattributes_fontsize; |
147 | | static int hf_isobus_vt_changefontattributes_fonttype; |
148 | | static int hf_isobus_vt_changefontattributes_fontstyle; |
149 | | static int hf_isobus_vt_changefontattributes_errorcodes; |
150 | | static int hf_isobus_vt_changelineattributes_objectid; |
151 | | static int hf_isobus_vt_changelineattributes_linecolour; |
152 | | static int hf_isobus_vt_changelineattributes_linewidth; |
153 | | static int hf_isobus_vt_changelineattributes_lineart; |
154 | | static int hf_isobus_vt_changelineattributes_errorcodes; |
155 | | static int hf_isobus_vt_changefillattributes_objectid; |
156 | | static int hf_isobus_vt_changefillattributes_filltype; |
157 | | static int hf_isobus_vt_changefillattributes_fillcolour; |
158 | | static int hf_isobus_vt_changefillattributes_fillpatternobjectid; |
159 | | static int hf_isobus_vt_changefillattributes_errorcodes; |
160 | | static int hf_isobus_vt_changeactivemask_workingset; |
161 | | static int hf_isobus_vt_changeactivemask_newactivemask; |
162 | | static int hf_isobus_vt_changeactivemask_errorcodes; |
163 | | static int hf_isobus_vt_changesoftkeymask_masktype; |
164 | | static int hf_isobus_vt_changesoftkeymask_datamaskobjectid; |
165 | | static int hf_isobus_vt_changesoftkeymask_newsoftkeymaskobjectid; |
166 | | static int hf_isobus_vt_changesoftkeymask_errorcodes; |
167 | | static int hf_isobus_vt_changeattributes_objectid; |
168 | | static int hf_isobus_vt_changeattributes_attributeid; |
169 | | static int hf_isobus_vt_changeattributes_newvalue; |
170 | | static int hf_isobus_vt_changeattributes_errorcodes; |
171 | | static int hf_isobus_vt_changepriority_objectid; |
172 | | static int hf_isobus_vt_changepriority_newpriority; |
173 | | static int hf_isobus_vt_changepriority_errorcodes; |
174 | | static int hf_isobus_vt_changelistitem_listobjectid; |
175 | | static int hf_isobus_vt_changelistitem_listindex; |
176 | | static int hf_isobus_vt_changelistitem_newobjectid; |
177 | | static int hf_isobus_vt_changelistitem_errorcodes; |
178 | | static int hf_isobus_vt_deleteobjectpool_errorcodes; |
179 | | static int hf_isobus_vt_chgstrval_objectid; |
180 | | static int hf_isobus_vt_chgstrval_length; |
181 | | static int hf_isobus_vt_chgstrval_errorcodes; |
182 | | static int hf_isobus_vt_chgstrval_value; |
183 | | static int hf_isobus_vt_changechildposition_parentobjectid; |
184 | | static int hf_isobus_vt_changechildposition_objectid; |
185 | | static int hf_isobus_vt_changechildposition_xpos; |
186 | | static int hf_isobus_vt_changechildposition_ypos; |
187 | | static int hf_isobus_vt_changechildposition_errorcodes; |
188 | | static int hf_isobus_vt_changeobjectlabel_objectid; |
189 | | static int hf_isobus_vt_changeobjectlabel_stringobjectid; |
190 | | static int hf_isobus_vt_changeobjectlabel_fonttype; |
191 | | static int hf_isobus_vt_changeobjectlabel_graphicobjectid; |
192 | | static int hf_isobus_vt_changeobjectlabel_errorcodes; |
193 | | static int hf_isobus_vt_changepolygonpoint_objectid; |
194 | | static int hf_isobus_vt_changepolygonpoint_pointindex; |
195 | | static int hf_isobus_vt_changepolygonpoint_xvalue; |
196 | | static int hf_isobus_vt_changepolygonpoint_yvalue; |
197 | | static int hf_isobus_vt_changepolygonpoint_errorcodes; |
198 | | static int hf_isobus_vt_changepolygonscale_objectid; |
199 | | static int hf_isobus_vt_changepolygonscale_newwidth; |
200 | | static int hf_isobus_vt_changepolygonscale_newheight; |
201 | | static int hf_isobus_vt_changepolygonscale_errorcodes; |
202 | | static int hf_isobus_vt_graphicscontext_objectid; |
203 | | static int hf_isobus_vt_graphicscontext_subcommandid; |
204 | | static int hf_isobus_vt_graphicscontext_setgraphicscursor_xposition; |
205 | | static int hf_isobus_vt_graphicscontext_setgraphicscursor_yposition; |
206 | | static int hf_isobus_vt_graphicscontext_movegraphicscursor_xoffset; |
207 | | static int hf_isobus_vt_graphicscontext_movegraphicscursor_yoffset; |
208 | | static int hf_isobus_vt_graphicscontext_setforegroundcolour_colour; |
209 | | static int hf_isobus_vt_graphicscontext_setbackgroundcolour_colour; |
210 | | static int hf_isobus_vt_graphicscontext_setlineattributesobjectid_objectid; |
211 | | static int hf_isobus_vt_graphicscontext_setfillattributesobjectid_objectid; |
212 | | static int hf_isobus_vt_graphicscontext_setfontattributesobjectid_objectid; |
213 | | static int hf_isobus_vt_graphicscontext_eraserectangle_width; |
214 | | static int hf_isobus_vt_graphicscontext_eraserectangle_height; |
215 | | static int hf_isobus_vt_graphicscontext_drawpoint_xoffset; |
216 | | static int hf_isobus_vt_graphicscontext_drawpoint_yoffset; |
217 | | static int hf_isobus_vt_graphicscontext_drawline_xoffset; |
218 | | static int hf_isobus_vt_graphicscontext_drawline_yoffset; |
219 | | static int hf_isobus_vt_graphicscontext_drawrectangle_width; |
220 | | static int hf_isobus_vt_graphicscontext_drawrectangle_height; |
221 | | static int hf_isobus_vt_graphicscontext_drawclosedellipse_width; |
222 | | static int hf_isobus_vt_graphicscontext_drawclosedellipse_height; |
223 | | static int hf_isobus_vt_graphicscontext_drawpolygon_numberofpoints; |
224 | | static int hf_isobus_vt_graphicscontext_drawpolygon_point_xoffset; |
225 | | static int hf_isobus_vt_graphicscontext_drawpolygon_point_yoffset; |
226 | | static int hf_isobus_vt_graphicscontext_drawtext_background; |
227 | | static int hf_isobus_vt_graphicscontext_drawtext_numberofbytes; |
228 | | static int hf_isobus_vt_graphicscontext_drawtext_textstring; |
229 | | static int hf_isobus_vt_graphicscontext_panviewport_viewportx; |
230 | | static int hf_isobus_vt_graphicscontext_panviewport_viewporty; |
231 | | static int hf_isobus_vt_graphicscontext_zoomviewport_zoomvalue; |
232 | | static int hf_isobus_vt_graphicscontext_panandzoomviewport_viewportx; |
233 | | static int hf_isobus_vt_graphicscontext_panandzoomviewport_viewporty; |
234 | | static int hf_isobus_vt_graphicscontext_panandzoomviewport_zoomvalue; |
235 | | static int hf_isobus_vt_graphicscontext_changeviewportsize_newwidth; |
236 | | static int hf_isobus_vt_graphicscontext_changeviewportsize_newheight; |
237 | | static int hf_isobus_vt_graphicscontext_drawvtobject_objectid; |
238 | | static int hf_isobus_vt_graphicscontext_copycanvastopicturegraphic_objectidpicturegraphic; |
239 | | static int hf_isobus_vt_graphicscontext_copyviewporttopicturegraphic_objectidpicturegraphic; |
240 | | static int hf_isobus_vt_getattributevalue_objectid; |
241 | | static int hf_isobus_vt_getattributevalue_attributeid; |
242 | | static int hf_isobus_vt_getattributevalue_value; |
243 | | static int hf_isobus_vt_getattributevalue_errorcodes; |
244 | | static int hf_isobus_vt_selectcolourmap_objectid; |
245 | | static int hf_isobus_vt_selectcolourmap_errorcodes; |
246 | | static int hf_isobus_vt_executeextendedmacro_objectid; |
247 | | static int hf_isobus_vt_executeextendedmacro_errorcodes; |
248 | | static int hf_isobus_vt_lockunlockmask_command; |
249 | | static int hf_isobus_vt_lockunlockmask_objectid; |
250 | | static int hf_isobus_vt_lockunlockmask_locktimeout; |
251 | | static int hf_isobus_vt_lockunlockmask_errorcodes; |
252 | | static int hf_isobus_vt_executemacro_objectid; |
253 | | static int hf_isobus_vt_executemacro_errorcodes; |
254 | | static int hf_isobus_vt_getmemory_memoryrequired; |
255 | | static int hf_isobus_vt_getmemory_vtversion; |
256 | | static int hf_isobus_vt_getmemory_status; |
257 | | static int hf_isobus_vt_getsupportedwidechars_codeplane; |
258 | | static int hf_isobus_vt_getsupportedwidechars_firstwidechar; |
259 | | static int hf_isobus_vt_getsupportedwidechars_lastwidechar; |
260 | | static int hf_isobus_vt_getsupportedwidechars_errorcodes; |
261 | | static int hf_isobus_vt_getsupportedwidechars_numberofranges; |
262 | | static int hf_isobus_vt_getsupportedwidechars_firstavailablewidechar; |
263 | | static int hf_isobus_vt_getsupportedwidechars_lastavailablewidechar; |
264 | | static int hf_isobus_vt_getnumberofsoftkeys_navigationsoftkeys; |
265 | | static int hf_isobus_vt_getnumberofsoftkeys_xdots; |
266 | | static int hf_isobus_vt_getnumberofsoftkeys_ydots; |
267 | | static int hf_isobus_vt_getnumberofsoftkeys_virtualsoftkeys; |
268 | | static int hf_isobus_vt_getnumberofsoftkeys_physicalsoftkeys; |
269 | | static int hf_isobus_vt_gettextfontdata_smallfontsizes; |
270 | | static int hf_isobus_vt_gettextfontdata_smallfontsizes_font8x8; |
271 | | static int hf_isobus_vt_gettextfontdata_smallfontsizes_font8x12; |
272 | | static int hf_isobus_vt_gettextfontdata_smallfontsizes_font12x16; |
273 | | static int hf_isobus_vt_gettextfontdata_smallfontsizes_font16x16; |
274 | | static int hf_isobus_vt_gettextfontdata_smallfontsizes_font16x24; |
275 | | static int hf_isobus_vt_gettextfontdata_smallfontsizes_font24x32; |
276 | | static int hf_isobus_vt_gettextfontdata_smallfontsizes_font32x32; |
277 | | static int hf_isobus_vt_gettextfontdata_largefontsizes; |
278 | | static int hf_isobus_vt_gettextfontdata_largefontsizes_font32x48; |
279 | | static int hf_isobus_vt_gettextfontdata_largefontsizes_font48x64; |
280 | | static int hf_isobus_vt_gettextfontdata_largefontsizes_font64x64; |
281 | | static int hf_isobus_vt_gettextfontdata_largefontsizes_font64x96; |
282 | | static int hf_isobus_vt_gettextfontdata_largefontsizes_font96x128; |
283 | | static int hf_isobus_vt_gettextfontdata_largefontsizes_font128x128; |
284 | | static int hf_isobus_vt_gettextfontdata_largefontsizes_font128x192; |
285 | | static int hf_isobus_vt_gettextfontdata_typeattributes; |
286 | | static int hf_isobus_vt_gettextfontdata_typeattributes_boldtext; |
287 | | static int hf_isobus_vt_gettextfontdata_typeattributes_crossedouttext; |
288 | | static int hf_isobus_vt_gettextfontdata_typeattributes_underlinedtext; |
289 | | static int hf_isobus_vt_gettextfontdata_typeattributes_italicstext; |
290 | | static int hf_isobus_vt_gettextfontdata_typeattributes_invertedtext; |
291 | | static int hf_isobus_vt_gettextfontdata_typeattributes_flashinverted; |
292 | | static int hf_isobus_vt_gettextfontdata_typeattributes_flashhidden; |
293 | | static int hf_isobus_vt_gettextfontdata_typeattributes_proportionalfontrendering; |
294 | | static int hf_isobus_vt_getwindowmaskdata_backgroundcolourdatamask; |
295 | | static int hf_isobus_vt_getwindowmaskdata_backgroundcoloursoftkeymask; |
296 | | static int hf_isobus_vt_getsupportedobjects_numberofbytes; |
297 | | static int hf_isobus_vt_getsupportedobjects_objecttype; |
298 | | static int hf_isobus_vt_gethardware_boottime; |
299 | | static int hf_isobus_vt_gethardware_graphictype; |
300 | | static int hf_isobus_vt_gethardware_hardware; |
301 | | static int hf_isobus_vt_gethardware_hardware_touchscreen; |
302 | | static int hf_isobus_vt_gethardware_hardware_pointingdevice; |
303 | | static int hf_isobus_vt_gethardware_hardware_multifreqaudiooutput; |
304 | | static int hf_isobus_vt_gethardware_hardware_adjustvolumeaudiooutput; |
305 | | static int hf_isobus_vt_gethardware_hardware_simultaneousactivationphysicalsoftkeys; |
306 | | static int hf_isobus_vt_gethardware_hardware_simultaneousactivationbuttons; |
307 | | static int hf_isobus_vt_gethardware_hardware_dragoperation; |
308 | | static int hf_isobus_vt_gethardware_hardware_intermediatecoordinatesdrag; |
309 | | static int hf_isobus_vt_gethardware_xpixels; |
310 | | static int hf_isobus_vt_gethardware_ypixels; |
311 | | static int hf_isobus_vt_storeversion_versionlabel; |
312 | | static int hf_isobus_vt_storeversion_errorcodes; |
313 | | static int hf_isobus_vt_loadversion_versionlabel; |
314 | | static int hf_isobus_vt_loadversion_errorcodes; |
315 | | static int hf_isobus_vt_deleteversion_versionlabel; |
316 | | static int hf_isobus_vt_deleteversion_errorcodes; |
317 | | static int hf_isobus_vt_extendedgetversions_numberofversions; |
318 | | static int hf_isobus_vt_extendedgetversions_versionlabel; |
319 | | static int hf_isobus_vt_extendedstoreversion_versionlabel; |
320 | | static int hf_isobus_vt_extendedstoreversion_errorcodes; |
321 | | static int hf_isobus_vt_extendedloadversion_versionlabel; |
322 | | static int hf_isobus_vt_extendedloadversion_errorcodes; |
323 | | static int hf_isobus_vt_extendeddeleteversion_versionlabel; |
324 | | static int hf_isobus_vt_extendeddeleteversion_errorcodes; |
325 | | static int hf_isobus_vt_getversions_numberofversions; |
326 | | static int hf_isobus_vt_getversions_versionlabel; |
327 | | static int hf_isobus_vt_unsupportedvtfunction_unsupportedvtfunction; |
328 | | static int hf_isobus_vt_vtstatus_workingsetmaster; |
329 | | static int hf_isobus_vt_vtstatus_objectiddatamask; |
330 | | static int hf_isobus_vt_vtstatus_objectidsoftkeymask; |
331 | | static int hf_isobus_vt_vtstatus_vtbusycodes; |
332 | | static int hf_isobus_vt_vtstatus_vtbusycodes_updatingvisiblemask; |
333 | | static int hf_isobus_vt_vtstatus_vtbusycodes_savingdata; |
334 | | static int hf_isobus_vt_vtstatus_vtbusycodes_executingcommand; |
335 | | static int hf_isobus_vt_vtstatus_vtbusycodes_executingmacro; |
336 | | static int hf_isobus_vt_vtstatus_vtbusycodes_parsingobjectpool; |
337 | | static int hf_isobus_vt_vtstatus_vtbusycodes_auxcontrolsactive; |
338 | | static int hf_isobus_vt_vtstatus_vtbusycodes_outofmemory; |
339 | | static int hf_isobus_vt_vtstatus_vtfunctioncodes; |
340 | | static int hf_isobus_vt_wrksetmain_bitmask; |
341 | | static int hf_isobus_vt_wrksetmain_version; |
342 | | static int hf_isobus_vt_screencapture_item; |
343 | | static int hf_isobus_vt_screencapture_path; |
344 | | static int hf_isobus_vt_screencapture_response_errorcodes; |
345 | | static int hf_isobus_vt_screencapture_response_errorcodes_flags; |
346 | | static int hf_isobus_vt_screen_capture_response_error_not_enabled; |
347 | | static int hf_isobus_vt_screen_capture_response_error_vt_transfer_is_busy; |
348 | | static int hf_isobus_vt_screen_capture_response_error_item_unsupported; |
349 | | static int hf_isobus_vt_screen_capture_response_error_path_unsupported; |
350 | | static int hf_isobus_vt_screen_capture_response_error_removable_media_is_full_or_unavailable; |
351 | | static int hf_isobus_vt_screen_capture_response_error_other; |
352 | | static int hf_isobus_vt_screencapture_response_imageid; |
353 | | |
354 | | |
355 | 0 | #define VT_SOFT_KEY_ACTIVATION 0 |
356 | 0 | #define VT_BUTTON_ACTIVATION 1 |
357 | 0 | #define VT_POINTING_EVENT 2 |
358 | 0 | #define VT_VT_SELECT_INPUT_OBJECT 3 |
359 | 0 | #define VT_VT_ESC_MESSAGE 4 |
360 | 0 | #define VT_VT_CHANGE_NUMERIC_VALUE 5 |
361 | 0 | #define VT_VT_CHANGE_ACTIVE_MASK 6 |
362 | | #define VT_VT_CHANGE_SOFT_KEY_MASK 7 |
363 | 0 | #define VT_VT_CHANGE_STRING_VALUE 8 |
364 | 0 | #define VT_VT_ON_USER_LAYOUT_HIDE_SHOW 9 |
365 | 0 | #define VT_VT_CONTROL_AUDIO_SIGNAL_TERMINATION 10 |
366 | | #define VT_OBJECT_POOL_TRANSFER 17 |
367 | 0 | #define VT_END_OF_OBJECT_POOL 18 |
368 | 0 | #define VT_AUXILIARY_ASSIGNMENT_TYPE_1 32 |
369 | 0 | #define VT_AUXILIARY_INPUT_TYPE_1_STATUS 33 |
370 | 0 | #define VT_PREFERRED_ASSIGNMENT 34 |
371 | 0 | #define VT_AUXILIARY_INPUT_TYPE_2_MAINTENANCE 35 |
372 | 0 | #define VT_AUXILIARY_ASSIGNMENT_TYPE_2 36 |
373 | 0 | #define VT_AUXILIARY_INPUT_STATUS_TYPE_2_ENABLE 37 |
374 | 0 | #define VT_AUXILIARY_INPUT_TYPE_2_STATUS 38 |
375 | 0 | #define VT_AUXILIARY_CAPABILITIES 39 |
376 | 0 | #define VT_ESC 146 |
377 | 0 | #define VT_HIDE_SHOW_OBJECT 160 |
378 | 0 | #define VT_ENABLE_DISABLE_COMMAND 161 |
379 | 0 | #define VT_SELECT_INPUT_OBJECT 162 |
380 | 0 | #define VT_CONTROL_AUDIO_SIGNAL 163 |
381 | 0 | #define VT_SET_AUDIO_VOLUME 164 |
382 | 0 | #define VT_CHANGE_CHILD_LOCATION 165 |
383 | 0 | #define VT_CHANGE_SIZE 166 |
384 | 0 | #define VT_CHANGE_BACKGROUND_COLOUR 167 |
385 | 0 | #define VT_CHANGE_NUMERIC_VALUE 168 |
386 | 0 | #define VT_CHANGE_END_POINT 169 |
387 | 0 | #define VT_CHANGE_FONT_ATTRIBUTES 170 |
388 | 0 | #define VT_CHANGE_LINE_ATTRIBUTES 171 |
389 | 0 | #define VT_CHANGE_FILL_ATTRIBUTES 172 |
390 | 0 | #define VT_CHANGE_ACTIVE_MASK 173 |
391 | 0 | #define VT_CHANGE_SOFT_KEY_MASK 174 |
392 | 0 | #define VT_CHANGE_ATTRIBUTES 175 |
393 | 0 | #define VT_CHANGE_PRIORITY 176 |
394 | 0 | #define VT_CHANGE_LIST_ITEM 177 |
395 | 0 | #define VT_DELETE_OBJECT_POOL 178 |
396 | 0 | #define VT_CHANGE_STRING_VALUE 179 |
397 | 0 | #define VT_CHANGE_CHILD_POSITION 180 |
398 | 0 | #define VT_CHANGE_OBJECT_LABEL 181 |
399 | 0 | #define VT_CHANGE_POLYGON_POINT 182 |
400 | 0 | #define VT_CHANGE_POLYGON_SCALE 183 |
401 | 0 | #define VT_GRAPHICS_CONTEXT 184 |
402 | 0 | #define VT_GET_ATTRIBUTE_VALUE 185 |
403 | 0 | #define VT_SELECT_COLOUR_MAP 186 |
404 | 0 | #define VT_IDENTIFY_VT 187 |
405 | 0 | #define VT_EXECUTE_EXTENDED_MACRO 188 |
406 | 0 | #define VT_LOCK_UNLOCK_MASK 189 |
407 | 0 | #define VT_EXECUTE_MACRO 190 |
408 | 0 | #define VT_GET_MEMORY 192 |
409 | 0 | #define VT_GET_SUPPORTED_WIDECHARS 193 |
410 | 0 | #define VT_GET_NUMBER_OF_SOFT_KEYS 194 |
411 | 0 | #define VT_GET_TEXT_FONT_DATA 195 |
412 | 0 | #define VT_GET_WINDOW_MASK_DATA 196 |
413 | 0 | #define VT_GET_SUPPORTED_OBJECTS 197 |
414 | 0 | #define VT_SCREEN_CAPTURE 198 |
415 | 0 | #define VT_GET_HARDWARE 199 |
416 | 0 | #define VT_STORE_VERSION 208 |
417 | 0 | #define VT_LOAD_VERSION 209 |
418 | 0 | #define VT_DELETE_VERSION 210 |
419 | 0 | #define VT_EXTENDED_GET_VERSIONS 211 |
420 | 0 | #define VT_EXTENDED_STORE_VERSION 212 |
421 | 0 | #define VT_EXTENDED_LOAD_VERSION 213 |
422 | 0 | #define VT_EXTENDED_DELETE_VERSION 214 |
423 | 0 | #define VT_GET_VERSIONS_MESSAGE 223 |
424 | 0 | #define VT_GET_VERSIONS_RESPONSE 224 |
425 | 0 | #define VT_UNSUPPORTED_VT_FUNCTION 253 |
426 | 0 | #define VT_VT_STATUS 254 |
427 | 0 | #define VT_WORKING_SET_MAINTENANCE 255 |
428 | | |
429 | | static const value_string vt_function_code[] = { |
430 | | { VT_SOFT_KEY_ACTIVATION , "Soft Key Activation" }, |
431 | | { VT_BUTTON_ACTIVATION , "Button Activation" }, |
432 | | { VT_POINTING_EVENT , "Pointing Event" }, |
433 | | { VT_VT_SELECT_INPUT_OBJECT , "VT Select Input Object" }, |
434 | | { VT_VT_ESC_MESSAGE , "VT ESC message" }, |
435 | | { VT_VT_CHANGE_NUMERIC_VALUE , "VT Change Numeric Value" }, |
436 | | { VT_VT_CHANGE_ACTIVE_MASK , "VT Change Active Mask" }, |
437 | | { VT_VT_CHANGE_SOFT_KEY_MASK , "VT Change Soft Key Mask" }, |
438 | | { VT_VT_CHANGE_STRING_VALUE , "VT Change String Value" }, |
439 | | { VT_VT_ON_USER_LAYOUT_HIDE_SHOW , "VT On User-Layout Hide/Show" }, |
440 | | { VT_VT_CONTROL_AUDIO_SIGNAL_TERMINATION , "VT Control Audio Signal Termination" }, |
441 | | { VT_OBJECT_POOL_TRANSFER , "Object pool transfer" }, |
442 | | { VT_END_OF_OBJECT_POOL , "End of Object Pool" }, |
443 | | { VT_AUXILIARY_ASSIGNMENT_TYPE_1 , "Auxiliary Assignment Type 1" }, |
444 | | { VT_AUXILIARY_INPUT_TYPE_1_STATUS , "Auxiliary Input Type 1" }, |
445 | | { VT_PREFERRED_ASSIGNMENT , "Preferred Assignment" }, |
446 | | { VT_AUXILIARY_INPUT_TYPE_2_MAINTENANCE , "Auxiliary Input Type 2 Maintenance" }, |
447 | | { VT_AUXILIARY_ASSIGNMENT_TYPE_2 , "Auxiliary Assignment Type 2" }, |
448 | | { VT_AUXILIARY_INPUT_STATUS_TYPE_2_ENABLE, "Auxiliary Input Status Type 2 Enable" }, |
449 | | { VT_AUXILIARY_INPUT_TYPE_2_STATUS , "Auxiliary Input Type 2 Status" }, |
450 | | { VT_AUXILIARY_CAPABILITIES , "Auxiliary Capabilities" }, |
451 | | { VT_ESC , "ESC" }, |
452 | | { VT_HIDE_SHOW_OBJECT , "Hide/Show Object" }, |
453 | | { VT_ENABLE_DISABLE_COMMAND , "Enable/Disable Object" }, |
454 | | { VT_SELECT_INPUT_OBJECT , "Select Input Object" }, |
455 | | { VT_CONTROL_AUDIO_SIGNAL , "Control Audio Signal" }, |
456 | | { VT_SET_AUDIO_VOLUME , "Set Audio Volume" }, |
457 | | { VT_CHANGE_CHILD_LOCATION , "Change Child Location" }, |
458 | | { VT_CHANGE_SIZE , "Change Size" }, |
459 | | { VT_CHANGE_BACKGROUND_COLOUR , "Change Background Colour" }, |
460 | | { VT_CHANGE_NUMERIC_VALUE , "Change Numeric Value" }, |
461 | | { VT_CHANGE_END_POINT , "Change End Point" }, |
462 | | { VT_CHANGE_FONT_ATTRIBUTES , "Change Font Attributes" }, |
463 | | { VT_CHANGE_LINE_ATTRIBUTES , "Change Line Attributes" }, |
464 | | { VT_CHANGE_FILL_ATTRIBUTES , "Change Fill Attributes" }, |
465 | | { VT_CHANGE_ACTIVE_MASK , "Change Active Mask" }, |
466 | | { VT_CHANGE_SOFT_KEY_MASK , "Change Soft Key Mask" }, |
467 | | { VT_CHANGE_ATTRIBUTES , "Change Attribute" }, |
468 | | { VT_CHANGE_PRIORITY , "Change Priority" }, |
469 | | { VT_CHANGE_LIST_ITEM , "Change List Item" }, |
470 | | { VT_DELETE_OBJECT_POOL , "Delete Object Pool" }, |
471 | | { VT_CHANGE_STRING_VALUE , "Change String Value" }, |
472 | | { VT_CHANGE_CHILD_POSITION , "Change Child Position" }, |
473 | | { VT_CHANGE_OBJECT_LABEL , "Change Object Label" }, |
474 | | { VT_CHANGE_POLYGON_POINT , "Change Polygon Point" }, |
475 | | { VT_CHANGE_POLYGON_SCALE , "Change Polygon Scale" }, |
476 | | { VT_GRAPHICS_CONTEXT , "Graphics Context" }, |
477 | | { VT_GET_ATTRIBUTE_VALUE , "Get Attribute Value" }, |
478 | | { VT_SELECT_COLOUR_MAP , "Select Colour Map" }, |
479 | | { VT_IDENTIFY_VT , "Identify VT" }, |
480 | | { VT_EXECUTE_EXTENDED_MACRO , "Execute Extended Macro" }, |
481 | | { VT_LOCK_UNLOCK_MASK , "Lock/Unlock Mask" }, |
482 | | { VT_EXECUTE_MACRO , "Execute Macro" }, |
483 | | { VT_GET_MEMORY , "Get Memory" }, |
484 | | { VT_GET_SUPPORTED_WIDECHARS , "Get Supported Widechars" }, |
485 | | { VT_GET_NUMBER_OF_SOFT_KEYS , "Get Number of Soft Keys" }, |
486 | | { VT_GET_TEXT_FONT_DATA , "Get Text Font Data" }, |
487 | | { VT_GET_WINDOW_MASK_DATA , "Get Window Mask Data" }, |
488 | | { VT_GET_SUPPORTED_OBJECTS , "Get Supported Objects" }, |
489 | | { VT_SCREEN_CAPTURE , "Screen capture" }, |
490 | | { VT_GET_HARDWARE , "Get Hardware" }, |
491 | | { VT_STORE_VERSION , "Store Version" }, |
492 | | { VT_LOAD_VERSION , "Load Version" }, |
493 | | { VT_DELETE_VERSION , "Delete Version" }, |
494 | | { VT_EXTENDED_GET_VERSIONS , "Extended Get Versions" }, |
495 | | { VT_EXTENDED_STORE_VERSION , "Extended Store Version" }, |
496 | | { VT_EXTENDED_LOAD_VERSION , "Extended Load Version" }, |
497 | | { VT_EXTENDED_DELETE_VERSION , "Extended Delete Version" }, |
498 | | { VT_GET_VERSIONS_MESSAGE , "Get Versions message" }, |
499 | | { VT_GET_VERSIONS_RESPONSE , "Get Versions response" }, |
500 | | { VT_UNSUPPORTED_VT_FUNCTION , "Unsupported VT Function" }, |
501 | | { VT_VT_STATUS , "VT Status" }, |
502 | | { VT_WORKING_SET_MAINTENANCE , "Working Set Maintenance" }, |
503 | | { 0, NULL } |
504 | | }; |
505 | | static value_string_ext vt_function_code_ext = VALUE_STRING_EXT_INIT(vt_function_code); |
506 | | |
507 | 0 | #define SET_GRAPHICS_CURSOR 0 |
508 | 0 | #define MOVE_GRAPHICS_CURSOR 1 |
509 | 0 | #define SET_FOREGROUND_COLOUR 2 |
510 | 0 | #define SET_BACKGROUND_COLOUR 3 |
511 | 0 | #define SET_LINE_ATTRIBUTES_OBJECT_ID 4 |
512 | 0 | #define SET_FILL_ATTRIBUTES_OBJECT_ID 5 |
513 | 0 | #define SET_FONT_ATTRIBUTES_OBJECT_ID 6 |
514 | 0 | #define ERASE_RECTANGLE 7 |
515 | 0 | #define DRAW_POINT 8 |
516 | 0 | #define DRAW_LINE 9 |
517 | 0 | #define DRAW_RECTANGLE 10 |
518 | 0 | #define DRAW_CLOSED_ELLIPSE 11 |
519 | 0 | #define DRAW_POLYGON 12 |
520 | 0 | #define DRAW_TEXT 13 |
521 | 0 | #define PAN_VIEWPORT 14 |
522 | 0 | #define ZOOM_VIEWPORT 15 |
523 | 0 | #define PAN_AND_ZOOM_VIEWPORT 16 |
524 | 0 | #define CHANGE_VIEWPORT_SIZE 17 |
525 | 0 | #define DRAW_VT_OBJECT 18 |
526 | 0 | #define COPY_CANVAS_TO_PICTURE_GRAPHIC 19 |
527 | 0 | #define COPY_VIEWPORT_TO_PICTURE_GRAPHIC 20 |
528 | | |
529 | | static const value_string graphics_context_sub_command_id[] = { |
530 | | { SET_GRAPHICS_CURSOR , "Set Graphics Cursor" }, |
531 | | { MOVE_GRAPHICS_CURSOR , "Move Graphics Cursor" }, |
532 | | { SET_FOREGROUND_COLOUR , "Set Foreground Colour" }, |
533 | | { SET_BACKGROUND_COLOUR , "Set Background Colour" }, |
534 | | { SET_LINE_ATTRIBUTES_OBJECT_ID , "Set Line Attributes Object ID" }, |
535 | | { SET_FILL_ATTRIBUTES_OBJECT_ID , "Set Fill Attributes Object ID" }, |
536 | | { SET_FONT_ATTRIBUTES_OBJECT_ID , "Set Font Attributes Object ID" }, |
537 | | { ERASE_RECTANGLE , "Erase Rectangle" }, |
538 | | { DRAW_POINT , "Draw Point" }, |
539 | | { DRAW_LINE , "Draw Line" }, |
540 | | { DRAW_RECTANGLE , "Draw Rectangle" }, |
541 | | { DRAW_CLOSED_ELLIPSE , "Draw Closed Ellipse" }, |
542 | | { DRAW_POLYGON , "Draw Polygon" }, |
543 | | { DRAW_TEXT , "Draw Text" }, |
544 | | { PAN_VIEWPORT , "Pan Viewport" }, |
545 | | { ZOOM_VIEWPORT , "Zoom Viewport" }, |
546 | | { PAN_AND_ZOOM_VIEWPORT , "Pan and Zoom Viewport" }, |
547 | | { CHANGE_VIEWPORT_SIZE , "Change Viewport Size" }, |
548 | | { DRAW_VT_OBJECT , "Draw VT Object" }, |
549 | | { COPY_CANVAS_TO_PICTURE_GRAPHIC , "Copy Canvas to Picture Graphic" }, |
550 | | { COPY_VIEWPORT_TO_PICTURE_GRAPHIC , "Copy Viewport to Picture Graphic" }, |
551 | | { 0, NULL } |
552 | | }; |
553 | | static value_string_ext graphics_context_sub_command_id_ext = VALUE_STRING_EXT_INIT(graphics_context_sub_command_id); |
554 | | |
555 | | static const value_string vt_hide_show_action[] = { |
556 | | { 0, "Hide" }, |
557 | | { 1, "Show" }, |
558 | | { 0, NULL } |
559 | | }; |
560 | | |
561 | | static const value_string vt_hide_show_action_info[] = { |
562 | | { 0, "hidden" }, |
563 | | { 1, "shown" }, |
564 | | { 0, NULL } |
565 | | }; |
566 | | |
567 | | static const value_string vt_enable_disable_action[] = { |
568 | | { 0, "Disable" }, |
569 | | { 1, "Enable" }, |
570 | | { 0, NULL } |
571 | | }; |
572 | | |
573 | | static const range_string vt_colours[] = { |
574 | | { 0 , 0 , "Black" }, |
575 | | { 1 , 1 , "White" }, |
576 | | { 2 , 2 , "Green" }, |
577 | | { 3 , 3 , "Teal" }, |
578 | | { 4 , 4 , "Maroon" }, |
579 | | { 5 , 5 , "Purple" }, |
580 | | { 6 , 6 , "Olive" }, |
581 | | { 7 , 7 , "Silver" }, |
582 | | { 8 , 8 , "Grey" }, |
583 | | { 9 , 9 , "Blue" }, |
584 | | { 10 , 10 , "Lime" }, |
585 | | { 11 , 11 , "Cyan" }, |
586 | | { 12 , 12 , "Red" }, |
587 | | { 13 , 13 , "Magenta" }, |
588 | | { 14 , 14 , "Yellow" }, |
589 | | { 15 , 15 , "Navy" }, |
590 | | { 16 , 231, "Colour code defined" }, |
591 | | { 232, 255, "Proprietary" }, |
592 | | { 0 , 0 , NULL } |
593 | | }; |
594 | | |
595 | | #define KEY_RELEASED 0 |
596 | | #define KEY_PRESSED 1 |
597 | | #define KEY_STILL_PRESSED 2 |
598 | | #define KEY_PRESS_ABORTED 3 |
599 | | |
600 | | static const value_string key_activation_codes[] = { |
601 | | { KEY_RELEASED, "Key has been released (state change)" }, |
602 | | { KEY_PRESSED, "Key has been pressed (state change)" }, |
603 | | { KEY_STILL_PRESSED, "Key is still pressed" }, |
604 | | { KEY_PRESS_ABORTED, "Key press aborted" }, |
605 | | { 0, NULL } |
606 | | }; |
607 | | |
608 | | static const value_string key_activation_codes_info_postfix[] = { |
609 | | { KEY_RELEASED, "has been released" }, |
610 | | { KEY_PRESSED, "has been pressed" }, |
611 | | { KEY_STILL_PRESSED, "is still held" }, |
612 | | { KEY_PRESS_ABORTED, "press aborted" }, |
613 | | { 0, NULL } |
614 | | }; |
615 | | |
616 | | #define BUTTON_RELEASED 0 |
617 | | #define BUTTON_PRESSED 1 |
618 | | #define BUTTON_STILL_HELD 2 |
619 | | #define BUTTON_PRESS_ABORTED 3 |
620 | | |
621 | | static const value_string button_activation_codes[] = { |
622 | | { BUTTON_RELEASED, "Button has been unlatched or released (state change)" }, |
623 | | { BUTTON_PRESSED, "Button has been \"pressed\" or latched (state change)" }, |
624 | | { BUTTON_STILL_HELD, "Button is still held (latchable buttons do not repeat)" }, |
625 | | { BUTTON_PRESS_ABORTED, "Button press aborted" }, |
626 | | { 0, NULL } |
627 | | }; |
628 | | |
629 | | #define TOUCH_RELEASED 0 |
630 | | #define TOUCH_PRESSED 1 |
631 | | #define TOUCH_HELD 2 |
632 | | |
633 | | static const value_string pointing_touch_state[] = { |
634 | | { TOUCH_RELEASED, "Released" }, |
635 | | { TOUCH_PRESSED, "Pressed" }, |
636 | | { TOUCH_HELD, "Held" }, |
637 | | { 0, NULL } |
638 | | }; |
639 | | |
640 | | static const value_string pointing_touch_state_info_postfix[] = { |
641 | | { TOUCH_RELEASED, "has been released" }, |
642 | | { TOUCH_PRESSED, "has been pressed" }, |
643 | | { TOUCH_HELD, "is still held" }, |
644 | | { 0, NULL } |
645 | | }; |
646 | | |
647 | | static const value_string selection[] = { |
648 | | { 0, "Object is deselected" }, |
649 | | { 1, "Object is selected (has focus)" }, |
650 | | { 0, NULL } |
651 | | }; |
652 | | |
653 | | static const range_string vt_versions[] = { |
654 | | { 0, 2, "Reserved" }, |
655 | | { 3, 3, "Compliant with VT Version 3" }, |
656 | | { 4, 4, "Compliant with VT Version 4" }, |
657 | | { 5, 5, "Compliant with VT Version 5" }, |
658 | | { 6, 254, "Reserved" }, |
659 | | { 255, 255, "Compliant with VT Version 2" }, |
660 | | { 0, 0, NULL } |
661 | | }; |
662 | | |
663 | | static const range_string screencapture_items[] = { |
664 | | { 0, 0, "Screen Image" }, |
665 | | { 1, 239, "Reserved" }, |
666 | | { 240, 255, "Manufacturer Proprietary" }, |
667 | | { 0, 0, NULL } |
668 | | }; |
669 | | |
670 | | static const range_string screencapture_path[] = { |
671 | | { 0, 0, "Reserved" }, |
672 | | { 1, 1, "VT accessible storage/removable media" }, |
673 | | { 2, 239, "Reserved" }, |
674 | | { 240, 255, "Manufacturer Proprietary" }, |
675 | | { 0, 0, NULL } |
676 | | }; |
677 | | |
678 | | static const value_string line_direction[] = { |
679 | | { 0, "Top left to bottom right" }, |
680 | | { 1, "Bottom left to top right" }, |
681 | | { 0, NULL } |
682 | | }; |
683 | | |
684 | 0 | #define MASK_UNLOCK 0 |
685 | 0 | #define MASK_LOCK 1 |
686 | | |
687 | | static const value_string lock_unlock[] = { |
688 | | { MASK_UNLOCK, "Unlock Data Mask or User-Layout Data Mask" }, |
689 | | { MASK_LOCK , "Lock Data Mask or User-Layout Data Mask" }, |
690 | | { 0, NULL } |
691 | | }; |
692 | | |
693 | 0 | #define ENOUGH_MEMORY 0 |
694 | | #define NOT_ENOUGH_MEMORY 1 |
695 | | |
696 | | static const value_string memory_status[] = { |
697 | | { ENOUGH_MEMORY , "There can be enough memory." }, |
698 | | { NOT_ENOUGH_MEMORY, "There is not enough memory available. Do not transmit Object Pool." }, |
699 | | { 0, NULL } |
700 | | }; |
701 | | |
702 | | static const value_string vt_versions_extended[] = { |
703 | | { 0, "Hannover Agritechnica 2001 limited feature set" }, |
704 | | { 1, "FDIS Version ISO11783-6:2004(E), (Final Draft International Standard)" }, |
705 | | { 2, "IS Version ISO11783-6:2004(E), First Edition, 2004-06-15" }, |
706 | | { 3, "IS Version ISO11783-6:2010(E), Second Edition, (ISO11783-6:2004(E) and features specifically noted with version 3 reference)" }, |
707 | | { 4, "IS Version ISO11783-6:2010(E), Second Edition, (ISO11783-6:2004(E) and features specifically noted with version 4 reference)" }, |
708 | | { 5, "IS Version ISO11783-6:2014(E), Third Edition" }, |
709 | | { 0, NULL } |
710 | | }; |
711 | | |
712 | | static const range_string vt_object_types[] = { |
713 | | /* Top level objects */ |
714 | | { 0, 0, "Working Set object" }, |
715 | | { 1, 1, "Data Mask object" }, |
716 | | { 2, 2, "Alarm Mask object" }, |
717 | | { 3, 3, "Container object" }, |
718 | | { 34, 34, "Window Mask object" }, |
719 | | /* Key objects */ |
720 | | { 4, 4, "Soft Key Mask object" }, |
721 | | { 5, 5, "Key object" }, |
722 | | { 6, 6, "Button object" }, |
723 | | { 35, 35, "Key Group object" }, |
724 | | /* Input field objects */ |
725 | | { 7, 7, "Input Boolean object" }, |
726 | | { 8, 8, "Input String object" }, |
727 | | { 9, 9, "Input Number object" }, |
728 | | { 10, 10, "Input List object" }, |
729 | | /* Output field objects */ |
730 | | { 11, 11, "Output String object" }, |
731 | | { 12, 12, "Output Number object" }, |
732 | | { 37, 37, "Output List object" }, |
733 | | /* Output shape objects */ |
734 | | { 13, 13, "Output Line object" }, |
735 | | { 14, 14, "Output Rectangle object" }, |
736 | | { 15, 15, "Output Ellipse object" }, |
737 | | { 16, 16, "Output Polygon object" }, |
738 | | /* Output graphic objects */ |
739 | | { 17, 17, "Output Meter object" }, |
740 | | { 18, 18, "Output Linear Bar Graph object" }, |
741 | | { 19, 19, "Output Arched Bar Graph object" }, |
742 | | { 36, 36, "Graphics Context object" }, |
743 | | { 44, 44, "Animation object" }, |
744 | | /* Picture graphic object */ |
745 | | { 20, 20, "Picture Graphic object" }, |
746 | | /* Variable objects */ |
747 | | { 21, 21, "Number Variable object" }, |
748 | | { 22, 22, "String Variable object" }, |
749 | | /* Attribute Objects */ |
750 | | { 23, 23, "Font Attributes object" }, |
751 | | { 24, 24, "Line Attributes object" }, |
752 | | { 25, 25, "Fill Attributes object" }, |
753 | | { 26, 26, "Input Attributes object" }, |
754 | | { 38, 38, "Extended Input Attributes object" }, |
755 | | { 39, 39, "Colour Map object" }, |
756 | | { 40, 40, "Object Label Reference List object" }, |
757 | | /* Pointer objects */ |
758 | | { 27, 27, "Object Pointer object" }, |
759 | | { 41, 41, "External Object Definition object" }, |
760 | | { 42, 42, "External Reference NAME object" }, |
761 | | { 43, 43, "External Object Pointer object" }, |
762 | | /* Macro object */ |
763 | | { 28, 28, "Macro object" }, |
764 | | /* Auxiliary control */ |
765 | | { 29, 29, "Auxiliary Function Type 1 object" }, |
766 | | { 30, 30, "Auxiliary Input Type 1 object" }, |
767 | | { 31, 31, "Auxiliary Function Type 2 object" }, |
768 | | { 32, 32, "Auxiliary Input Type 2 object" }, |
769 | | { 33, 33, "Auxiliary Control Designator Type 2 Object Pointer" }, |
770 | | /* Proprietary Objects */ |
771 | | { 240, 254, "Manufacturer Defined Objects" }, |
772 | | /* Reserved Objects */ |
773 | | { 45, 239, "Reserved" }, |
774 | | { 255, 255, "Reserved" }, |
775 | | { 0, 0, NULL } |
776 | | }; |
777 | | |
778 | | static const value_string graphic_types[] = { |
779 | | { 0, "Monochrome" }, |
780 | | { 1, "16 Colour" }, |
781 | | { 2, "256 Colour" }, |
782 | | { 0, NULL } |
783 | | }; |
784 | | |
785 | | static const value_string auxiliary_boolean_value[] = { |
786 | | { 0, "Disabled" }, |
787 | | { 1, "Enabled" }, |
788 | | { 2, "non-latched Boolean held" }, |
789 | | { 0xFF, "Analog" }, |
790 | | { 0, NULL } |
791 | | }; |
792 | | |
793 | | static const value_string auxiliary_maintenance_status[] = { |
794 | | { 0, "Initializing, pool is not currently available for assignment." }, |
795 | | { 1, "Ready, pool has been loaded into the VT and is available for assignments." }, |
796 | | { 0, NULL } |
797 | | }; |
798 | | |
799 | | static const value_string auxiliary_capabilities_request_type[] = { |
800 | | { 0, "Request capabilities of Auxiliary Input Unit(s)" }, |
801 | | { 1, "Request capabilities of Auxiliary Function Unit(s)" }, |
802 | | { 0, NULL } |
803 | | }; |
804 | | |
805 | | static const value_string auxiliary_assigned_attributes[] = { |
806 | | { 0, "auxiliary input" }, |
807 | | { 1, "auxiliary function" }, |
808 | | { 2, "Input is assigned" }, |
809 | | { 0, NULL } |
810 | | }; |
811 | | |
812 | | static const value_string select_input_object_option[] = { |
813 | | { 0xFF, "Set Focus to object referenced by Object ID " }, |
814 | | { 0 , "Activate for data-input the object reference by Object ID" }, |
815 | | { 0, NULL }, |
816 | | }; |
817 | | |
818 | | static const value_string select_input_opject_response[] = { |
819 | | { 0, "Object referenced by Object ID is not selected or Object ID is the NULL object" }, |
820 | | { 1, "Object referenced by Object ID is Selected" }, |
821 | | { 2, "Object referenced by Object ID is Opened for Edit" }, |
822 | | { 0, NULL } |
823 | | }; |
824 | | |
825 | | static const value_string draw_text_background[] = { |
826 | | { 0, "Opaque" }, |
827 | | { 1, "Transparent" }, |
828 | | { 0, NULL } |
829 | | }; |
830 | | |
831 | | |
832 | | |
833 | | static int * const screencapture_response_errorcodes_flag_fields[] = { |
834 | | &hf_isobus_vt_screen_capture_response_error_not_enabled, |
835 | | &hf_isobus_vt_screen_capture_response_error_vt_transfer_is_busy, |
836 | | &hf_isobus_vt_screen_capture_response_error_item_unsupported, |
837 | | &hf_isobus_vt_screen_capture_response_error_path_unsupported, |
838 | | &hf_isobus_vt_screen_capture_response_error_removable_media_is_full_or_unavailable, |
839 | | &hf_isobus_vt_screen_capture_response_error_other, |
840 | | NULL |
841 | | }; |
842 | | |
843 | | |
844 | | static value_string object_id_strings[MAX_OBJECT_ID_DB_SIZE]; |
845 | | |
846 | | /* Initialize the subtree pointers */ |
847 | | static int ett_isobus_vt; |
848 | | static int ett_isobus_vt_vtstatus_busycodes_subtree; |
849 | | static int ett_isobus_vt_getsupportedwidechars_range; |
850 | | static int ett_isobus_vt_gettextfontdata_smallfontsizes; |
851 | | static int ett_isobus_vt_gettextfontdata_largefontsizes; |
852 | | static int ett_isobus_vt_gettextfontdata_typeattributes; |
853 | | static int ett_isobus_vt_gethardware_hardware; |
854 | | static int ett_isobus_vt_preferredassignment_inputunit; |
855 | | static int ett_isobus_vt_preferredassignment_inputunit_preferredfunction; |
856 | | static int ett_isobus_vt_auxiliarycapabilities_inputunit; |
857 | | static int ett_isobus_vt_auxiliarycapabilities_inputunit_set; |
858 | | static int ett_isobus_vt_auxiliaryassignmenttype2_flags; |
859 | | static int ett_isobus_vt_auxiliaryinputtype2status_operatingstate; |
860 | | static int ett_isobus_vt_screencapture_response_errorcodes_flags; |
861 | | |
862 | | static const char *object_id_translation = ""; |
863 | | |
864 | | enum vt_direction |
865 | | { |
866 | | vt_to_ecu, |
867 | | ecu_to_vt |
868 | | }; |
869 | | |
870 | | static const char* get_object_id_string(wmem_allocator_t* scope, uint16_t object_id) |
871 | 0 | { |
872 | 0 | const char* translated_string; |
873 | 0 | if(object_id == 0xFFFF) |
874 | 0 | { |
875 | 0 | return "NULL Object ID"; |
876 | 0 | } |
877 | | |
878 | 0 | translated_string = val_to_str(scope, object_id, object_id_strings, "Object ID 0x%04X"); |
879 | 0 | return translated_string; |
880 | 0 | } |
881 | | |
882 | | static int |
883 | | dissect_vt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, enum vt_direction direction) |
884 | 0 | { |
885 | 0 | int offset = 0; |
886 | 0 | uint32_t function_id; |
887 | 0 | proto_item *ti; |
888 | |
|
889 | 0 | ti = proto_tree_add_item(tree, |
890 | 0 | hf_isobus_vt, tvb, 0, 0, ENC_NA); |
891 | 0 | proto_item_set_hidden(ti); |
892 | |
|
893 | 0 | proto_tree_add_item_ret_uint(tree, |
894 | 0 | hf_isobus_vt_command, tvb, offset, 1, ENC_LITTLE_ENDIAN, &function_id); |
895 | 0 | offset += 1; |
896 | |
|
897 | 0 | switch(function_id) |
898 | 0 | { |
899 | 0 | case VT_SOFT_KEY_ACTIVATION: |
900 | 0 | { |
901 | 0 | uint32_t key_activation_code, object_id, parent_object_id; |
902 | |
|
903 | 0 | proto_tree_add_item_ret_uint(tree, |
904 | 0 | hf_isobus_vt_softkey_keyactcode, tvb, offset, 1, ENC_LITTLE_ENDIAN, &key_activation_code); |
905 | 0 | offset += 1; |
906 | |
|
907 | 0 | proto_tree_add_item_ret_uint(tree, |
908 | 0 | hf_isobus_vt_softkey_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
909 | 0 | ti = proto_tree_add_item(tree, |
910 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
911 | 0 | proto_item_set_hidden(ti); |
912 | 0 | offset += 2; |
913 | |
|
914 | 0 | proto_tree_add_item_ret_uint(tree, |
915 | 0 | hf_isobus_vt_softkey_parentobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &parent_object_id); |
916 | 0 | ti = proto_tree_add_item(tree, |
917 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
918 | 0 | proto_item_set_hidden(ti); |
919 | 0 | offset += 2; |
920 | |
|
921 | 0 | proto_tree_add_item(tree, |
922 | 0 | hf_isobus_vt_softkey_keynumber, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
923 | |
|
924 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Key %s of parent %s %s", |
925 | 0 | get_object_id_string(pinfo->pool, object_id), get_object_id_string(pinfo->pool, parent_object_id), |
926 | 0 | val_to_str_const(key_activation_code, key_activation_codes_info_postfix, "unknown action")); |
927 | 0 | } |
928 | 0 | break; |
929 | 0 | case VT_BUTTON_ACTIVATION: |
930 | 0 | { |
931 | 0 | uint32_t key_activation_code, object_id, parent_object_id; |
932 | |
|
933 | 0 | proto_tree_add_item_ret_uint(tree, |
934 | 0 | hf_isobus_vt_button_keyactcode, tvb, offset, 1, ENC_LITTLE_ENDIAN, &key_activation_code); |
935 | 0 | offset += 1; |
936 | |
|
937 | 0 | proto_tree_add_item_ret_uint(tree, |
938 | 0 | hf_isobus_vt_button_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
939 | 0 | ti = proto_tree_add_item(tree, |
940 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
941 | 0 | proto_item_set_hidden(ti); |
942 | 0 | offset += 2; |
943 | |
|
944 | 0 | proto_tree_add_item_ret_uint(tree, |
945 | 0 | hf_isobus_vt_button_parentobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &parent_object_id); |
946 | 0 | ti = proto_tree_add_item(tree, |
947 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
948 | 0 | proto_item_set_hidden(ti); |
949 | 0 | offset += 2; |
950 | |
|
951 | 0 | proto_tree_add_item(tree, |
952 | 0 | hf_isobus_vt_button_keynumber, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
953 | |
|
954 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Button %s of parent %s %s", |
955 | 0 | get_object_id_string(pinfo->pool, object_id), get_object_id_string(pinfo->pool, parent_object_id), |
956 | 0 | val_to_str_const(key_activation_code, key_activation_codes_info_postfix, "unknown action")); |
957 | 0 | } |
958 | 0 | break; |
959 | 0 | case VT_POINTING_EVENT: |
960 | 0 | { |
961 | 0 | uint32_t x_position, y_position, touch_state = 0; |
962 | |
|
963 | 0 | proto_tree_add_item_ret_uint(tree, |
964 | 0 | hf_isobus_vt_pointing_xposition, tvb, offset, 2, ENC_LITTLE_ENDIAN, &x_position); |
965 | 0 | offset += 2; |
966 | |
|
967 | 0 | proto_tree_add_item_ret_uint(tree, |
968 | 0 | hf_isobus_vt_pointing_yposition, tvb, offset, 2, ENC_LITTLE_ENDIAN, &y_position); |
969 | 0 | offset += 2; |
970 | |
|
971 | 0 | if(current_vt_version >= 4) |
972 | 0 | { |
973 | 0 | proto_tree_add_item_ret_uint(tree, |
974 | 0 | hf_isobus_vt_pointing_touchstate, tvb, offset, 1, ENC_LITTLE_ENDIAN, &touch_state); |
975 | 0 | } |
976 | |
|
977 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Touch at [%d;%d]", |
978 | 0 | x_position, y_position); |
979 | |
|
980 | 0 | if(current_vt_version >= 4) |
981 | 0 | { |
982 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str_const(touch_state, pointing_touch_state_info_postfix, "unknown action")); |
983 | 0 | } |
984 | 0 | } |
985 | 0 | break; |
986 | 0 | case VT_VT_SELECT_INPUT_OBJECT: |
987 | 0 | { |
988 | 0 | uint32_t object_id; |
989 | |
|
990 | 0 | proto_tree_add_item_ret_uint(tree, |
991 | 0 | hf_isobus_vt_vtselectinputobject_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
992 | 0 | ti = proto_tree_add_item(tree, |
993 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
994 | 0 | proto_item_set_hidden(ti); |
995 | 0 | offset += 2; |
996 | |
|
997 | 0 | proto_tree_add_item(tree, |
998 | 0 | hf_isobus_vt_vtselectinputobject_selection, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
999 | 0 | offset += 1; |
1000 | |
|
1001 | 0 | if(current_vt_version >= 4) |
1002 | 0 | { |
1003 | 0 | proto_tree_add_item(tree, |
1004 | 0 | hf_isobus_vt_vtselectinputobject_openforinput, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
1005 | 0 | } |
1006 | |
|
1007 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s was selected by VT", get_object_id_string(pinfo->pool, object_id)); |
1008 | 0 | } |
1009 | 0 | break; |
1010 | 0 | case VT_VT_ESC_MESSAGE: |
1011 | 0 | { |
1012 | 0 | uint32_t object_id; |
1013 | |
|
1014 | 0 | proto_tree_add_item_ret_uint(tree, |
1015 | 0 | hf_isobus_vt_vtescmessage_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
1016 | 0 | ti = proto_tree_add_item(tree, |
1017 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1018 | 0 | proto_item_set_hidden(ti); |
1019 | 0 | offset += 2; |
1020 | |
|
1021 | 0 | if(direction == vt_to_ecu) |
1022 | 0 | { |
1023 | 0 | uint32_t error_codes; |
1024 | |
|
1025 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
1026 | 0 | hf_isobus_vt_vtescmessage_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
1027 | |
|
1028 | 0 | proto_item_append_text(ti, ": "); |
1029 | 0 | if (error_codes & 0x01) |
1030 | 0 | proto_item_append_text(ti, "No input field is selected "); |
1031 | 0 | if (error_codes & 0x10) |
1032 | 0 | proto_item_append_text(ti, "Any other error "); |
1033 | |
|
1034 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "ESC button was pressed while %s was selected", get_object_id_string(pinfo->pool, object_id)); |
1035 | 0 | } |
1036 | 0 | else |
1037 | 0 | { |
1038 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "ESC button press was successfully received"); |
1039 | 0 | } |
1040 | 0 | } |
1041 | 0 | break; |
1042 | 0 | case VT_VT_CHANGE_NUMERIC_VALUE: |
1043 | 0 | { |
1044 | 0 | uint32_t object_id, value; |
1045 | |
|
1046 | 0 | proto_tree_add_item_ret_uint(tree, |
1047 | 0 | hf_isobus_vt_vtchgnumval_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
1048 | 0 | ti = proto_tree_add_item(tree, |
1049 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1050 | 0 | proto_item_set_hidden(ti); |
1051 | 0 | offset += 2; |
1052 | |
|
1053 | 0 | offset += 1; /* byte 4 is reserved */ |
1054 | |
|
1055 | 0 | proto_tree_add_item_ret_uint(tree, |
1056 | 0 | hf_isobus_vt_vtchgnumval_value, tvb, offset, 4, ENC_LITTLE_ENDIAN, &value); |
1057 | |
|
1058 | 0 | if(direction == ecu_to_vt) |
1059 | 0 | { |
1060 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "VT Numeric value of %s has changed to 0x%X", |
1061 | 0 | get_object_id_string(pinfo->pool, object_id), value); |
1062 | 0 | } |
1063 | 0 | else |
1064 | 0 | { |
1065 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "VT Numeric value of %s should change to 0x%X", |
1066 | 0 | get_object_id_string(pinfo->pool, object_id), value); |
1067 | 0 | } |
1068 | 0 | } |
1069 | 0 | break; |
1070 | 0 | case VT_VT_CHANGE_ACTIVE_MASK: |
1071 | 0 | { |
1072 | 0 | uint32_t mask_object_id; |
1073 | |
|
1074 | 0 | proto_tree_add_item_ret_uint(tree, |
1075 | 0 | hf_isobus_vt_vtchgactivemask_maskobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &mask_object_id); |
1076 | 0 | ti = proto_tree_add_item(tree, |
1077 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1078 | 0 | proto_item_set_hidden(ti); |
1079 | 0 | offset += 2; |
1080 | |
|
1081 | 0 | if(direction == vt_to_ecu) |
1082 | 0 | { |
1083 | 0 | uint32_t error_object_id, error_codes; |
1084 | |
|
1085 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
1086 | 0 | hf_isobus_vt_vtchgactivemask_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
1087 | 0 | proto_item_append_text(ti, ": "); |
1088 | 0 | if (error_codes & 0x04) |
1089 | 0 | proto_item_append_text(ti, "Missing object "); |
1090 | 0 | if (error_codes & 0x08) |
1091 | 0 | proto_item_append_text(ti, "Mask or child object has errors "); |
1092 | 0 | if (error_codes & 0x10) |
1093 | 0 | proto_item_append_text(ti, "Any other error "); |
1094 | 0 | if (error_codes & 0x20) |
1095 | 0 | proto_item_append_text(ti, "Pool being deleted "); |
1096 | 0 | offset += 1; |
1097 | |
|
1098 | 0 | proto_tree_add_item_ret_uint(tree, |
1099 | 0 | hf_isobus_vt_vtchgactivemask_errorobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &error_object_id); |
1100 | 0 | ti = proto_tree_add_item(tree, |
1101 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1102 | 0 | proto_item_set_hidden(ti); |
1103 | 0 | offset += 2; |
1104 | |
|
1105 | 0 | proto_tree_add_item_ret_uint(tree, |
1106 | 0 | hf_isobus_vt_vtchgactivemask_errorobjectidparent, tvb, offset, 2, ENC_LITTLE_ENDIAN, &error_object_id); |
1107 | 0 | ti = proto_tree_add_item(tree, |
1108 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1109 | 0 | proto_item_set_hidden(ti); |
1110 | |
|
1111 | 0 | if(error_codes) |
1112 | 0 | { |
1113 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "VT Active mask changed to %s", |
1114 | 0 | get_object_id_string(pinfo->pool, mask_object_id)); |
1115 | 0 | } |
1116 | 0 | else |
1117 | 0 | { |
1118 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "VT Active mask changed to %s because of error in %s", |
1119 | 0 | get_object_id_string(pinfo->pool, mask_object_id), get_object_id_string(pinfo->pool, error_object_id)); |
1120 | 0 | } |
1121 | 0 | } |
1122 | 0 | else |
1123 | 0 | { |
1124 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "VT Active mask change to %s acknowledged", |
1125 | 0 | get_object_id_string(pinfo->pool, mask_object_id)); |
1126 | 0 | } |
1127 | 0 | } |
1128 | 0 | break; |
1129 | 0 | case VT_VT_CHANGE_STRING_VALUE: |
1130 | 0 | { |
1131 | 0 | if(direction == vt_to_ecu) |
1132 | 0 | { |
1133 | 0 | unsigned encoding = ENC_ASCII|ENC_NA; |
1134 | 0 | uint32_t object_id, str_length; |
1135 | 0 | uint16_t firstTwoBytesString; |
1136 | 0 | const uint8_t* value; |
1137 | 0 | unsigned bomOffset = 0; |
1138 | |
|
1139 | 0 | proto_tree_add_item_ret_uint(tree, |
1140 | 0 | hf_isobus_vt_vtchgstrval_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
1141 | 0 | ti = proto_tree_add_item(tree, |
1142 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1143 | 0 | proto_item_set_hidden(ti); |
1144 | 0 | offset += 2; |
1145 | |
|
1146 | 0 | proto_tree_add_item_ret_uint(tree, |
1147 | 0 | hf_isobus_vt_vtchgstrval_length, tvb, offset, 1, ENC_LITTLE_ENDIAN, &str_length); |
1148 | 0 | offset += 1; |
1149 | |
|
1150 | 0 | firstTwoBytesString = tvb_get_letohs(tvb,offset); |
1151 | 0 | if(firstTwoBytesString == 0xFEFF) |
1152 | 0 | { |
1153 | 0 | encoding = ENC_UCS_2|ENC_LITTLE_ENDIAN; |
1154 | 0 | bomOffset = 2; |
1155 | 0 | } |
1156 | |
|
1157 | 0 | proto_tree_add_item_ret_string(tree, |
1158 | 0 | hf_isobus_vt_vtchgstrval_value, tvb, offset + bomOffset, str_length - bomOffset, encoding, |
1159 | 0 | pinfo->pool, &value); |
1160 | |
|
1161 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "VT String value of %s should change to %s", |
1162 | 0 | get_object_id_string(pinfo->pool, object_id), value); |
1163 | 0 | } |
1164 | 0 | else |
1165 | 0 | { |
1166 | 0 | uint32_t object_id; |
1167 | |
|
1168 | 0 | offset += 2; /* first two bytes are reserved */ |
1169 | |
|
1170 | 0 | proto_tree_add_item_ret_uint(tree, |
1171 | 0 | hf_isobus_vt_chgstrval_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
1172 | 0 | ti = proto_tree_add_item(tree, |
1173 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1174 | 0 | proto_item_set_hidden(ti); |
1175 | |
|
1176 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "VT String value change of %s acknowledged", |
1177 | 0 | get_object_id_string(pinfo->pool, object_id)); |
1178 | 0 | } |
1179 | 0 | } |
1180 | 0 | break; |
1181 | 0 | case VT_VT_ON_USER_LAYOUT_HIDE_SHOW: |
1182 | 0 | { |
1183 | 0 | uint32_t object_id[2], status[2]; |
1184 | |
|
1185 | 0 | proto_tree_add_item_ret_uint(tree, |
1186 | 0 | hf_isobus_vt_vtonuserlayouthideshow_objectid_1, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id[0]); |
1187 | 0 | ti = proto_tree_add_item(tree, |
1188 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1189 | 0 | proto_item_set_hidden(ti); |
1190 | 0 | offset += 2; |
1191 | |
|
1192 | 0 | proto_tree_add_item_ret_uint(tree, |
1193 | 0 | hf_isobus_vt_vtonuserlayouthideshow_status_1, tvb, offset, 1, ENC_LITTLE_ENDIAN, &status[0]); |
1194 | 0 | offset += 1; |
1195 | |
|
1196 | 0 | proto_tree_add_item_ret_uint(tree, |
1197 | 0 | hf_isobus_vt_vtonuserlayouthideshow_objectid_2, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id[1]); |
1198 | 0 | ti = proto_tree_add_item(tree, |
1199 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1200 | 0 | proto_item_set_hidden(ti); |
1201 | 0 | offset += 2; |
1202 | |
|
1203 | 0 | proto_tree_add_item_ret_uint(tree, |
1204 | 0 | hf_isobus_vt_vtonuserlayouthideshow_status_2, tvb, offset, 1, ENC_LITTLE_ENDIAN, &status[1]); |
1205 | |
|
1206 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "VT On User-Layout Hide/Show. %s is %s, %s is %s", |
1207 | 0 | get_object_id_string(pinfo->pool, object_id[0]), val_to_str_const(status[0], vt_hide_show_action_info, "unknown"), |
1208 | 0 | get_object_id_string(pinfo->pool, object_id[1]), val_to_str_const(status[1], vt_hide_show_action_info, "unknown")); |
1209 | 0 | } |
1210 | 0 | break; |
1211 | 0 | case VT_VT_CONTROL_AUDIO_SIGNAL_TERMINATION: |
1212 | 0 | { |
1213 | 0 | uint32_t termination_cause; |
1214 | |
|
1215 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
1216 | 0 | hf_isobus_vt_vtcontrolaudiosignaltermination_terminationcause, tvb, offset, 1, ENC_LITTLE_ENDIAN, &termination_cause); |
1217 | |
|
1218 | 0 | proto_item_append_text(ti, ": "); |
1219 | 0 | if (termination_cause & 0x01) |
1220 | 0 | { |
1221 | 0 | proto_item_append_text(ti, "Audio was terminated "); |
1222 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "VT Control audio signal termination: Audio was terminated"); |
1223 | 0 | } |
1224 | 0 | else |
1225 | 0 | { |
1226 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "VT Control audio signal termination: Error in message"); |
1227 | 0 | } |
1228 | 0 | } |
1229 | 0 | break; |
1230 | 0 | case VT_END_OF_OBJECT_POOL: |
1231 | 0 | { |
1232 | 0 | if(direction == vt_to_ecu) |
1233 | 0 | { |
1234 | 0 | uint32_t error_codes, obj_pool_error_codes; |
1235 | |
|
1236 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
1237 | 0 | hf_isobus_vt_endofobjectpool_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
1238 | 0 | proto_item_append_text(ti, ": "); |
1239 | 0 | if (error_codes & 0x01) |
1240 | 0 | proto_item_append_text(ti, "There are errors in the Object Pool "); |
1241 | 0 | if (error_codes & 0x02) |
1242 | 0 | proto_item_append_text(ti, "VT ran out of memory during transfer "); |
1243 | 0 | if (error_codes & 0x10) |
1244 | 0 | proto_item_append_text(ti, "Any other error "); |
1245 | 0 | offset += 1; |
1246 | |
|
1247 | 0 | proto_tree_add_item(tree, |
1248 | 0 | hf_isobus_vt_endofobjectpool_faultyparentobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1249 | 0 | ti = proto_tree_add_item(tree, |
1250 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1251 | 0 | proto_item_set_hidden(ti); |
1252 | 0 | offset += 2; |
1253 | |
|
1254 | 0 | proto_tree_add_item(tree, |
1255 | 0 | hf_isobus_vt_endofobjectpool_faultyobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1256 | 0 | ti = proto_tree_add_item(tree, |
1257 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1258 | 0 | proto_item_set_hidden(ti); |
1259 | 0 | offset += 2; |
1260 | |
|
1261 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
1262 | 0 | hf_isobus_vt_endofobjectpool_objectpoolerrorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &obj_pool_error_codes); |
1263 | 0 | proto_item_append_text(ti, ": "); |
1264 | 0 | if (obj_pool_error_codes & 0x01) |
1265 | 0 | proto_item_append_text(ti, "method or Attribute not supported by the VT "); |
1266 | 0 | if (obj_pool_error_codes & 0x02) |
1267 | 0 | proto_item_append_text(ti, "unknown object reference (missing object) "); |
1268 | 0 | if (obj_pool_error_codes & 0x04) |
1269 | 0 | proto_item_append_text(ti, "any other error "); |
1270 | 0 | if (obj_pool_error_codes & 0x08) |
1271 | 0 | proto_item_append_text(ti, "object pool was deleted from volatile memory "); |
1272 | |
|
1273 | 0 | if(error_codes & 0x01) |
1274 | 0 | { |
1275 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "End of object pool received, object pool contains errors"); |
1276 | 0 | } |
1277 | 0 | else if(error_codes & 0x02) |
1278 | 0 | { |
1279 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "End of object pool received, but VT ran out of memory"); |
1280 | 0 | } |
1281 | 0 | else |
1282 | 0 | { |
1283 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "End of object pool received, object pool accepted"); |
1284 | 0 | } |
1285 | 0 | } |
1286 | 0 | } |
1287 | 0 | break; |
1288 | 0 | case VT_AUXILIARY_ASSIGNMENT_TYPE_1: |
1289 | 0 | { |
1290 | 0 | uint32_t source_address, aux_input_number, object_id; |
1291 | |
|
1292 | 0 | proto_tree_add_item_ret_uint(tree, |
1293 | 0 | hf_isobus_vt_auxiliaryassignmenttype1_sourceaddressauxinputdevice, tvb, offset, 1, ENC_LITTLE_ENDIAN, &source_address); |
1294 | 0 | offset += 1; |
1295 | |
|
1296 | 0 | proto_tree_add_item_ret_uint(tree, |
1297 | 0 | hf_isobus_vt_auxiliaryassignmenttype1_auxinputnumber, tvb, offset, 1, ENC_LITTLE_ENDIAN, &aux_input_number); |
1298 | 0 | offset += 1; |
1299 | |
|
1300 | 0 | proto_tree_add_item_ret_uint(tree, |
1301 | 0 | hf_isobus_vt_auxiliaryassignmenttype1_objectidauxinputdevice, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
1302 | 0 | ti = proto_tree_add_item(tree, |
1303 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1304 | 0 | proto_item_set_hidden(ti); |
1305 | |
|
1306 | 0 | if(direction == ecu_to_vt) |
1307 | 0 | { |
1308 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Assign auxiliary input type 1 number %u of device %u to %s", |
1309 | 0 | aux_input_number, source_address, get_object_id_string(pinfo->pool, object_id)); |
1310 | 0 | } |
1311 | 0 | else |
1312 | 0 | { |
1313 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Auxiliary input type 1 number %u of device %u has been assigned to %s", |
1314 | 0 | aux_input_number, source_address, get_object_id_string(pinfo->pool, object_id)); |
1315 | 0 | } |
1316 | 0 | } |
1317 | 0 | break; |
1318 | 0 | case VT_AUXILIARY_INPUT_TYPE_1_STATUS: |
1319 | 0 | { |
1320 | 0 | uint32_t input_number, boolean_value, analyze_value; |
1321 | |
|
1322 | 0 | proto_tree_add_item_ret_uint(tree, |
1323 | 0 | hf_isobus_vt_auxiliaryinputtype1status_inputnumber, tvb, offset, 1, ENC_LITTLE_ENDIAN, &input_number); |
1324 | 0 | offset += 1; |
1325 | |
|
1326 | 0 | proto_tree_add_item_ret_uint(tree, |
1327 | 0 | hf_isobus_vt_auxiliaryinputtype1status_analyzevalue, tvb, offset, 2, ENC_LITTLE_ENDIAN, &analyze_value); |
1328 | 0 | offset += 2; |
1329 | |
|
1330 | 0 | proto_tree_add_item(tree, |
1331 | 0 | hf_isobus_vt_auxiliaryinputtype1status_numberoftransitions, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1332 | 0 | offset += 2; |
1333 | |
|
1334 | 0 | proto_tree_add_item_ret_uint(tree, |
1335 | 0 | hf_isobus_vt_auxiliaryinputtype1status_booleanvalue, tvb, offset, 1, ENC_LITTLE_ENDIAN, &boolean_value); |
1336 | |
|
1337 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "State of input %u is analog %u or digital %s", |
1338 | 0 | input_number, analyze_value, val_to_str_const(boolean_value, auxiliary_boolean_value, "unknown")); |
1339 | |
|
1340 | 0 | } |
1341 | 0 | break; |
1342 | 0 | case VT_PREFERRED_ASSIGNMENT: |
1343 | 0 | { |
1344 | 0 | if(direction == ecu_to_vt) |
1345 | 0 | { |
1346 | 0 | uint32_t number_of_input_units, i; |
1347 | |
|
1348 | 0 | proto_tree_add_item_ret_uint(tree, |
1349 | 0 | hf_isobus_vt_preferredassignment_numberofinputunits, tvb, offset, 1, ENC_LITTLE_ENDIAN, &number_of_input_units); |
1350 | 0 | offset += 1; |
1351 | |
|
1352 | 0 | for(i = 0; i < number_of_input_units; i++) |
1353 | 0 | { |
1354 | 0 | proto_item *input_unit_item; |
1355 | 0 | proto_tree *input_unit_subtree; |
1356 | 0 | uint32_t number_of_preferred_functions, j, model_identification_code; |
1357 | 0 | uint64_t name; |
1358 | |
|
1359 | 0 | input_unit_subtree = proto_tree_add_subtree_format(tree, tvb, offset, 0, ett_isobus_vt_preferredassignment_inputunit, &input_unit_item, "Input Unit"); |
1360 | |
|
1361 | 0 | proto_tree_add_item_ret_uint64(input_unit_subtree, |
1362 | 0 | hf_isobus_vt_preferredassignment_auxinputunit_name, tvb, offset, 8, ENC_LITTLE_ENDIAN, &name); |
1363 | 0 | offset += 8; |
1364 | |
|
1365 | 0 | proto_tree_add_item_ret_uint(input_unit_subtree, |
1366 | 0 | hf_isobus_vt_preferredassignment_auxinputunit_modelidentificationcode, tvb, offset, 2, ENC_LITTLE_ENDIAN, &model_identification_code); |
1367 | 0 | offset += 2; |
1368 | |
|
1369 | 0 | proto_tree_add_item_ret_uint(input_unit_subtree, |
1370 | 0 | hf_isobus_vt_preferredassignment_auxinputunit_numberofpreferredfunctions, tvb, offset, 1, ENC_LITTLE_ENDIAN, &number_of_preferred_functions); |
1371 | 0 | offset += 1; |
1372 | |
|
1373 | 0 | proto_item_set_text(input_unit_item, "Input Unit name 0x%" PRIX64 " model identification code %u", name, model_identification_code); |
1374 | 0 | proto_item_set_len(input_unit_item, 8 + 2 + 1 + ((2 + 2) * number_of_preferred_functions)); |
1375 | |
|
1376 | 0 | for(j = 0; j < number_of_preferred_functions; j++) |
1377 | 0 | { |
1378 | 0 | proto_item *preferred_function_item; |
1379 | 0 | proto_tree *preferred_function_subtree; |
1380 | 0 | uint32_t auxiliary_function_object_id, auxiliary_input_object_id; |
1381 | |
|
1382 | 0 | preferred_function_subtree = proto_tree_add_subtree(input_unit_subtree, tvb, offset, 4, |
1383 | 0 | ett_isobus_vt_preferredassignment_inputunit_preferredfunction, &preferred_function_item, "Input Unit"); |
1384 | |
|
1385 | 0 | proto_tree_add_item_ret_uint(preferred_function_subtree, |
1386 | 0 | hf_isobus_vt_preferredassignment_auxinputunit_preferredfunctions_auxfunctionobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &auxiliary_function_object_id); |
1387 | 0 | ti = proto_tree_add_item(tree, |
1388 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1389 | 0 | proto_item_set_hidden(ti); |
1390 | 0 | offset += 2; |
1391 | |
|
1392 | 0 | proto_tree_add_item_ret_uint(preferred_function_subtree, |
1393 | 0 | hf_isobus_vt_preferredassignment_auxinputunit_preferredfunctions_auxinputobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &auxiliary_input_object_id); |
1394 | 0 | ti = proto_tree_add_item(tree, |
1395 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1396 | 0 | proto_item_set_hidden(ti); |
1397 | 0 | offset += 2; |
1398 | |
|
1399 | 0 | proto_item_set_text(preferred_function_item, "Auxiliary Function %s connects to Auxiliary Input %s", |
1400 | 0 | get_object_id_string(pinfo->pool, auxiliary_function_object_id), get_object_id_string(pinfo->pool, auxiliary_input_object_id)); |
1401 | 0 | } |
1402 | 0 | } |
1403 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Create preferred assignment"); |
1404 | 0 | } |
1405 | 0 | else |
1406 | 0 | { |
1407 | 0 | uint32_t error_codes, faulty_auxiliary_function_object_id; |
1408 | |
|
1409 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
1410 | 0 | hf_isobus_vt_preferredassignment_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
1411 | 0 | proto_item_append_text(ti, ": "); |
1412 | 0 | if (error_codes & 0x01) |
1413 | 0 | proto_item_append_text(ti, "Auxiliary Input Unit(s) not valid "); |
1414 | 0 | if (error_codes & 0x02) |
1415 | 0 | proto_item_append_text(ti, "Function Object ID(s) not valid "); |
1416 | 0 | if (error_codes & 0x04) |
1417 | 0 | proto_item_append_text(ti, "Input Object ID(s) not valid "); |
1418 | 0 | if (error_codes & 0x08) |
1419 | 0 | proto_item_append_text(ti, "Duplicate Object ID of Auxiliary Function "); |
1420 | 0 | if (error_codes & 0x10) |
1421 | 0 | proto_item_append_text(ti, "Any other error "); |
1422 | 0 | offset += 1; |
1423 | |
|
1424 | 0 | proto_tree_add_item_ret_uint(tree, |
1425 | 0 | hf_isobus_vt_preferredassignment_faultyauxiliaryfunctionobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &faulty_auxiliary_function_object_id); |
1426 | 0 | ti = proto_tree_add_item(tree, |
1427 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1428 | 0 | proto_item_set_hidden(ti); |
1429 | |
|
1430 | 0 | if(error_codes) |
1431 | 0 | { |
1432 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while creating preferred assignment because of %s", get_object_id_string(pinfo->pool, faulty_auxiliary_function_object_id)); |
1433 | 0 | } |
1434 | 0 | else |
1435 | 0 | { |
1436 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Successfully created preferred assignment"); |
1437 | 0 | } |
1438 | 0 | } |
1439 | 0 | } |
1440 | 0 | break; |
1441 | 0 | case VT_AUXILIARY_INPUT_TYPE_2_MAINTENANCE: |
1442 | 0 | { |
1443 | 0 | if(direction == ecu_to_vt) |
1444 | 0 | { |
1445 | 0 | uint32_t model_identification_code, status; |
1446 | |
|
1447 | 0 | proto_tree_add_item_ret_uint(tree, |
1448 | 0 | hf_isobus_vt_auxiliaryinputtype2maintenance_modelidentificationcode, tvb, offset, 2, ENC_LITTLE_ENDIAN, &model_identification_code); |
1449 | 0 | offset += 2; |
1450 | |
|
1451 | 0 | proto_tree_add_item_ret_uint(tree, |
1452 | 0 | hf_isobus_vt_auxiliaryinputtype2maintenance_status, tvb, offset, 1, ENC_LITTLE_ENDIAN, &status); |
1453 | |
|
1454 | 0 | if(status == 0) |
1455 | 0 | { |
1456 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Auxiliary Input Type 2 Maintenance: Model Identification Code %u, Status is Initializing", |
1457 | 0 | model_identification_code); |
1458 | 0 | } |
1459 | 0 | else |
1460 | 0 | { |
1461 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Auxiliary Input Type 2 Maintenance: Model Identification Code %u, Status is Ready", |
1462 | 0 | model_identification_code); |
1463 | 0 | } |
1464 | 0 | } |
1465 | 0 | } |
1466 | 0 | break; |
1467 | 0 | case VT_AUXILIARY_ASSIGNMENT_TYPE_2: |
1468 | 0 | { |
1469 | 0 | uint32_t error_codes, auxiliary_input_object_id = 0, auxiliary_function_object_id; |
1470 | 0 | uint64_t name = 0; |
1471 | |
|
1472 | 0 | if(direction == ecu_to_vt) |
1473 | 0 | { |
1474 | 0 | proto_tree *flags_subtree; |
1475 | |
|
1476 | 0 | proto_tree_add_item_ret_uint64(tree, |
1477 | 0 | hf_isobus_vt_auxiliaryassignmenttype2_name, tvb, offset, 8, ENC_LITTLE_ENDIAN, &name); |
1478 | 0 | offset += 8; |
1479 | |
|
1480 | 0 | ti = proto_tree_add_item(tree, |
1481 | 0 | hf_isobus_vt_auxiliaryassignmenttype2_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
1482 | 0 | flags_subtree = proto_item_add_subtree(ti, ett_isobus_vt_auxiliaryassignmenttype2_flags); |
1483 | 0 | ti = proto_tree_add_item(flags_subtree, |
1484 | 0 | hf_isobus_vt_auxiliaryassignmenttype2_flags_preferredassignment, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
1485 | 0 | proto_item_set_generated(ti); |
1486 | 0 | ti = proto_tree_add_item(flags_subtree, |
1487 | 0 | hf_isobus_vt_auxiliaryassignmenttype2_flags_auxiliaryfunctiontype, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
1488 | 0 | proto_item_set_generated(ti); |
1489 | 0 | offset += 1; |
1490 | |
|
1491 | 0 | proto_tree_add_item_ret_uint(tree, |
1492 | 0 | hf_isobus_vt_auxiliaryassignmenttype2_auxinputobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &auxiliary_input_object_id); |
1493 | 0 | ti = proto_tree_add_item(tree, |
1494 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1495 | 0 | proto_item_set_hidden(ti); |
1496 | 0 | offset += 2; |
1497 | 0 | } |
1498 | |
|
1499 | 0 | proto_tree_add_item_ret_uint(tree, |
1500 | 0 | hf_isobus_vt_auxiliaryassignmenttype2_auxfunctionobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &auxiliary_function_object_id); |
1501 | 0 | ti = proto_tree_add_item(tree, |
1502 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1503 | 0 | proto_item_set_hidden(ti); |
1504 | 0 | offset += 2; |
1505 | |
|
1506 | 0 | if(direction == vt_to_ecu) |
1507 | 0 | { |
1508 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
1509 | 0 | hf_isobus_vt_auxiliaryassignmenttype2_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
1510 | 0 | proto_item_append_text(ti, ": "); |
1511 | 0 | if (error_codes & 0x01) |
1512 | 0 | proto_item_append_text(ti, "error, assignment not accepted "); |
1513 | 0 | if (error_codes & 0x02) |
1514 | 0 | proto_item_append_text(ti, "error, this function is already assigned "); |
1515 | 0 | } |
1516 | |
|
1517 | 0 | if(direction == ecu_to_vt) |
1518 | 0 | { |
1519 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Assign %s of name 0x%" PRIX64 " to function %s", |
1520 | 0 | get_object_id_string(pinfo->pool, auxiliary_input_object_id), name, get_object_id_string(pinfo->pool, auxiliary_function_object_id)); |
1521 | 0 | } |
1522 | 0 | else if(direction == vt_to_ecu) |
1523 | 0 | { |
1524 | 0 | if(error_codes) |
1525 | 0 | { |
1526 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while assigning function %s", |
1527 | 0 | get_object_id_string(pinfo->pool, auxiliary_function_object_id)); |
1528 | 0 | } |
1529 | 0 | else |
1530 | 0 | { |
1531 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Successfully assigned function %s", |
1532 | 0 | get_object_id_string(pinfo->pool, auxiliary_function_object_id)); |
1533 | 0 | } |
1534 | 0 | } |
1535 | 0 | } |
1536 | 0 | break; |
1537 | 0 | case VT_AUXILIARY_INPUT_STATUS_TYPE_2_ENABLE: |
1538 | 0 | { |
1539 | 0 | uint32_t enable, status, error_codes, auxiliary_input_object_id; |
1540 | |
|
1541 | 0 | proto_tree_add_item_ret_uint(tree, |
1542 | 0 | hf_isobus_vt_auxiliaryinputstatustype2enable_auxiliaryinputobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &auxiliary_input_object_id); |
1543 | 0 | ti = proto_tree_add_item(tree, |
1544 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1545 | 0 | proto_item_set_hidden(ti); |
1546 | 0 | offset += 2; |
1547 | |
|
1548 | 0 | if(direction == ecu_to_vt) |
1549 | 0 | { |
1550 | 0 | proto_tree_add_item_ret_uint(tree, |
1551 | 0 | hf_isobus_vt_auxiliaryinputstatustype2enable_enable, tvb, offset, 1, ENC_LITTLE_ENDIAN, &enable); |
1552 | 0 | } |
1553 | 0 | else |
1554 | 0 | { |
1555 | 0 | proto_tree_add_item_ret_uint(tree, |
1556 | 0 | hf_isobus_vt_auxiliaryinputstatustype2enable_status, tvb, offset, 1, ENC_LITTLE_ENDIAN, &status); |
1557 | 0 | offset += 1; |
1558 | |
|
1559 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
1560 | 0 | hf_isobus_vt_auxiliaryinputstatustype2enable_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
1561 | 0 | proto_item_append_text(ti, ": "); |
1562 | 0 | if (error_codes & 0x01) |
1563 | 0 | proto_item_append_text(ti, "Invalid Auxiliary Input Object ID "); |
1564 | 0 | if (error_codes & 0x02) |
1565 | 0 | proto_item_append_text(ti, "any other error "); |
1566 | 0 | } |
1567 | |
|
1568 | 0 | if(direction == ecu_to_vt) |
1569 | 0 | { |
1570 | 0 | if(enable == 0) |
1571 | 0 | { |
1572 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Auxiliary Input %s should be disabled", |
1573 | 0 | get_object_id_string(pinfo->pool, auxiliary_input_object_id)); |
1574 | 0 | } |
1575 | 0 | else |
1576 | 0 | { |
1577 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Auxiliary Input %s should be enabled", |
1578 | 0 | get_object_id_string(pinfo->pool, auxiliary_input_object_id)); |
1579 | 0 | } |
1580 | 0 | } |
1581 | 0 | else |
1582 | 0 | { |
1583 | 0 | if(error_codes) |
1584 | 0 | { |
1585 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while changing status for Auxiliary Input %s", |
1586 | 0 | get_object_id_string(pinfo->pool, auxiliary_input_object_id)); |
1587 | 0 | } |
1588 | 0 | else |
1589 | 0 | { |
1590 | 0 | if (status == 0) |
1591 | 0 | { |
1592 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Status of Auxiliary Input %s was successfully changed to disabled", |
1593 | 0 | get_object_id_string(pinfo->pool, auxiliary_input_object_id)); |
1594 | 0 | } |
1595 | 0 | else if (status == 1) |
1596 | 0 | { |
1597 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Status of Auxiliary Input %s was successfully changed to enabled", |
1598 | 0 | get_object_id_string(pinfo->pool, auxiliary_input_object_id)); |
1599 | 0 | } |
1600 | 0 | } |
1601 | 0 | } |
1602 | 0 | } |
1603 | 0 | break; |
1604 | 0 | case VT_AUXILIARY_INPUT_TYPE_2_STATUS: |
1605 | 0 | { |
1606 | 0 | uint32_t auxiliary_input_object_id, value_1, value_2; |
1607 | 0 | proto_tree* operating_state_subtree; |
1608 | |
|
1609 | 0 | proto_tree_add_item_ret_uint(tree, |
1610 | 0 | hf_isobus_vt_auxiliaryinputtype2status_auxiliaryinputobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &auxiliary_input_object_id); |
1611 | 0 | ti = proto_tree_add_item(tree, |
1612 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1613 | 0 | proto_item_set_hidden(ti); |
1614 | 0 | offset += 2; |
1615 | |
|
1616 | 0 | proto_tree_add_item_ret_uint(tree, |
1617 | 0 | hf_isobus_vt_auxiliaryinputtype2status_value1, tvb, offset, 2, ENC_LITTLE_ENDIAN, &value_1); |
1618 | 0 | offset += 2; |
1619 | |
|
1620 | 0 | proto_tree_add_item_ret_uint(tree, |
1621 | 0 | hf_isobus_vt_auxiliaryinputtype2status_value2, tvb, offset, 2, ENC_LITTLE_ENDIAN, &value_2); |
1622 | 0 | offset += 2; |
1623 | |
|
1624 | 0 | ti = proto_tree_add_item(tree, |
1625 | 0 | hf_isobus_vt_auxiliaryinputtype2status_operatingstate, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
1626 | 0 | operating_state_subtree = proto_item_add_subtree(ti, ett_isobus_vt_auxiliaryinputtype2status_operatingstate); |
1627 | 0 | ti = proto_tree_add_item(operating_state_subtree, |
1628 | 0 | hf_isobus_vt_auxiliaryinputtype2status_operatingstate_learnmodeactive, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
1629 | 0 | proto_item_set_generated(ti); |
1630 | 0 | ti = proto_tree_add_item(operating_state_subtree, |
1631 | 0 | hf_isobus_vt_auxiliaryinputtype2status_operatingstate_inputactivatedinlearnmode, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
1632 | 0 | proto_item_set_generated(ti); |
1633 | |
|
1634 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "State of input %s value 1 = 0x%X value 2 = 0x%X.", |
1635 | 0 | get_object_id_string(pinfo->pool, auxiliary_input_object_id), value_1, value_2); |
1636 | 0 | } |
1637 | 0 | break; |
1638 | 0 | case VT_AUXILIARY_CAPABILITIES: |
1639 | 0 | { |
1640 | 0 | if(direction == ecu_to_vt) |
1641 | 0 | { |
1642 | 0 | uint32_t request_type; |
1643 | |
|
1644 | 0 | proto_tree_add_item_ret_uint(tree, |
1645 | 0 | hf_isobus_vt_auxiliarycapabilities_requesttype, tvb, offset, 1, ENC_LITTLE_ENDIAN, &request_type); |
1646 | |
|
1647 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", |
1648 | 0 | val_to_str_const(request_type, auxiliary_capabilities_request_type, "Request capabilities of Unknown")); |
1649 | 0 | } |
1650 | 0 | else |
1651 | 0 | { |
1652 | 0 | uint32_t number_of_auxiliary_units, i; |
1653 | |
|
1654 | 0 | proto_tree_add_item_ret_uint(tree, |
1655 | 0 | hf_isobus_vt_auxiliarycapabilities_numberofauxiliaryunits, tvb, offset, 1, ENC_LITTLE_ENDIAN, &number_of_auxiliary_units); |
1656 | 0 | offset += 1; |
1657 | |
|
1658 | 0 | for(i = 0; i < number_of_auxiliary_units; i++) |
1659 | 0 | { |
1660 | 0 | proto_item *input_unit_item; |
1661 | 0 | proto_tree *input_unit_subtree; |
1662 | 0 | uint32_t number_of_different_sets, j; |
1663 | 0 | uint64_t name; |
1664 | |
|
1665 | 0 | input_unit_subtree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_isobus_vt_auxiliarycapabilities_inputunit, &input_unit_item, "Auxiliary Unit"); |
1666 | |
|
1667 | 0 | proto_tree_add_item_ret_uint64(input_unit_subtree, |
1668 | 0 | hf_isobus_vt_auxiliarycapabilities_auxiliaryunit_name, tvb, offset, 8, ENC_LITTLE_ENDIAN, &name); |
1669 | 0 | offset += 8; |
1670 | |
|
1671 | 0 | proto_tree_add_item_ret_uint(input_unit_subtree, |
1672 | 0 | hf_isobus_vt_auxiliarycapabilities_auxiliaryunit_numberofdifferentsets, tvb, offset, 1, ENC_LITTLE_ENDIAN, &number_of_different_sets); |
1673 | 0 | offset += 1; |
1674 | |
|
1675 | 0 | proto_item_set_text(input_unit_item, "Auxiliary unit name 0x%" PRIX64, name); |
1676 | 0 | proto_item_set_len(input_unit_item, 8 + 1 + (3 * number_of_different_sets)); |
1677 | |
|
1678 | 0 | for(j = 0; j < number_of_different_sets; j++) |
1679 | 0 | { |
1680 | 0 | proto_item *auxiliary_unit_set; |
1681 | 0 | proto_tree *preferred_function_subtree; |
1682 | 0 | uint32_t number_of_instances, function_attribute, assigned_attribute; |
1683 | |
|
1684 | 0 | preferred_function_subtree = proto_tree_add_subtree(input_unit_subtree, tvb, offset, 3, ett_isobus_vt_auxiliarycapabilities_inputunit_set, &auxiliary_unit_set, "Auxiliary Unit"); |
1685 | |
|
1686 | 0 | proto_tree_add_item_ret_uint(preferred_function_subtree, |
1687 | 0 | hf_isobus_vt_auxiliarycapabilities_auxiliaryunit_set_numberofinstances, tvb, offset, 1, ENC_LITTLE_ENDIAN, &number_of_instances); |
1688 | 0 | offset += 1; |
1689 | |
|
1690 | 0 | proto_tree_add_item_ret_uint(preferred_function_subtree, |
1691 | 0 | hf_isobus_vt_auxiliarycapabilities_auxiliaryunit_set_functionattribute, tvb, offset, 1, ENC_LITTLE_ENDIAN, &function_attribute); |
1692 | 0 | offset += 1; |
1693 | |
|
1694 | 0 | proto_tree_add_item_ret_uint(preferred_function_subtree, |
1695 | 0 | hf_isobus_vt_auxiliarycapabilities_auxiliaryunit_set_assignedattribute, tvb, offset, 1, ENC_LITTLE_ENDIAN, &assigned_attribute); |
1696 | 0 | offset += 1; |
1697 | |
|
1698 | 0 | proto_item_set_text(input_unit_item, "Auxiliary set containing %u instances with function attribute %u assigned to %s", |
1699 | 0 | number_of_instances, function_attribute, val_to_str_const(assigned_attribute, auxiliary_assigned_attributes, "unknown")); |
1700 | 0 | } |
1701 | 0 | } |
1702 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Received Auxiliary Capabilities"); |
1703 | 0 | } |
1704 | 0 | } |
1705 | 0 | break; |
1706 | 0 | case VT_ESC: |
1707 | 0 | if(direction == vt_to_ecu) |
1708 | 0 | { |
1709 | 0 | uint32_t object_id, error_codes; |
1710 | |
|
1711 | 0 | proto_tree_add_item_ret_uint(tree, |
1712 | 0 | hf_isobus_vt_esc_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
1713 | 0 | ti = proto_tree_add_item(tree, |
1714 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1715 | 0 | proto_item_set_hidden(ti); |
1716 | 0 | offset += 2; |
1717 | |
|
1718 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
1719 | 0 | hf_isobus_vt_esc_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
1720 | 0 | proto_item_append_text(ti, ": "); |
1721 | 0 | if (error_codes & 0x01) |
1722 | 0 | proto_item_append_text(ti, "No input field is open for input, ESC ignored "); |
1723 | 0 | if (error_codes & 0x10) |
1724 | 0 | proto_item_append_text(ti, "any other error "); |
1725 | |
|
1726 | 0 | if(error_codes) |
1727 | 0 | { |
1728 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "ESC successful, %s", get_object_id_string(pinfo->pool, object_id)); |
1729 | 0 | } |
1730 | 0 | else |
1731 | 0 | { |
1732 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "ESC error"); |
1733 | 0 | } |
1734 | 0 | } |
1735 | 0 | else |
1736 | 0 | { |
1737 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "End of object pool received, object pool accepted"); |
1738 | 0 | } |
1739 | 0 | break; |
1740 | 0 | case VT_HIDE_SHOW_OBJECT: |
1741 | 0 | { |
1742 | 0 | uint32_t object_id, action; |
1743 | |
|
1744 | 0 | proto_tree_add_item_ret_uint(tree, |
1745 | 0 | hf_isobus_vt_hideshowobj_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
1746 | 0 | ti = proto_tree_add_item(tree, |
1747 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1748 | 0 | proto_item_set_hidden(ti); |
1749 | 0 | offset += 2; |
1750 | |
|
1751 | 0 | proto_tree_add_item_ret_uint(tree, |
1752 | 0 | hf_isobus_vt_hideshowobj_action, tvb, offset, 1, ENC_LITTLE_ENDIAN, &action); |
1753 | 0 | offset += 1; |
1754 | |
|
1755 | 0 | if(direction == vt_to_ecu) |
1756 | 0 | { |
1757 | 0 | uint32_t error_codes; |
1758 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
1759 | 0 | hf_isobus_vt_hideshowobj_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
1760 | |
|
1761 | 0 | proto_item_append_text(ti, ": "); |
1762 | 0 | if (error_codes & 0x01) |
1763 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
1764 | 0 | if (error_codes & 0x02) |
1765 | 0 | proto_item_append_text(ti, "Invalid Value "); |
1766 | 0 | if (error_codes & 0x04) |
1767 | 0 | proto_item_append_text(ti, "Value in use "); |
1768 | 0 | if (error_codes & 0x10) |
1769 | 0 | proto_item_append_text(ti, "Any other error "); |
1770 | |
|
1771 | 0 | if(error_codes) |
1772 | 0 | { |
1773 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Hide Show Error"); |
1774 | 0 | } |
1775 | 0 | else |
1776 | 0 | { |
1777 | 0 | switch(action) |
1778 | 0 | { |
1779 | 0 | case 0: |
1780 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s is now hidden", |
1781 | 0 | get_object_id_string(pinfo->pool, object_id)); |
1782 | 0 | break; |
1783 | 0 | case 1: |
1784 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s is now shown", |
1785 | 0 | get_object_id_string(pinfo->pool, object_id)); |
1786 | 0 | break; |
1787 | 0 | } |
1788 | 0 | } |
1789 | 0 | } |
1790 | 0 | else |
1791 | 0 | { |
1792 | 0 | switch(action) |
1793 | 0 | { |
1794 | 0 | case 0: |
1795 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s should hide", |
1796 | 0 | get_object_id_string(pinfo->pool, object_id)); |
1797 | 0 | break; |
1798 | 0 | case 1: |
1799 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s should show", |
1800 | 0 | get_object_id_string(pinfo->pool, object_id)); |
1801 | 0 | break; |
1802 | 0 | } |
1803 | 0 | } |
1804 | 0 | } |
1805 | 0 | break; |
1806 | 0 | case VT_ENABLE_DISABLE_COMMAND: |
1807 | 0 | { |
1808 | 0 | uint32_t object_id, enable_disable; |
1809 | |
|
1810 | 0 | proto_tree_add_item_ret_uint(tree, |
1811 | 0 | hf_isobus_vt_enabledisableobj_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
1812 | 0 | ti = proto_tree_add_item(tree, |
1813 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1814 | 0 | proto_item_set_hidden(ti); |
1815 | 0 | offset += 2; |
1816 | |
|
1817 | 0 | proto_tree_add_item_ret_uint(tree, |
1818 | 0 | hf_isobus_vt_enabledisableobj_enabledisable, tvb, offset, 1, ENC_LITTLE_ENDIAN, &enable_disable); |
1819 | 0 | offset += 1; |
1820 | |
|
1821 | 0 | if(direction == ecu_to_vt) |
1822 | 0 | { |
1823 | 0 | switch(enable_disable) |
1824 | 0 | { |
1825 | 0 | case 0: |
1826 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s should disable", |
1827 | 0 | get_object_id_string(pinfo->pool, object_id)); |
1828 | 0 | break; |
1829 | 0 | case 1: |
1830 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s should enable", |
1831 | 0 | get_object_id_string(pinfo->pool, object_id)); |
1832 | 0 | break; |
1833 | 0 | } |
1834 | 0 | } |
1835 | 0 | else |
1836 | 0 | { |
1837 | 0 | uint32_t error_codes; |
1838 | |
|
1839 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
1840 | 0 | hf_isobus_vt_enabledisableobj_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
1841 | |
|
1842 | 0 | proto_item_append_text(ti, ": "); |
1843 | 0 | if (error_codes & 0x02) |
1844 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
1845 | 0 | if (error_codes & 0x04) |
1846 | 0 | proto_item_append_text(ti, "Command error "); |
1847 | 0 | if (error_codes & 0x08) |
1848 | 0 | proto_item_append_text(ti, "Could not complete. Operator input is active on this object. "); |
1849 | 0 | if (error_codes & 0x10) |
1850 | 0 | proto_item_append_text(ti, "Any other error "); |
1851 | |
|
1852 | 0 | if(error_codes) |
1853 | 0 | { |
1854 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Enable Disable Error"); |
1855 | 0 | } |
1856 | 0 | else |
1857 | 0 | { |
1858 | 0 | switch(enable_disable) |
1859 | 0 | { |
1860 | 0 | case 0: |
1861 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s is now disabled", |
1862 | 0 | get_object_id_string(pinfo->pool, object_id)); |
1863 | 0 | break; |
1864 | 0 | case 1: |
1865 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s is now enabled", |
1866 | 0 | get_object_id_string(pinfo->pool, object_id)); |
1867 | 0 | break; |
1868 | 0 | } |
1869 | |
|
1870 | 0 | } |
1871 | 0 | } |
1872 | 0 | } |
1873 | 0 | break; |
1874 | 0 | case VT_SELECT_INPUT_OBJECT: |
1875 | 0 | { |
1876 | 0 | uint32_t object_id; |
1877 | |
|
1878 | 0 | proto_tree_add_item_ret_uint(tree, |
1879 | 0 | hf_isobus_vt_selectinputobject_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
1880 | 0 | ti = proto_tree_add_item(tree, |
1881 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1882 | 0 | proto_item_set_hidden(ti); |
1883 | 0 | offset += 2; |
1884 | |
|
1885 | 0 | if(direction == ecu_to_vt) |
1886 | 0 | { |
1887 | 0 | proto_tree_add_item(tree, |
1888 | 0 | hf_isobus_vt_selectinputobject_option, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
1889 | |
|
1890 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s should be selected for input", |
1891 | 0 | get_object_id_string(pinfo->pool, object_id)); |
1892 | 0 | } |
1893 | 0 | else |
1894 | 0 | { |
1895 | 0 | uint32_t response, error_codes; |
1896 | |
|
1897 | 0 | proto_tree_add_item_ret_uint(tree, |
1898 | 0 | hf_isobus_vt_selectinputobject_response, tvb, offset, 1, ENC_LITTLE_ENDIAN, &response); |
1899 | 0 | offset += 1; |
1900 | |
|
1901 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
1902 | 0 | hf_isobus_vt_selectinputobject_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
1903 | 0 | proto_item_append_text(ti, ": "); |
1904 | 0 | if (error_codes & 0x01) |
1905 | 0 | proto_item_append_text(ti, "Object is disabled "); |
1906 | 0 | if (error_codes & 0x02) |
1907 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
1908 | 0 | if (error_codes & 0x04) |
1909 | 0 | proto_item_append_text(ti, "Object is not on the active mask or object is in a hidden container "); |
1910 | 0 | if (error_codes & 0x08) |
1911 | 0 | proto_item_append_text(ti, "Could not complete. Another Input field is currently being modified, or a Button or Soft Key is currently being held. "); |
1912 | 0 | if (error_codes & 0x10) |
1913 | 0 | proto_item_append_text(ti, "Any other error "); |
1914 | 0 | if (error_codes & 0x20) |
1915 | 0 | proto_item_append_text(ti, "Invalid option value "); |
1916 | |
|
1917 | 0 | if(error_codes) |
1918 | 0 | { |
1919 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Error while selecting input object"); |
1920 | 0 | } |
1921 | 0 | else |
1922 | 0 | { |
1923 | 0 | switch(response) |
1924 | 0 | { |
1925 | 0 | case 0: |
1926 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s is not selected", |
1927 | 0 | get_object_id_string(pinfo->pool, object_id)); |
1928 | 0 | break; |
1929 | 0 | case 1: |
1930 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s is selected", |
1931 | 0 | get_object_id_string(pinfo->pool, object_id)); |
1932 | 0 | break; |
1933 | 0 | case 2: |
1934 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s is opened for edit", |
1935 | 0 | get_object_id_string(pinfo->pool, object_id)); |
1936 | 0 | break; |
1937 | 0 | } |
1938 | 0 | } |
1939 | 0 | } |
1940 | 0 | } |
1941 | 0 | break; |
1942 | 0 | case VT_CONTROL_AUDIO_SIGNAL: |
1943 | 0 | { |
1944 | 0 | if(direction == ecu_to_vt) |
1945 | 0 | { |
1946 | 0 | uint32_t activations, frequency, ontime, offtime; |
1947 | |
|
1948 | 0 | proto_tree_add_item_ret_uint(tree, |
1949 | 0 | hf_isobus_vt_controlaudiosignal_activations, tvb, offset, 1, ENC_LITTLE_ENDIAN, &activations); |
1950 | 0 | offset += 1; |
1951 | |
|
1952 | 0 | proto_tree_add_item_ret_uint(tree, |
1953 | 0 | hf_isobus_vt_controlaudiosignal_frequency, tvb, offset, 2, ENC_LITTLE_ENDIAN, &frequency); |
1954 | 0 | offset += 2; |
1955 | |
|
1956 | 0 | proto_tree_add_item_ret_uint(tree, |
1957 | 0 | hf_isobus_vt_controlaudiosignal_ontime, tvb, offset, 2, ENC_LITTLE_ENDIAN, &ontime); |
1958 | 0 | offset += 2; |
1959 | |
|
1960 | 0 | proto_tree_add_item_ret_uint(tree, |
1961 | 0 | hf_isobus_vt_controlaudiosignal_offtime, tvb, offset, 2, ENC_LITTLE_ENDIAN, &offtime); |
1962 | |
|
1963 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Control audio signal with %d activations of %d Hz (On-time %d ms, Off-time %d ms.)", |
1964 | 0 | activations, frequency, ontime, offtime); |
1965 | 0 | } |
1966 | 0 | else |
1967 | 0 | { |
1968 | 0 | uint32_t error_codes; |
1969 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
1970 | 0 | hf_isobus_vt_controlaudiosignal_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
1971 | |
|
1972 | 0 | proto_item_append_text(ti, ": "); |
1973 | 0 | if (error_codes & 0x01) |
1974 | 0 | proto_item_append_text(ti, "Audio device is busy "); |
1975 | 0 | if (error_codes & 0x10) |
1976 | 0 | proto_item_append_text(ti, "Any other error "); |
1977 | |
|
1978 | 0 | if(error_codes) |
1979 | 0 | { |
1980 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Control audio signal Error"); |
1981 | 0 | } |
1982 | 0 | else |
1983 | 0 | { |
1984 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Control audio signal successful"); |
1985 | 0 | } |
1986 | 0 | } |
1987 | 0 | } |
1988 | 0 | break; |
1989 | 0 | case VT_SET_AUDIO_VOLUME: |
1990 | 0 | { |
1991 | 0 | if(direction == ecu_to_vt) |
1992 | 0 | { |
1993 | 0 | uint32_t volume; |
1994 | 0 | proto_tree_add_item_ret_uint(tree, |
1995 | 0 | hf_isobus_vt_setaudiovolume_volume, tvb, offset, 1, ENC_LITTLE_ENDIAN, &volume); |
1996 | |
|
1997 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Set audio volume to %d%%", volume); |
1998 | 0 | } |
1999 | 0 | else |
2000 | 0 | { |
2001 | 0 | uint32_t error_codes; |
2002 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2003 | 0 | hf_isobus_vt_setaudiovolume_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2004 | |
|
2005 | 0 | proto_item_append_text(ti, ": "); |
2006 | 0 | if (error_codes & 0x01) |
2007 | 0 | proto_item_append_text(ti, "Audio device is busy, subsequent commands use the new setting "); |
2008 | 0 | if (error_codes & 0x02) |
2009 | 0 | proto_item_append_text(ti, "Command is not supported "); |
2010 | 0 | if (error_codes & 0x10) |
2011 | 0 | proto_item_append_text(ti, "Any other error "); |
2012 | |
|
2013 | 0 | if(error_codes) |
2014 | 0 | { |
2015 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Set audio volume Error"); |
2016 | 0 | } |
2017 | 0 | else |
2018 | 0 | { |
2019 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Set audio volume successful"); |
2020 | 0 | } |
2021 | 0 | } |
2022 | 0 | } |
2023 | 0 | break; |
2024 | 0 | case VT_CHANGE_CHILD_LOCATION: |
2025 | 0 | { |
2026 | 0 | uint32_t parent_object_id, object_id; |
2027 | |
|
2028 | 0 | proto_tree_add_item_ret_uint(tree, |
2029 | 0 | hf_isobus_vt_changechildlocation_parentobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &parent_object_id); |
2030 | 0 | ti = proto_tree_add_item(tree, |
2031 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2032 | 0 | proto_item_set_hidden(ti); |
2033 | 0 | offset += 2; |
2034 | |
|
2035 | 0 | proto_tree_add_item_ret_uint(tree, |
2036 | 0 | hf_isobus_vt_changechildlocation_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
2037 | 0 | ti = proto_tree_add_item(tree, |
2038 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2039 | 0 | proto_item_set_hidden(ti); |
2040 | 0 | offset += 2; |
2041 | |
|
2042 | 0 | if(direction == ecu_to_vt) |
2043 | 0 | { |
2044 | 0 | uint32_t rel_x_location, rel_y_location; |
2045 | |
|
2046 | 0 | proto_tree_add_item_ret_uint(tree, |
2047 | 0 | hf_isobus_vt_changechildlocation_relativexpos, tvb, offset, 1, ENC_LITTLE_ENDIAN, &rel_x_location); |
2048 | 0 | offset += 1; |
2049 | |
|
2050 | 0 | proto_tree_add_item_ret_uint(tree, |
2051 | 0 | hf_isobus_vt_changechildlocation_relativeypos, tvb, offset, 1, ENC_LITTLE_ENDIAN, &rel_y_location); |
2052 | |
|
2053 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Change child location of %s in %s to [%u;%u]", |
2054 | 0 | get_object_id_string(pinfo->pool, object_id), get_object_id_string(pinfo->pool, parent_object_id), rel_x_location, rel_y_location); |
2055 | 0 | } |
2056 | 0 | else |
2057 | 0 | { |
2058 | 0 | uint32_t error_codes; |
2059 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2060 | 0 | hf_isobus_vt_changechildlocation_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2061 | |
|
2062 | 0 | proto_item_append_text(ti, ": "); |
2063 | 0 | if (error_codes & 0x01) |
2064 | 0 | proto_item_append_text(ti, "Invalid Parent Object ID "); |
2065 | 0 | if (error_codes & 0x02) |
2066 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
2067 | 0 | if (error_codes & 0x10) |
2068 | 0 | proto_item_append_text(ti, "Any other error "); |
2069 | |
|
2070 | 0 | if(error_codes) |
2071 | 0 | { |
2072 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Change child location error"); |
2073 | 0 | } |
2074 | 0 | else |
2075 | 0 | { |
2076 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Change child location of %s in %s succeeded", |
2077 | 0 | get_object_id_string(pinfo->pool, object_id), get_object_id_string(pinfo->pool, parent_object_id)); |
2078 | 0 | } |
2079 | 0 | } |
2080 | 0 | } |
2081 | 0 | break; |
2082 | 0 | case VT_CHANGE_SIZE: |
2083 | 0 | { |
2084 | 0 | uint32_t object_id; |
2085 | |
|
2086 | 0 | proto_tree_add_item_ret_uint(tree, |
2087 | 0 | hf_isobus_vt_changesize_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
2088 | 0 | ti = proto_tree_add_item(tree, |
2089 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2090 | 0 | proto_item_set_hidden(ti); |
2091 | 0 | offset += 2; |
2092 | |
|
2093 | 0 | if(direction == ecu_to_vt) |
2094 | 0 | { |
2095 | 0 | uint32_t new_width, new_height; |
2096 | |
|
2097 | 0 | proto_tree_add_item_ret_uint(tree, |
2098 | 0 | hf_isobus_vt_changesize_newwidth, tvb, offset, 2, ENC_LITTLE_ENDIAN, &new_width); |
2099 | 0 | offset += 2; |
2100 | |
|
2101 | 0 | proto_tree_add_item_ret_uint(tree, |
2102 | 0 | hf_isobus_vt_changesize_newheight, tvb, offset, 2, ENC_LITTLE_ENDIAN, &new_height); |
2103 | |
|
2104 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Change size of %s to %u x %u", |
2105 | 0 | get_object_id_string(pinfo->pool, object_id), new_width, new_height); |
2106 | 0 | } |
2107 | 0 | else |
2108 | 0 | { |
2109 | 0 | uint32_t error_codes; |
2110 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2111 | 0 | hf_isobus_vt_changesize_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2112 | |
|
2113 | 0 | proto_item_append_text(ti, ": "); |
2114 | 0 | if (error_codes & 0x01) |
2115 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
2116 | 0 | if (error_codes & 0x10) |
2117 | 0 | proto_item_append_text(ti, "Any other error "); |
2118 | |
|
2119 | 0 | if(error_codes) |
2120 | 0 | { |
2121 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Change size error"); |
2122 | 0 | } |
2123 | 0 | else |
2124 | 0 | { |
2125 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Change size of %s succeeded", |
2126 | 0 | get_object_id_string(pinfo->pool, object_id)); |
2127 | 0 | } |
2128 | 0 | } |
2129 | 0 | } |
2130 | 0 | break; |
2131 | 0 | case VT_CHANGE_BACKGROUND_COLOUR: |
2132 | 0 | { |
2133 | 0 | uint32_t object_id, colour; |
2134 | |
|
2135 | 0 | proto_tree_add_item_ret_uint(tree, |
2136 | 0 | hf_isobus_vt_changebackgroundcolour_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
2137 | 0 | ti = proto_tree_add_item(tree, |
2138 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2139 | 0 | proto_item_set_hidden(ti); |
2140 | 0 | offset += 2; |
2141 | |
|
2142 | 0 | proto_tree_add_item_ret_uint(tree, |
2143 | 0 | hf_isobus_vt_changebackgroundcolour_colour, tvb, offset, 1, ENC_LITTLE_ENDIAN, &colour); |
2144 | 0 | offset += 1; |
2145 | |
|
2146 | 0 | if(direction == vt_to_ecu) |
2147 | 0 | { |
2148 | 0 | uint32_t error_codes; |
2149 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2150 | 0 | hf_isobus_vt_changebackgroundcolour_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2151 | |
|
2152 | 0 | proto_item_append_text(ti, ": "); |
2153 | 0 | if (error_codes & 0x01) |
2154 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
2155 | 0 | if (error_codes & 0x02) |
2156 | 0 | proto_item_append_text(ti, "Invalid Value "); |
2157 | 0 | if (error_codes & 0x04) |
2158 | 0 | proto_item_append_text(ti, "Value in use "); |
2159 | 0 | if (error_codes & 0x10) |
2160 | 0 | proto_item_append_text(ti, "Any other error "); |
2161 | |
|
2162 | 0 | if(error_codes) |
2163 | 0 | { |
2164 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Background colour change error"); |
2165 | 0 | } |
2166 | 0 | else |
2167 | 0 | { |
2168 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Background colour of %s has changed to %s", |
2169 | 0 | get_object_id_string(pinfo->pool, object_id), rval_to_str_const(colour, vt_colours, "Unknown")); |
2170 | 0 | } |
2171 | 0 | } |
2172 | 0 | else |
2173 | 0 | { |
2174 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Background colour of %s should change to %s", |
2175 | 0 | get_object_id_string(pinfo->pool, object_id), rval_to_str_const(colour, vt_colours, "Unknown")); |
2176 | 0 | } |
2177 | 0 | } |
2178 | 0 | break; |
2179 | 0 | case VT_CHANGE_NUMERIC_VALUE: |
2180 | 0 | { |
2181 | 0 | uint32_t object_id, error_codes, value; |
2182 | |
|
2183 | 0 | proto_tree_add_item_ret_uint(tree, |
2184 | 0 | hf_isobus_vt_chgnumval_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
2185 | 0 | ti = proto_tree_add_item(tree, |
2186 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2187 | 0 | proto_item_set_hidden(ti); |
2188 | 0 | offset += 2; |
2189 | |
|
2190 | 0 | if(direction == vt_to_ecu) |
2191 | 0 | { |
2192 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2193 | 0 | hf_isobus_vt_chgnumval_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2194 | 0 | proto_item_append_text(ti, ": "); |
2195 | 0 | if (error_codes & 0x01) |
2196 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
2197 | 0 | if (error_codes & 0x02) |
2198 | 0 | proto_item_append_text(ti, "Invalid Value "); |
2199 | 0 | if (error_codes & 0x04) |
2200 | 0 | proto_item_append_text(ti, "Value in use "); |
2201 | 0 | if (error_codes & 0x10) |
2202 | 0 | proto_item_append_text(ti, "Any other error "); |
2203 | 0 | } /* no else, byte is reserved for ecu_to_vt */ |
2204 | 0 | offset += 1; |
2205 | |
|
2206 | 0 | proto_tree_add_item_ret_uint(tree, |
2207 | 0 | hf_isobus_vt_chgnumval_value, tvb, offset, 4, ENC_LITTLE_ENDIAN, &value); |
2208 | |
|
2209 | 0 | if(direction == vt_to_ecu) |
2210 | 0 | { |
2211 | 0 | if(error_codes) |
2212 | 0 | { |
2213 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Numeric value change error"); |
2214 | 0 | } |
2215 | 0 | else |
2216 | 0 | { |
2217 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Numeric value of %s has changed to 0x%X", |
2218 | 0 | get_object_id_string(pinfo->pool, object_id), value); |
2219 | 0 | } |
2220 | 0 | } |
2221 | 0 | else |
2222 | 0 | { |
2223 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Numeric value of %s should change to 0x%X", |
2224 | 0 | get_object_id_string(pinfo->pool, object_id), value); |
2225 | 0 | } |
2226 | 0 | } |
2227 | 0 | break; |
2228 | 0 | case VT_CHANGE_END_POINT: |
2229 | 0 | { |
2230 | 0 | uint32_t object_id; |
2231 | |
|
2232 | 0 | proto_tree_add_item_ret_uint(tree, |
2233 | 0 | hf_isobus_vt_changeendpoint_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
2234 | 0 | ti = proto_tree_add_item(tree, |
2235 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2236 | 0 | proto_item_set_hidden(ti); |
2237 | 0 | offset += 2; |
2238 | |
|
2239 | 0 | if(direction == ecu_to_vt) |
2240 | 0 | { |
2241 | 0 | uint32_t width, height; |
2242 | |
|
2243 | 0 | proto_tree_add_item_ret_uint(tree, |
2244 | 0 | hf_isobus_vt_changeendpoint_width, tvb, offset, 2, ENC_LITTLE_ENDIAN, &width); |
2245 | 0 | offset += 2; |
2246 | |
|
2247 | 0 | proto_tree_add_item_ret_uint(tree, |
2248 | 0 | hf_isobus_vt_changeendpoint_height, tvb, offset, 2, ENC_LITTLE_ENDIAN, &height); |
2249 | 0 | offset += 2; |
2250 | |
|
2251 | 0 | proto_tree_add_item(tree, |
2252 | 0 | hf_isobus_vt_changeendpoint_linedirection, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
2253 | |
|
2254 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Change end point of line %s to width %d and height %d", |
2255 | 0 | get_object_id_string(pinfo->pool, object_id), width, height); |
2256 | 0 | } |
2257 | 0 | } |
2258 | 0 | break; |
2259 | 0 | case VT_CHANGE_FONT_ATTRIBUTES: |
2260 | 0 | { |
2261 | 0 | uint32_t object_id; |
2262 | |
|
2263 | 0 | proto_tree_add_item_ret_uint(tree, |
2264 | 0 | hf_isobus_vt_changefontattributes_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
2265 | 0 | ti = proto_tree_add_item(tree, |
2266 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2267 | 0 | proto_item_set_hidden(ti); |
2268 | 0 | offset += 2; |
2269 | |
|
2270 | 0 | if(direction == ecu_to_vt) |
2271 | 0 | { |
2272 | 0 | proto_tree_add_item(tree, |
2273 | 0 | hf_isobus_vt_changefontattributes_fontcolour, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
2274 | 0 | offset += 1; |
2275 | |
|
2276 | 0 | proto_tree_add_item(tree, |
2277 | 0 | hf_isobus_vt_changefontattributes_fontsize, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
2278 | 0 | offset += 1; |
2279 | |
|
2280 | 0 | proto_tree_add_item(tree, |
2281 | 0 | hf_isobus_vt_changefontattributes_fonttype, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
2282 | 0 | offset += 1; |
2283 | |
|
2284 | 0 | proto_tree_add_item(tree, |
2285 | 0 | hf_isobus_vt_changefontattributes_fontstyle, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
2286 | |
|
2287 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Change font attributes of %s", get_object_id_string(pinfo->pool, object_id)); |
2288 | 0 | } |
2289 | 0 | else |
2290 | 0 | { |
2291 | 0 | uint32_t error_codes; |
2292 | |
|
2293 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2294 | 0 | hf_isobus_vt_changefontattributes_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2295 | 0 | proto_item_append_text(ti, ": "); |
2296 | 0 | if (error_codes & 0x01) |
2297 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
2298 | 0 | if (error_codes & 0x02) |
2299 | 0 | proto_item_append_text(ti, "Invalid colour "); |
2300 | 0 | if (error_codes & 0x04) |
2301 | 0 | proto_item_append_text(ti, "Invalid size "); |
2302 | 0 | if (error_codes & 0x08) |
2303 | 0 | proto_item_append_text(ti, "Invalid type "); |
2304 | 0 | if (error_codes & 0x10) |
2305 | 0 | proto_item_append_text(ti, "Invalid style "); |
2306 | 0 | if (error_codes & 0x20) |
2307 | 0 | proto_item_append_text(ti, "Any other error "); |
2308 | |
|
2309 | 0 | if(error_codes == 0) |
2310 | 0 | { |
2311 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Font attributes of %s successfully changed", get_object_id_string(pinfo->pool, object_id)); |
2312 | 0 | } |
2313 | 0 | else |
2314 | 0 | { |
2315 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while changing font attributes of %s", get_object_id_string(pinfo->pool, object_id)); |
2316 | 0 | } |
2317 | 0 | } |
2318 | 0 | } |
2319 | 0 | break; |
2320 | 0 | case VT_CHANGE_LINE_ATTRIBUTES: |
2321 | 0 | { |
2322 | 0 | uint32_t object_id; |
2323 | |
|
2324 | 0 | proto_tree_add_item_ret_uint(tree, |
2325 | 0 | hf_isobus_vt_changelineattributes_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
2326 | 0 | ti = proto_tree_add_item(tree, |
2327 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2328 | 0 | proto_item_set_hidden(ti); |
2329 | 0 | offset += 2; |
2330 | |
|
2331 | 0 | if(direction == ecu_to_vt) |
2332 | 0 | { |
2333 | 0 | proto_tree_add_item(tree, |
2334 | 0 | hf_isobus_vt_changelineattributes_linecolour, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
2335 | 0 | offset += 1; |
2336 | |
|
2337 | 0 | proto_tree_add_item(tree, |
2338 | 0 | hf_isobus_vt_changelineattributes_linewidth, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
2339 | 0 | offset += 1; |
2340 | |
|
2341 | 0 | proto_tree_add_item(tree, |
2342 | 0 | hf_isobus_vt_changelineattributes_lineart, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2343 | |
|
2344 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Change line attributes of %s", get_object_id_string(pinfo->pool, object_id)); |
2345 | 0 | } |
2346 | 0 | else |
2347 | 0 | { |
2348 | 0 | uint32_t error_codes; |
2349 | |
|
2350 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2351 | 0 | hf_isobus_vt_changelineattributes_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2352 | 0 | proto_item_append_text(ti, ": "); |
2353 | 0 | if (error_codes & 0x01) |
2354 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
2355 | 0 | if (error_codes & 0x02) |
2356 | 0 | proto_item_append_text(ti, "Invalid colour "); |
2357 | 0 | if (error_codes & 0x04) |
2358 | 0 | proto_item_append_text(ti, "Invalid width "); |
2359 | 0 | if (error_codes & 0x10) |
2360 | 0 | proto_item_append_text(ti, "Any other error "); |
2361 | |
|
2362 | 0 | if(error_codes == 0) |
2363 | 0 | { |
2364 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Line attributes of %s successfully changed", get_object_id_string(pinfo->pool, object_id)); |
2365 | 0 | } |
2366 | 0 | else |
2367 | 0 | { |
2368 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while changing line attributes of %s", get_object_id_string(pinfo->pool, object_id)); |
2369 | 0 | } |
2370 | 0 | } |
2371 | 0 | } |
2372 | 0 | break; |
2373 | 0 | case VT_CHANGE_FILL_ATTRIBUTES: |
2374 | 0 | { |
2375 | 0 | uint32_t object_id; |
2376 | |
|
2377 | 0 | proto_tree_add_item_ret_uint(tree, |
2378 | 0 | hf_isobus_vt_changefillattributes_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
2379 | 0 | ti = proto_tree_add_item(tree, |
2380 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2381 | 0 | proto_item_set_hidden(ti); |
2382 | 0 | offset += 2; |
2383 | |
|
2384 | 0 | if(direction == ecu_to_vt) |
2385 | 0 | { |
2386 | 0 | proto_tree_add_item(tree, |
2387 | 0 | hf_isobus_vt_changefillattributes_filltype, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
2388 | 0 | offset += 1; |
2389 | |
|
2390 | 0 | proto_tree_add_item(tree, |
2391 | 0 | hf_isobus_vt_changefillattributes_fillcolour, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
2392 | 0 | offset += 1; |
2393 | |
|
2394 | 0 | proto_tree_add_item(tree, |
2395 | 0 | hf_isobus_vt_changefillattributes_fillpatternobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2396 | 0 | ti = proto_tree_add_item(tree, |
2397 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2398 | 0 | proto_item_set_hidden(ti); |
2399 | |
|
2400 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Change fill attributes of %s", get_object_id_string(pinfo->pool, object_id)); |
2401 | 0 | } |
2402 | 0 | else |
2403 | 0 | { |
2404 | 0 | uint32_t error_codes; |
2405 | |
|
2406 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2407 | 0 | hf_isobus_vt_changefillattributes_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2408 | 0 | proto_item_append_text(ti, ": "); |
2409 | 0 | if (error_codes & 0x01) |
2410 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
2411 | 0 | if (error_codes & 0x02) |
2412 | 0 | proto_item_append_text(ti, "Invalid type "); |
2413 | 0 | if (error_codes & 0x04) |
2414 | 0 | proto_item_append_text(ti, "Invalid colour "); |
2415 | 0 | if (error_codes & 0x08) |
2416 | 0 | proto_item_append_text(ti, "Invalid pattern Object ID "); |
2417 | 0 | if (error_codes & 0x10) |
2418 | 0 | proto_item_append_text(ti, "Any other error "); |
2419 | |
|
2420 | 0 | if(error_codes == 0) |
2421 | 0 | { |
2422 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Fill attributes of %s successfully changed", get_object_id_string(pinfo->pool, object_id)); |
2423 | 0 | } |
2424 | 0 | else |
2425 | 0 | { |
2426 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while changing fill attributes of %s", get_object_id_string(pinfo->pool, object_id)); |
2427 | 0 | } |
2428 | 0 | } |
2429 | 0 | } |
2430 | 0 | break; |
2431 | 0 | case VT_CHANGE_ACTIVE_MASK: |
2432 | 0 | { |
2433 | 0 | uint32_t working_set_object_id, new_active_mask_object_id, error_codes; |
2434 | |
|
2435 | 0 | if(direction == ecu_to_vt) |
2436 | 0 | { |
2437 | 0 | proto_tree_add_item_ret_uint(tree, |
2438 | 0 | hf_isobus_vt_changeactivemask_workingset, tvb, offset, 2, ENC_LITTLE_ENDIAN, &working_set_object_id); |
2439 | 0 | ti = proto_tree_add_item(tree, |
2440 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2441 | 0 | proto_item_set_hidden(ti); |
2442 | 0 | offset += 2; |
2443 | 0 | } |
2444 | 0 | else |
2445 | 0 | { |
2446 | 0 | working_set_object_id = 0; |
2447 | 0 | } |
2448 | |
|
2449 | 0 | proto_tree_add_item_ret_uint(tree, |
2450 | 0 | hf_isobus_vt_changeactivemask_newactivemask, tvb, offset, 2, ENC_LITTLE_ENDIAN, &new_active_mask_object_id); |
2451 | 0 | ti = proto_tree_add_item(tree, |
2452 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2453 | 0 | proto_item_set_hidden(ti); |
2454 | 0 | offset += 2; |
2455 | |
|
2456 | 0 | if(direction == vt_to_ecu) |
2457 | 0 | { |
2458 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2459 | 0 | hf_isobus_vt_changeactivemask_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2460 | 0 | proto_item_append_text(ti, ": "); |
2461 | 0 | if (error_codes & 0x01) |
2462 | 0 | proto_item_append_text(ti, "Invalid Working Set Object ID "); |
2463 | 0 | if (error_codes & 0x02) |
2464 | 0 | proto_item_append_text(ti, "Invalid Mask Object ID "); |
2465 | 0 | if (error_codes & 0x10) |
2466 | 0 | proto_item_append_text(ti, "Any other error "); |
2467 | 0 | } |
2468 | |
|
2469 | 0 | if(direction == ecu_to_vt) |
2470 | 0 | { |
2471 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Change active mask of working set %s to %s", get_object_id_string(pinfo->pool, working_set_object_id), get_object_id_string(pinfo->pool, new_active_mask_object_id)); |
2472 | 0 | } |
2473 | 0 | else if(direction == vt_to_ecu) |
2474 | 0 | { |
2475 | 0 | if(error_codes == 0) |
2476 | 0 | { |
2477 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Active mask successfully changed to %s", get_object_id_string(pinfo->pool, new_active_mask_object_id)); |
2478 | 0 | } |
2479 | 0 | else |
2480 | 0 | { |
2481 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while changing active mask to %s", get_object_id_string(pinfo->pool, new_active_mask_object_id)); |
2482 | 0 | } |
2483 | 0 | } |
2484 | 0 | } |
2485 | 0 | break; |
2486 | 0 | case VT_CHANGE_SOFT_KEY_MASK: |
2487 | 0 | { |
2488 | 0 | uint32_t error_codes, data_mask_object_id, new_soft_key_mask_object_id; |
2489 | |
|
2490 | 0 | if(direction == ecu_to_vt) |
2491 | 0 | { |
2492 | 0 | proto_tree_add_item(tree, |
2493 | 0 | hf_isobus_vt_changesoftkeymask_masktype, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
2494 | 0 | offset += 1; |
2495 | 0 | } |
2496 | |
|
2497 | 0 | proto_tree_add_item_ret_uint(tree, |
2498 | 0 | hf_isobus_vt_changesoftkeymask_datamaskobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &data_mask_object_id); |
2499 | 0 | ti = proto_tree_add_item(tree, |
2500 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2501 | 0 | proto_item_set_hidden(ti); |
2502 | 0 | offset += 2; |
2503 | |
|
2504 | 0 | proto_tree_add_item_ret_uint(tree, |
2505 | 0 | hf_isobus_vt_changesoftkeymask_newsoftkeymaskobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &new_soft_key_mask_object_id); |
2506 | 0 | ti = proto_tree_add_item(tree, |
2507 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2508 | 0 | proto_item_set_hidden(ti); |
2509 | 0 | offset += 2; |
2510 | |
|
2511 | 0 | if(direction == vt_to_ecu) |
2512 | 0 | { |
2513 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2514 | 0 | hf_isobus_vt_changesoftkeymask_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2515 | 0 | proto_item_append_text(ti, ": "); |
2516 | 0 | if (error_codes & 0x01) |
2517 | 0 | proto_item_append_text(ti, "Invalid Data or Alarm Mask Object ID "); |
2518 | 0 | if (error_codes & 0x02) |
2519 | 0 | proto_item_append_text(ti, "Invalid Soft Key Mask Object ID "); |
2520 | 0 | if (error_codes & 0x04) |
2521 | 0 | proto_item_append_text(ti, "Missing Objects "); |
2522 | 0 | if (error_codes & 0x08) |
2523 | 0 | proto_item_append_text(ti, "Mask or child object has errors "); |
2524 | 0 | if (error_codes & 0x10) |
2525 | 0 | proto_item_append_text(ti, "Any other error "); |
2526 | 0 | } |
2527 | |
|
2528 | 0 | if(direction == ecu_to_vt) |
2529 | 0 | { |
2530 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Soft key mask of %s should change to %s", get_object_id_string(pinfo->pool, data_mask_object_id), get_object_id_string(pinfo->pool, new_soft_key_mask_object_id)); |
2531 | 0 | } |
2532 | 0 | else if(direction == vt_to_ecu) |
2533 | 0 | { |
2534 | 0 | if(error_codes == 0) |
2535 | 0 | { |
2536 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Soft key mask of %s successfully changed to %s", get_object_id_string(pinfo->pool, data_mask_object_id), get_object_id_string(pinfo->pool, new_soft_key_mask_object_id)); |
2537 | 0 | } |
2538 | 0 | else |
2539 | 0 | { |
2540 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while changing soft key mask of %s to %s", get_object_id_string(pinfo->pool, data_mask_object_id), get_object_id_string(pinfo->pool, new_soft_key_mask_object_id)); |
2541 | 0 | } |
2542 | 0 | } |
2543 | 0 | } |
2544 | 0 | break; |
2545 | 0 | case VT_CHANGE_ATTRIBUTES: |
2546 | 0 | { |
2547 | 0 | uint32_t attribute_id, error_codes, object_id, new_value; |
2548 | |
|
2549 | 0 | proto_tree_add_item_ret_uint(tree, |
2550 | 0 | hf_isobus_vt_changeattributes_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
2551 | 0 | ti = proto_tree_add_item(tree, |
2552 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2553 | 0 | proto_item_set_hidden(ti); |
2554 | 0 | offset += 2; |
2555 | |
|
2556 | 0 | proto_tree_add_item_ret_uint(tree, |
2557 | 0 | hf_isobus_vt_changeattributes_attributeid, tvb, offset, 1, ENC_LITTLE_ENDIAN, &attribute_id); |
2558 | 0 | offset += 1; |
2559 | |
|
2560 | 0 | if(direction == ecu_to_vt) |
2561 | 0 | { |
2562 | 0 | proto_tree_add_item_ret_uint(tree, |
2563 | 0 | hf_isobus_vt_changeattributes_newvalue, tvb, offset, 4, ENC_LITTLE_ENDIAN, &new_value); |
2564 | 0 | } |
2565 | 0 | else if(direction == vt_to_ecu) |
2566 | 0 | { |
2567 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2568 | 0 | hf_isobus_vt_changeattributes_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2569 | 0 | proto_item_append_text(ti, ": "); |
2570 | 0 | if (error_codes & 0x01) |
2571 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
2572 | 0 | if (error_codes & 0x02) |
2573 | 0 | proto_item_append_text(ti, "Invalid Attribute ID "); |
2574 | 0 | if (error_codes & 0x04) |
2575 | 0 | proto_item_append_text(ti, "Invalid Value "); |
2576 | 0 | if (error_codes & 0x08) |
2577 | 0 | proto_item_append_text(ti, "Value in use "); |
2578 | 0 | if (error_codes & 0x10) |
2579 | 0 | proto_item_append_text(ti, "Any other error "); |
2580 | 0 | } |
2581 | |
|
2582 | 0 | if(direction == ecu_to_vt) |
2583 | 0 | { |
2584 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Attribute ID %u of %s should change to 0x%X", attribute_id, get_object_id_string(pinfo->pool, object_id), new_value); |
2585 | 0 | } |
2586 | 0 | else if(direction == vt_to_ecu) |
2587 | 0 | { |
2588 | 0 | if(error_codes) |
2589 | 0 | { |
2590 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while changing Attribute ID %u of %s", attribute_id, get_object_id_string(pinfo->pool, object_id)); |
2591 | 0 | } |
2592 | 0 | else |
2593 | 0 | { |
2594 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Attribute ID %u of %s has successfully changed", attribute_id, get_object_id_string(pinfo->pool, object_id)); |
2595 | 0 | } |
2596 | 0 | } |
2597 | 0 | } |
2598 | 0 | break; |
2599 | 0 | case VT_CHANGE_PRIORITY: |
2600 | 0 | { |
2601 | 0 | uint32_t object_id, new_priority, error_codes; |
2602 | |
|
2603 | 0 | proto_tree_add_item_ret_uint(tree, |
2604 | 0 | hf_isobus_vt_changepriority_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
2605 | 0 | ti = proto_tree_add_item(tree, |
2606 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2607 | 0 | proto_item_set_hidden(ti); |
2608 | 0 | offset += 2; |
2609 | |
|
2610 | 0 | proto_tree_add_item_ret_uint(tree, |
2611 | 0 | hf_isobus_vt_changepriority_newpriority, tvb, offset, 1, ENC_LITTLE_ENDIAN, &new_priority); |
2612 | 0 | offset += 1; |
2613 | |
|
2614 | 0 | if(direction == vt_to_ecu) |
2615 | 0 | { |
2616 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2617 | 0 | hf_isobus_vt_changepriority_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2618 | 0 | proto_item_append_text(ti, ": "); |
2619 | 0 | if (error_codes & 0x01) |
2620 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
2621 | 0 | if (error_codes & 0x02) |
2622 | 0 | proto_item_append_text(ti, "Invalid priority "); |
2623 | 0 | if (error_codes & 0x10) |
2624 | 0 | proto_item_append_text(ti, "Any other error "); |
2625 | 0 | } |
2626 | |
|
2627 | 0 | if(direction == ecu_to_vt) |
2628 | 0 | { |
2629 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Priority of alarm mask with %s should change to %u", get_object_id_string(pinfo->pool, object_id), new_priority); |
2630 | 0 | } |
2631 | 0 | else if(direction == vt_to_ecu) |
2632 | 0 | { |
2633 | 0 | if(error_codes) |
2634 | 0 | { |
2635 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while changing priority of alarm mask with %s to %u", get_object_id_string(pinfo->pool, object_id), new_priority); |
2636 | 0 | } |
2637 | 0 | else |
2638 | 0 | { |
2639 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Priority of alarm mask with %s has successfully changed to %u", get_object_id_string(pinfo->pool, object_id), new_priority); |
2640 | 0 | } |
2641 | 0 | } |
2642 | 0 | } |
2643 | 0 | break; |
2644 | 0 | case VT_CHANGE_LIST_ITEM: |
2645 | 0 | { |
2646 | 0 | uint32_t list_object_id, new_object_id, list_index, error_codes; |
2647 | |
|
2648 | 0 | proto_tree_add_item_ret_uint(tree, |
2649 | 0 | hf_isobus_vt_changelistitem_listobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &list_object_id); |
2650 | 0 | ti = proto_tree_add_item(tree, |
2651 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2652 | 0 | proto_item_set_hidden(ti); |
2653 | 0 | offset += 2; |
2654 | |
|
2655 | 0 | proto_tree_add_item_ret_uint(tree, |
2656 | 0 | hf_isobus_vt_changelistitem_listindex, tvb, offset, 1, ENC_LITTLE_ENDIAN, &list_index); |
2657 | 0 | offset += 1; |
2658 | |
|
2659 | 0 | proto_tree_add_item_ret_uint(tree, |
2660 | 0 | hf_isobus_vt_changelistitem_newobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &new_object_id); |
2661 | 0 | ti = proto_tree_add_item(tree, |
2662 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2663 | 0 | proto_item_set_hidden(ti); |
2664 | 0 | offset += 2; |
2665 | |
|
2666 | 0 | if(direction == vt_to_ecu) |
2667 | 0 | { |
2668 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2669 | 0 | hf_isobus_vt_changelistitem_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2670 | 0 | proto_item_append_text(ti, ": "); |
2671 | 0 | if (error_codes & 0x01) |
2672 | 0 | proto_item_append_text(ti, "Invalid Input List object ID or Output List object ID, Animation object, External Object Definition object "); |
2673 | 0 | if (error_codes & 0x02) |
2674 | 0 | proto_item_append_text(ti, "Invalid List Index "); |
2675 | 0 | if (error_codes & 0x04) |
2676 | 0 | proto_item_append_text(ti, "Invalid New List Item Object ID "); |
2677 | 0 | if (error_codes & 0x08) |
2678 | 0 | proto_item_append_text(ti, "Value in user "); |
2679 | 0 | if (error_codes & 0x10) |
2680 | 0 | proto_item_append_text(ti, "Any other error "); |
2681 | 0 | } |
2682 | |
|
2683 | 0 | if(direction == ecu_to_vt) |
2684 | 0 | { |
2685 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s should be added to list %s at index %u", get_object_id_string(pinfo->pool, new_object_id), get_object_id_string(pinfo->pool, list_object_id), list_index); |
2686 | 0 | } |
2687 | 0 | else if(direction == vt_to_ecu) |
2688 | 0 | { |
2689 | 0 | if(error_codes) |
2690 | 0 | { |
2691 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while adding %s to list %s at index %u", get_object_id_string(pinfo->pool, new_object_id), get_object_id_string(pinfo->pool, list_object_id), list_index); |
2692 | 0 | } |
2693 | 0 | else |
2694 | 0 | { |
2695 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s was successfully added to %s at index %u", get_object_id_string(pinfo->pool, new_object_id), get_object_id_string(pinfo->pool, list_object_id), list_index); |
2696 | 0 | } |
2697 | 0 | } |
2698 | 0 | } |
2699 | 0 | break; |
2700 | 0 | case VT_DELETE_OBJECT_POOL: |
2701 | 0 | { |
2702 | 0 | if(direction == ecu_to_vt) |
2703 | 0 | { |
2704 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Object pool should be deleted from volatile memory"); |
2705 | 0 | } |
2706 | 0 | else |
2707 | 0 | { |
2708 | 0 | uint32_t error_codes; |
2709 | |
|
2710 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2711 | 0 | hf_isobus_vt_deleteobjectpool_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2712 | 0 | proto_item_append_text(ti, ": "); |
2713 | 0 | if (error_codes & 0x01) |
2714 | 0 | proto_item_append_text(ti, "Deletion Error "); |
2715 | 0 | if (error_codes & 0x10) |
2716 | 0 | proto_item_append_text(ti, "Any other error "); |
2717 | |
|
2718 | 0 | if(error_codes) |
2719 | 0 | { |
2720 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Error while deleting object pool from volatile memory"); |
2721 | 0 | } |
2722 | 0 | else |
2723 | 0 | { |
2724 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Object pool was successfully deleted from volatile memory"); |
2725 | 0 | } |
2726 | 0 | } |
2727 | 0 | } |
2728 | 0 | break; |
2729 | 0 | case VT_CHANGE_STRING_VALUE: |
2730 | 0 | { |
2731 | 0 | if(direction == ecu_to_vt) |
2732 | 0 | { |
2733 | 0 | unsigned encoding = ENC_ASCII|ENC_NA; |
2734 | 0 | uint32_t object_id, str_length; |
2735 | 0 | uint16_t firstTwoBytesString; |
2736 | 0 | const uint8_t* value; |
2737 | 0 | unsigned bomOffset = 0; |
2738 | |
|
2739 | 0 | proto_tree_add_item_ret_uint(tree, |
2740 | 0 | hf_isobus_vt_chgstrval_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
2741 | 0 | ti = proto_tree_add_item(tree, |
2742 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2743 | 0 | proto_item_set_hidden(ti); |
2744 | 0 | offset += 2; |
2745 | |
|
2746 | 0 | proto_tree_add_item_ret_uint(tree, |
2747 | 0 | hf_isobus_vt_chgstrval_length, tvb, offset, 2, ENC_LITTLE_ENDIAN, &str_length); |
2748 | 0 | offset += 2; |
2749 | |
|
2750 | 0 | firstTwoBytesString = tvb_get_letohs(tvb,offset); |
2751 | 0 | if(firstTwoBytesString == 0xFEFF) |
2752 | 0 | { |
2753 | 0 | encoding = ENC_UCS_2|ENC_LITTLE_ENDIAN; |
2754 | 0 | bomOffset = 2; |
2755 | 0 | } |
2756 | |
|
2757 | 0 | proto_tree_add_item_ret_string(tree, |
2758 | 0 | hf_isobus_vt_chgstrval_value, tvb, offset + bomOffset, str_length - bomOffset, encoding, pinfo->pool, &value); |
2759 | |
|
2760 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "String value of %s should change to %s", |
2761 | 0 | get_object_id_string(pinfo->pool, object_id), value); |
2762 | 0 | } |
2763 | 0 | else |
2764 | 0 | { |
2765 | 0 | uint32_t object_id, error_codes; |
2766 | |
|
2767 | 0 | offset += 2; /*first two bytes are reserved*/ |
2768 | |
|
2769 | 0 | proto_tree_add_item_ret_uint(tree, |
2770 | 0 | hf_isobus_vt_chgstrval_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
2771 | 0 | ti = proto_tree_add_item(tree, |
2772 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2773 | 0 | proto_item_set_hidden(ti); |
2774 | 0 | offset += 2; |
2775 | |
|
2776 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2777 | 0 | hf_isobus_vt_chgstrval_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2778 | |
|
2779 | 0 | proto_item_append_text(ti, ": "); |
2780 | 0 | if (error_codes & 0x02) |
2781 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
2782 | 0 | if (error_codes & 0x04) |
2783 | 0 | proto_item_append_text(ti, "String too long "); |
2784 | 0 | if (error_codes & 0x08) |
2785 | 0 | proto_item_append_text(ti, "Any other error "); |
2786 | 0 | if (error_codes & 0x10) |
2787 | 0 | proto_item_append_text(ti, "Value in use "); |
2788 | |
|
2789 | 0 | if(error_codes) |
2790 | 0 | { |
2791 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "String value change error"); |
2792 | 0 | } |
2793 | 0 | else |
2794 | 0 | { |
2795 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "String value of %s has changed", |
2796 | 0 | get_object_id_string(pinfo->pool, object_id)); |
2797 | 0 | } |
2798 | 0 | } |
2799 | 0 | } |
2800 | 0 | break; |
2801 | 0 | case VT_CHANGE_CHILD_POSITION: |
2802 | 0 | { |
2803 | 0 | uint32_t parent_object_id, object_id; |
2804 | |
|
2805 | 0 | proto_tree_add_item_ret_uint(tree, |
2806 | 0 | hf_isobus_vt_changechildposition_parentobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &parent_object_id); |
2807 | 0 | ti = proto_tree_add_item(tree, |
2808 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2809 | 0 | proto_item_set_hidden(ti); |
2810 | 0 | offset += 2; |
2811 | | |
2812 | |
|
2813 | 0 | proto_tree_add_item_ret_uint(tree, |
2814 | 0 | hf_isobus_vt_changechildposition_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
2815 | 0 | ti = proto_tree_add_item(tree, |
2816 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2817 | 0 | proto_item_set_hidden(ti); |
2818 | 0 | offset += 2; |
2819 | |
|
2820 | 0 | if(direction == ecu_to_vt) |
2821 | 0 | { |
2822 | 0 | uint32_t rel_x_position, rel_y_position; |
2823 | |
|
2824 | 0 | proto_tree_add_item_ret_uint(tree, |
2825 | 0 | hf_isobus_vt_changechildposition_xpos, tvb, offset, 2, ENC_LITTLE_ENDIAN, &rel_x_position); |
2826 | 0 | offset += 2; |
2827 | |
|
2828 | 0 | proto_tree_add_item_ret_uint(tree, |
2829 | 0 | hf_isobus_vt_changechildposition_ypos, tvb, offset, 2, ENC_LITTLE_ENDIAN, &rel_y_position); |
2830 | |
|
2831 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Change child position of %s in %s to [%u:%u]", |
2832 | 0 | get_object_id_string(pinfo->pool, object_id), get_object_id_string(pinfo->pool, parent_object_id), rel_x_position, rel_y_position); |
2833 | 0 | } |
2834 | 0 | else |
2835 | 0 | { |
2836 | 0 | uint32_t error_codes; |
2837 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2838 | 0 | hf_isobus_vt_changechildposition_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2839 | |
|
2840 | 0 | proto_item_append_text(ti, ": "); |
2841 | 0 | if (error_codes & 0x01) |
2842 | 0 | proto_item_append_text(ti, "Invalid Parent Object ID "); |
2843 | 0 | if (error_codes & 0x02) |
2844 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
2845 | 0 | if (error_codes & 0x10) |
2846 | 0 | proto_item_append_text(ti, "Any other error "); |
2847 | |
|
2848 | 0 | if(error_codes) |
2849 | 0 | { |
2850 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while changing child position of %s", get_object_id_string(pinfo->pool, object_id)); |
2851 | 0 | } |
2852 | 0 | else |
2853 | 0 | { |
2854 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Change child position of %s in %s succeeded", |
2855 | 0 | get_object_id_string(pinfo->pool, object_id), get_object_id_string(pinfo->pool, parent_object_id)); |
2856 | 0 | } |
2857 | 0 | } |
2858 | 0 | } |
2859 | 0 | break; |
2860 | 0 | case VT_CHANGE_OBJECT_LABEL: |
2861 | 0 | { |
2862 | 0 | if(direction == ecu_to_vt) |
2863 | 0 | { |
2864 | 0 | uint32_t object_id, string_object_id; |
2865 | |
|
2866 | 0 | proto_tree_add_item_ret_uint(tree, |
2867 | 0 | hf_isobus_vt_changeobjectlabel_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
2868 | 0 | ti = proto_tree_add_item(tree, |
2869 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2870 | 0 | proto_item_set_hidden(ti); |
2871 | 0 | offset += 2; |
2872 | |
|
2873 | 0 | proto_tree_add_item_ret_uint(tree, |
2874 | 0 | hf_isobus_vt_changeobjectlabel_stringobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &string_object_id); |
2875 | 0 | ti = proto_tree_add_item(tree, |
2876 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2877 | 0 | proto_item_set_hidden(ti); |
2878 | 0 | offset += 2; |
2879 | |
|
2880 | 0 | proto_tree_add_item(tree, |
2881 | 0 | hf_isobus_vt_changeobjectlabel_fonttype, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
2882 | 0 | offset += 1; |
2883 | |
|
2884 | 0 | proto_tree_add_item(tree, |
2885 | 0 | hf_isobus_vt_changeobjectlabel_graphicobjectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2886 | 0 | ti = proto_tree_add_item(tree, |
2887 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2888 | 0 | proto_item_set_hidden(ti); |
2889 | |
|
2890 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Change object label of %s to string %s", |
2891 | 0 | get_object_id_string(pinfo->pool, object_id), get_object_id_string(pinfo->pool, string_object_id)); |
2892 | 0 | } |
2893 | 0 | else |
2894 | 0 | { |
2895 | 0 | uint32_t error_codes; |
2896 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2897 | 0 | hf_isobus_vt_changeobjectlabel_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2898 | |
|
2899 | 0 | proto_item_append_text(ti, ": "); |
2900 | 0 | if (error_codes & 0x01) |
2901 | 0 | proto_item_append_text(ti, "Invalid object id "); |
2902 | 0 | if (error_codes & 0x02) |
2903 | 0 | proto_item_append_text(ti, "Invalid String Variable object id "); |
2904 | 0 | if (error_codes & 0x04) |
2905 | 0 | proto_item_append_text(ti, "Invalid font type "); |
2906 | 0 | if (error_codes & 0x08) |
2907 | 0 | proto_item_append_text(ti, "No Object Label Reference List object available in object pool "); |
2908 | 0 | if (error_codes & 0x10) |
2909 | 0 | proto_item_append_text(ti, "Designator references invalid objects "); |
2910 | 0 | if (error_codes & 0x20) |
2911 | 0 | proto_item_append_text(ti, "Any other error "); |
2912 | |
|
2913 | 0 | if(error_codes) |
2914 | 0 | { |
2915 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Error while changing object label"); |
2916 | 0 | } |
2917 | 0 | else |
2918 | 0 | { |
2919 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Object label successfully changed"); |
2920 | 0 | } |
2921 | 0 | } |
2922 | 0 | } |
2923 | 0 | break; |
2924 | 0 | case VT_CHANGE_POLYGON_POINT: |
2925 | 0 | { |
2926 | 0 | uint32_t object_id; |
2927 | |
|
2928 | 0 | proto_tree_add_item_ret_uint(tree, |
2929 | 0 | hf_isobus_vt_changepolygonpoint_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
2930 | 0 | ti = proto_tree_add_item(tree, |
2931 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2932 | 0 | proto_item_set_hidden(ti); |
2933 | 0 | offset += 2; |
2934 | |
|
2935 | 0 | if(direction == ecu_to_vt) |
2936 | 0 | { |
2937 | 0 | uint32_t x_value, y_value, point_index; |
2938 | |
|
2939 | 0 | proto_tree_add_item_ret_uint(tree, |
2940 | 0 | hf_isobus_vt_changepolygonpoint_pointindex, tvb, offset, 1, ENC_LITTLE_ENDIAN, &point_index); |
2941 | 0 | offset += 1; |
2942 | |
|
2943 | 0 | proto_tree_add_item_ret_uint(tree, |
2944 | 0 | hf_isobus_vt_changepolygonpoint_xvalue, tvb, offset, 2, ENC_LITTLE_ENDIAN, &x_value); |
2945 | 0 | offset += 2; |
2946 | |
|
2947 | 0 | proto_tree_add_item_ret_uint(tree, |
2948 | 0 | hf_isobus_vt_changepolygonpoint_yvalue, tvb, offset, 2, ENC_LITTLE_ENDIAN, &y_value); |
2949 | |
|
2950 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Change point %u of polygon %s to location [%u:%u] ", |
2951 | 0 | point_index, get_object_id_string(pinfo->pool, object_id), x_value, y_value); |
2952 | 0 | } |
2953 | 0 | else |
2954 | 0 | { |
2955 | 0 | uint32_t error_codes; |
2956 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2957 | 0 | hf_isobus_vt_changepolygonpoint_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
2958 | 0 | proto_item_append_text(ti, ": "); |
2959 | 0 | if (error_codes & 0x01) |
2960 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
2961 | 0 | if (error_codes & 0x02) |
2962 | 0 | proto_item_append_text(ti, "Invalid point index "); |
2963 | 0 | if (error_codes & 0x04) |
2964 | 0 | proto_item_append_text(ti, "Any other error "); |
2965 | |
|
2966 | 0 | if(error_codes) |
2967 | 0 | { |
2968 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Error while changing polygon point"); |
2969 | 0 | } |
2970 | 0 | else |
2971 | 0 | { |
2972 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Polygon point successfully changed"); |
2973 | 0 | } |
2974 | 0 | } |
2975 | 0 | } |
2976 | 0 | break; |
2977 | 0 | case VT_CHANGE_POLYGON_SCALE: |
2978 | 0 | { |
2979 | 0 | uint32_t object_id, new_width, new_height, error_codes; |
2980 | |
|
2981 | 0 | proto_tree_add_item_ret_uint(tree, |
2982 | 0 | hf_isobus_vt_changepolygonscale_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
2983 | 0 | ti = proto_tree_add_item(tree, |
2984 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2985 | 0 | proto_item_set_hidden(ti); |
2986 | 0 | offset += 2; |
2987 | |
|
2988 | 0 | proto_tree_add_item_ret_uint(tree, |
2989 | 0 | hf_isobus_vt_changepolygonscale_newwidth, tvb, offset, 2, ENC_LITTLE_ENDIAN, &new_width); |
2990 | 0 | offset += 2; |
2991 | |
|
2992 | 0 | proto_tree_add_item_ret_uint(tree, |
2993 | 0 | hf_isobus_vt_changepolygonscale_newheight, tvb, offset, 2, ENC_LITTLE_ENDIAN, &new_height); |
2994 | 0 | offset += 2; |
2995 | |
|
2996 | 0 | if(direction == vt_to_ecu) |
2997 | 0 | { |
2998 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
2999 | 0 | hf_isobus_vt_changepolygonscale_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
3000 | 0 | proto_item_append_text(ti, ": "); |
3001 | 0 | if (error_codes & 0x01) |
3002 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
3003 | 0 | if (error_codes & 0x10) |
3004 | 0 | proto_item_append_text(ti, "Any other error "); |
3005 | 0 | } |
3006 | |
|
3007 | 0 | if(direction == ecu_to_vt) |
3008 | 0 | { |
3009 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Change scale of polygon %s to width %u and height %u ", |
3010 | 0 | get_object_id_string(pinfo->pool, object_id), new_width, new_height); |
3011 | 0 | } |
3012 | 0 | else if(direction == vt_to_ecu) |
3013 | 0 | { |
3014 | 0 | if(error_codes) |
3015 | 0 | { |
3016 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while changing scale of polygon %s to width %u and height %u ", |
3017 | 0 | get_object_id_string(pinfo->pool, object_id), new_width, new_height); |
3018 | 0 | } |
3019 | 0 | else |
3020 | 0 | { |
3021 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Scale of polygon %s scale successfully changed to width %u and height %u ", |
3022 | 0 | get_object_id_string(pinfo->pool, object_id), new_width, new_height); |
3023 | 0 | } |
3024 | 0 | } |
3025 | 0 | } |
3026 | 0 | break; |
3027 | 0 | case VT_GRAPHICS_CONTEXT: |
3028 | 0 | { |
3029 | 0 | uint32_t object_id, sub_command_id; |
3030 | |
|
3031 | 0 | proto_tree_add_item_ret_uint(tree, |
3032 | 0 | hf_isobus_vt_graphicscontext_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
3033 | 0 | ti = proto_tree_add_item(tree, |
3034 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3035 | 0 | proto_item_set_hidden(ti); |
3036 | 0 | offset += 2; |
3037 | |
|
3038 | 0 | proto_tree_add_item_ret_uint(tree, |
3039 | 0 | hf_isobus_vt_graphicscontext_subcommandid, tvb, offset, 1, ENC_LITTLE_ENDIAN, &sub_command_id); |
3040 | 0 | offset += 1; |
3041 | |
|
3042 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Graphic Context of %s: ", get_object_id_string(pinfo->pool, object_id)); |
3043 | |
|
3044 | 0 | switch(sub_command_id) |
3045 | 0 | { |
3046 | 0 | case SET_GRAPHICS_CURSOR: |
3047 | 0 | { |
3048 | 0 | int32_t x_position, y_position; |
3049 | |
|
3050 | 0 | proto_tree_add_item_ret_int(tree, |
3051 | 0 | hf_isobus_vt_graphicscontext_setgraphicscursor_xposition, tvb, offset, 2, ENC_LITTLE_ENDIAN, &x_position); |
3052 | 0 | offset += 2; |
3053 | |
|
3054 | 0 | proto_tree_add_item_ret_int(tree, |
3055 | 0 | hf_isobus_vt_graphicscontext_setgraphicscursor_yposition, tvb, offset, 2, ENC_LITTLE_ENDIAN, &y_position); |
3056 | |
|
3057 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Set Graphics Cursor to Position [%d;%d] ", |
3058 | 0 | x_position, y_position); |
3059 | 0 | } |
3060 | 0 | break; |
3061 | 0 | case MOVE_GRAPHICS_CURSOR: |
3062 | 0 | { |
3063 | 0 | int32_t x_offset, y_offset; |
3064 | |
|
3065 | 0 | proto_tree_add_item_ret_int(tree, |
3066 | 0 | hf_isobus_vt_graphicscontext_movegraphicscursor_xoffset, tvb, offset, 2, ENC_LITTLE_ENDIAN, &x_offset); |
3067 | 0 | offset += 2; |
3068 | |
|
3069 | 0 | proto_tree_add_item_ret_int(tree, |
3070 | 0 | hf_isobus_vt_graphicscontext_movegraphicscursor_yoffset, tvb, offset, 2, ENC_LITTLE_ENDIAN, &y_offset); |
3071 | |
|
3072 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Move Graphics Cursor by Offset [%d;%d] ", |
3073 | 0 | x_offset, y_offset); |
3074 | 0 | } |
3075 | 0 | break; |
3076 | 0 | case SET_FOREGROUND_COLOUR: |
3077 | 0 | { |
3078 | 0 | uint32_t colour; |
3079 | |
|
3080 | 0 | proto_tree_add_item_ret_uint(tree, |
3081 | 0 | hf_isobus_vt_graphicscontext_setforegroundcolour_colour, tvb, offset, 1, ENC_LITTLE_ENDIAN, &colour); |
3082 | |
|
3083 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Set Foreground Colour to %u", |
3084 | 0 | colour); |
3085 | 0 | } |
3086 | 0 | break; |
3087 | 0 | case SET_BACKGROUND_COLOUR: |
3088 | 0 | { |
3089 | 0 | uint32_t colour; |
3090 | |
|
3091 | 0 | proto_tree_add_item_ret_uint(tree, |
3092 | 0 | hf_isobus_vt_graphicscontext_setbackgroundcolour_colour, tvb, offset, 1, ENC_LITTLE_ENDIAN, &colour); |
3093 | |
|
3094 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Set Background Colour to %u", |
3095 | 0 | colour); |
3096 | 0 | } |
3097 | 0 | break; |
3098 | 0 | case SET_LINE_ATTRIBUTES_OBJECT_ID: |
3099 | 0 | { |
3100 | 0 | uint32_t line_attr_object_id; |
3101 | |
|
3102 | 0 | proto_tree_add_item_ret_uint(tree, |
3103 | 0 | hf_isobus_vt_graphicscontext_setlineattributesobjectid_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &line_attr_object_id); |
3104 | 0 | ti = proto_tree_add_item(tree, |
3105 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3106 | 0 | proto_item_set_hidden(ti); |
3107 | |
|
3108 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Set Line Attributes to %s", |
3109 | 0 | get_object_id_string(pinfo->pool, line_attr_object_id)); |
3110 | 0 | } |
3111 | 0 | break; |
3112 | 0 | case SET_FILL_ATTRIBUTES_OBJECT_ID: |
3113 | 0 | { |
3114 | 0 | uint32_t fill_attr_object_id; |
3115 | |
|
3116 | 0 | proto_tree_add_item_ret_uint(tree, |
3117 | 0 | hf_isobus_vt_graphicscontext_setfillattributesobjectid_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &fill_attr_object_id); |
3118 | 0 | ti = proto_tree_add_item(tree, |
3119 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3120 | 0 | proto_item_set_hidden(ti); |
3121 | |
|
3122 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Set Fill Attributes to %s", |
3123 | 0 | get_object_id_string(pinfo->pool, fill_attr_object_id)); |
3124 | 0 | } |
3125 | 0 | break; |
3126 | 0 | case SET_FONT_ATTRIBUTES_OBJECT_ID: |
3127 | 0 | { |
3128 | 0 | uint32_t font_attr_object_id; |
3129 | |
|
3130 | 0 | proto_tree_add_item_ret_uint(tree, |
3131 | 0 | hf_isobus_vt_graphicscontext_setfontattributesobjectid_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &font_attr_object_id); |
3132 | 0 | ti = proto_tree_add_item(tree, |
3133 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3134 | 0 | proto_item_set_hidden(ti); |
3135 | |
|
3136 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Set Font Attributes to %s", |
3137 | 0 | get_object_id_string(pinfo->pool, font_attr_object_id)); |
3138 | 0 | } |
3139 | 0 | break; |
3140 | 0 | case ERASE_RECTANGLE: |
3141 | 0 | { |
3142 | 0 | uint32_t width, height; |
3143 | |
|
3144 | 0 | proto_tree_add_item_ret_uint(tree, |
3145 | 0 | hf_isobus_vt_graphicscontext_eraserectangle_width, tvb, offset, 2, ENC_LITTLE_ENDIAN, &width); |
3146 | 0 | offset += 2; |
3147 | |
|
3148 | 0 | proto_tree_add_item_ret_uint(tree, |
3149 | 0 | hf_isobus_vt_graphicscontext_eraserectangle_height, tvb, offset, 2, ENC_LITTLE_ENDIAN, &height); |
3150 | |
|
3151 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Erase Rectangle width %u height %u", |
3152 | 0 | width, height); |
3153 | 0 | } |
3154 | 0 | break; |
3155 | 0 | case DRAW_POINT: |
3156 | 0 | { |
3157 | 0 | int32_t x_offset, y_offset; |
3158 | |
|
3159 | 0 | proto_tree_add_item_ret_int(tree, |
3160 | 0 | hf_isobus_vt_graphicscontext_drawpoint_xoffset, tvb, offset, 2, ENC_LITTLE_ENDIAN, &x_offset); |
3161 | 0 | offset += 2; |
3162 | |
|
3163 | 0 | proto_tree_add_item_ret_int(tree, |
3164 | 0 | hf_isobus_vt_graphicscontext_drawpoint_yoffset, tvb, offset, 2, ENC_LITTLE_ENDIAN, &y_offset); |
3165 | |
|
3166 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Draw point at graphics cursor with offset [%d;%d] ", |
3167 | 0 | x_offset, y_offset); |
3168 | 0 | } |
3169 | 0 | break; |
3170 | 0 | case DRAW_LINE: |
3171 | 0 | { |
3172 | 0 | int32_t x_offset, y_offset; |
3173 | |
|
3174 | 0 | proto_tree_add_item_ret_int(tree, |
3175 | 0 | hf_isobus_vt_graphicscontext_drawline_xoffset, tvb, offset, 2, ENC_LITTLE_ENDIAN, &x_offset); |
3176 | 0 | offset += 2; |
3177 | |
|
3178 | 0 | proto_tree_add_item_ret_int(tree, |
3179 | 0 | hf_isobus_vt_graphicscontext_drawline_yoffset, tvb, offset, 2, ENC_LITTLE_ENDIAN, &y_offset); |
3180 | |
|
3181 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Draw line from graphics cursor to offset [%d;%d] ", |
3182 | 0 | x_offset, y_offset); |
3183 | 0 | } |
3184 | 0 | break; |
3185 | 0 | case DRAW_RECTANGLE: |
3186 | 0 | { |
3187 | 0 | uint32_t width, height; |
3188 | |
|
3189 | 0 | proto_tree_add_item_ret_uint(tree, |
3190 | 0 | hf_isobus_vt_graphicscontext_drawrectangle_width, tvb, offset, 2, ENC_LITTLE_ENDIAN, &width); |
3191 | 0 | offset += 2; |
3192 | |
|
3193 | 0 | proto_tree_add_item_ret_uint(tree, |
3194 | 0 | hf_isobus_vt_graphicscontext_drawrectangle_height, tvb, offset, 2, ENC_LITTLE_ENDIAN, &height); |
3195 | |
|
3196 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Draw Rectangle width %u height %u", |
3197 | 0 | width, height); |
3198 | 0 | } |
3199 | 0 | break; |
3200 | 0 | case DRAW_CLOSED_ELLIPSE: |
3201 | 0 | { |
3202 | 0 | uint32_t width, height; |
3203 | |
|
3204 | 0 | proto_tree_add_item_ret_uint(tree, |
3205 | 0 | hf_isobus_vt_graphicscontext_drawclosedellipse_width, tvb, offset, 2, ENC_LITTLE_ENDIAN, &width); |
3206 | 0 | offset += 2; |
3207 | |
|
3208 | 0 | proto_tree_add_item_ret_uint(tree, |
3209 | 0 | hf_isobus_vt_graphicscontext_drawclosedellipse_height, tvb, offset, 2, ENC_LITTLE_ENDIAN, &height); |
3210 | |
|
3211 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Draw Closed Ellipse width %u height %u", |
3212 | 0 | width, height); |
3213 | 0 | } |
3214 | 0 | break; |
3215 | 0 | case DRAW_POLYGON: |
3216 | 0 | { |
3217 | 0 | uint32_t number_of_points, i; |
3218 | |
|
3219 | 0 | proto_tree_add_item_ret_uint(tree, |
3220 | 0 | hf_isobus_vt_graphicscontext_drawpolygon_numberofpoints, tvb, offset, 1, ENC_LITTLE_ENDIAN, &number_of_points); |
3221 | 0 | offset += 1; |
3222 | |
|
3223 | 0 | for(i = 0; i < number_of_points; i++) |
3224 | 0 | { |
3225 | 0 | proto_item *point_item; |
3226 | 0 | proto_tree *point_subtree; |
3227 | 0 | int32_t x_offset, y_offset; |
3228 | |
|
3229 | 0 | point_subtree = proto_tree_add_subtree(tree, |
3230 | 0 | tvb, offset, 4, ett_isobus_vt_getsupportedwidechars_range, &point_item, "Point"); |
3231 | |
|
3232 | 0 | proto_tree_add_item_ret_int(point_subtree, |
3233 | 0 | hf_isobus_vt_graphicscontext_drawpolygon_point_xoffset, tvb, offset, 2, ENC_LITTLE_ENDIAN, &x_offset); |
3234 | 0 | offset += 2; |
3235 | |
|
3236 | 0 | proto_tree_add_item_ret_int(point_subtree, |
3237 | 0 | hf_isobus_vt_graphicscontext_drawpolygon_point_yoffset, tvb, offset, 2, ENC_LITTLE_ENDIAN, &y_offset); |
3238 | 0 | offset += 2; |
3239 | |
|
3240 | 0 | proto_item_set_text(point_item, "Point with offset [%d;%d]", x_offset, y_offset); |
3241 | 0 | } |
3242 | |
|
3243 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Draw Polygon of %u points", |
3244 | 0 | number_of_points); |
3245 | 0 | } |
3246 | 0 | break; |
3247 | 0 | case DRAW_TEXT: |
3248 | 0 | { |
3249 | 0 | unsigned encoding = ENC_ASCII|ENC_NA; |
3250 | 0 | uint16_t firstTwoBytesString; |
3251 | 0 | unsigned bomOffset = 0; |
3252 | 0 | uint32_t background, number_of_bytes; |
3253 | 0 | const uint8_t* value; |
3254 | |
|
3255 | 0 | proto_tree_add_item_ret_uint(tree, |
3256 | 0 | hf_isobus_vt_graphicscontext_drawtext_background, tvb, offset, 1, ENC_LITTLE_ENDIAN, &background); |
3257 | 0 | offset += 1; |
3258 | |
|
3259 | 0 | proto_tree_add_item_ret_uint(tree, |
3260 | 0 | hf_isobus_vt_graphicscontext_drawtext_numberofbytes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &number_of_bytes); |
3261 | 0 | offset += 1; |
3262 | |
|
3263 | 0 | firstTwoBytesString = tvb_get_letohs(tvb,offset); |
3264 | 0 | if(firstTwoBytesString == 0xFEFF) |
3265 | 0 | { |
3266 | 0 | encoding = ENC_UCS_2|ENC_LITTLE_ENDIAN; |
3267 | 0 | bomOffset = 2; |
3268 | 0 | } |
3269 | |
|
3270 | 0 | proto_tree_add_item_ret_string(tree, |
3271 | 0 | hf_isobus_vt_graphicscontext_drawtext_textstring, tvb, offset + bomOffset, number_of_bytes - bomOffset, encoding, pinfo->pool, &value); |
3272 | |
|
3273 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Draw string \"%s\" at cursor with a %s background", |
3274 | 0 | value, val_to_str_const(background, draw_text_background, "unknown")); |
3275 | 0 | } |
3276 | 0 | break; |
3277 | 0 | case PAN_VIEWPORT: |
3278 | 0 | { |
3279 | 0 | int32_t viewport_x, viewport_y; |
3280 | |
|
3281 | 0 | proto_tree_add_item_ret_int(tree, |
3282 | 0 | hf_isobus_vt_graphicscontext_panviewport_viewportx, tvb, offset, 2, ENC_LITTLE_ENDIAN, &viewport_x); |
3283 | 0 | offset += 2; |
3284 | |
|
3285 | 0 | proto_tree_add_item_ret_int(tree, |
3286 | 0 | hf_isobus_vt_graphicscontext_panviewport_viewporty, tvb, offset, 2, ENC_LITTLE_ENDIAN, &viewport_y); |
3287 | |
|
3288 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Pan Viewport by [%d;%d] pixels", |
3289 | 0 | viewport_x, viewport_y); |
3290 | 0 | } |
3291 | 0 | break; |
3292 | 0 | case ZOOM_VIEWPORT: |
3293 | 0 | { |
3294 | 0 | float zoom_value; |
3295 | |
|
3296 | 0 | zoom_value = tvb_get_ieee_float(tvb, offset, ENC_LITTLE_ENDIAN); |
3297 | 0 | proto_tree_add_item(tree, |
3298 | 0 | hf_isobus_vt_graphicscontext_zoomviewport_zoomvalue, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
3299 | |
|
3300 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Zoom Viewport by %g", |
3301 | 0 | zoom_value); |
3302 | 0 | } |
3303 | 0 | break; |
3304 | 0 | case PAN_AND_ZOOM_VIEWPORT: |
3305 | 0 | { |
3306 | 0 | float zoom_value; |
3307 | 0 | int32_t viewport_x, viewport_y; |
3308 | |
|
3309 | 0 | proto_tree_add_item_ret_int(tree, |
3310 | 0 | hf_isobus_vt_graphicscontext_panandzoomviewport_viewportx, tvb, offset, 2, ENC_LITTLE_ENDIAN, &viewport_x); |
3311 | 0 | offset += 2; |
3312 | |
|
3313 | 0 | proto_tree_add_item_ret_int(tree, |
3314 | 0 | hf_isobus_vt_graphicscontext_panandzoomviewport_viewporty, tvb, offset, 2, ENC_LITTLE_ENDIAN, &viewport_y); |
3315 | 0 | offset += 2; |
3316 | |
|
3317 | 0 | zoom_value = tvb_get_ieee_float(tvb, offset, ENC_LITTLE_ENDIAN); |
3318 | 0 | proto_tree_add_item(tree, |
3319 | 0 | hf_isobus_vt_graphicscontext_panandzoomviewport_zoomvalue, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3320 | |
|
3321 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Pan viewport by [%d;%d] pixels and zoom by %g", |
3322 | 0 | viewport_x, viewport_y, zoom_value); |
3323 | 0 | } |
3324 | 0 | break; |
3325 | 0 | case CHANGE_VIEWPORT_SIZE: |
3326 | 0 | { |
3327 | 0 | uint32_t new_width, new_height; |
3328 | |
|
3329 | 0 | proto_tree_add_item_ret_uint(tree, |
3330 | 0 | hf_isobus_vt_graphicscontext_changeviewportsize_newwidth, tvb, offset, 2, ENC_LITTLE_ENDIAN, &new_width); |
3331 | 0 | offset += 2; |
3332 | |
|
3333 | 0 | proto_tree_add_item_ret_uint(tree, |
3334 | 0 | hf_isobus_vt_graphicscontext_changeviewportsize_newheight, tvb, offset, 2, ENC_LITTLE_ENDIAN, &new_height); |
3335 | |
|
3336 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Change viewport size to [%ux%u]", |
3337 | 0 | new_width, new_height); |
3338 | 0 | } |
3339 | 0 | break; |
3340 | 0 | case DRAW_VT_OBJECT: |
3341 | 0 | { |
3342 | 0 | uint32_t draw_object_id; |
3343 | |
|
3344 | 0 | proto_tree_add_item_ret_uint(tree, |
3345 | 0 | hf_isobus_vt_graphicscontext_drawvtobject_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &draw_object_id); |
3346 | 0 | ti = proto_tree_add_item(tree, |
3347 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3348 | 0 | proto_item_set_hidden(ti); |
3349 | |
|
3350 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Draw VT %s at graphics cursor", |
3351 | 0 | get_object_id_string(pinfo->pool, draw_object_id)); |
3352 | 0 | } |
3353 | 0 | break; |
3354 | 0 | case COPY_CANVAS_TO_PICTURE_GRAPHIC: |
3355 | 0 | { |
3356 | 0 | uint32_t object_id_picture_graphic; |
3357 | |
|
3358 | 0 | proto_tree_add_item_ret_uint(tree, |
3359 | 0 | hf_isobus_vt_graphicscontext_copycanvastopicturegraphic_objectidpicturegraphic, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id_picture_graphic); |
3360 | 0 | ti = proto_tree_add_item(tree, |
3361 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3362 | 0 | proto_item_set_hidden(ti); |
3363 | |
|
3364 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Copy canvas to picture graphics %s", |
3365 | 0 | get_object_id_string(pinfo->pool, object_id_picture_graphic)); |
3366 | 0 | } |
3367 | 0 | break; |
3368 | 0 | case COPY_VIEWPORT_TO_PICTURE_GRAPHIC: |
3369 | 0 | { |
3370 | 0 | uint32_t object_id_picture_graphic; |
3371 | |
|
3372 | 0 | proto_tree_add_item_ret_uint(tree, |
3373 | 0 | hf_isobus_vt_graphicscontext_copyviewporttopicturegraphic_objectidpicturegraphic, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id_picture_graphic); |
3374 | 0 | ti = proto_tree_add_item(tree, |
3375 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3376 | 0 | proto_item_set_hidden(ti); |
3377 | |
|
3378 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Copy viewport to picture graphics %s", |
3379 | 0 | get_object_id_string(pinfo->pool, object_id_picture_graphic)); |
3380 | 0 | } |
3381 | 0 | break; |
3382 | 0 | } |
3383 | 0 | } |
3384 | 0 | break; |
3385 | 0 | case VT_GET_ATTRIBUTE_VALUE: |
3386 | 0 | { |
3387 | 0 | bool error_frame; |
3388 | 0 | uint32_t attribute_id, object_id; |
3389 | |
|
3390 | 0 | object_id = tvb_get_letohs(tvb, offset); |
3391 | 0 | if(direction == ecu_to_vt || object_id != 0xFFFF) |
3392 | 0 | { |
3393 | 0 | error_frame = false; |
3394 | 0 | proto_tree_add_item(tree, |
3395 | 0 | hf_isobus_vt_getattributevalue_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3396 | 0 | ti = proto_tree_add_item(tree, |
3397 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3398 | 0 | proto_item_set_hidden(ti); |
3399 | 0 | } |
3400 | 0 | else |
3401 | 0 | { |
3402 | 0 | error_frame = true; |
3403 | 0 | } |
3404 | 0 | offset += 2; |
3405 | |
|
3406 | 0 | proto_tree_add_item_ret_uint(tree, |
3407 | 0 | hf_isobus_vt_getattributevalue_attributeid, tvb, offset, 1, ENC_LITTLE_ENDIAN, &attribute_id); |
3408 | 0 | offset += 1; |
3409 | |
|
3410 | 0 | if(direction == vt_to_ecu) |
3411 | 0 | { |
3412 | 0 | if(error_frame == false) |
3413 | 0 | { |
3414 | 0 | uint32_t value; |
3415 | 0 | proto_tree_add_item_ret_uint(tree, |
3416 | 0 | hf_isobus_vt_getattributevalue_value, tvb, offset, 4, ENC_LITTLE_ENDIAN, &value); |
3417 | |
|
3418 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Return value of attribute %u from %s, value is 0x%X ", |
3419 | 0 | attribute_id, get_object_id_string(pinfo->pool, object_id), value); |
3420 | 0 | } |
3421 | 0 | else |
3422 | 0 | { |
3423 | 0 | uint32_t error_codes; |
3424 | |
|
3425 | 0 | proto_tree_add_item_ret_uint(tree, |
3426 | 0 | hf_isobus_vt_getattributevalue_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
3427 | 0 | ti = proto_tree_add_item(tree, |
3428 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3429 | 0 | proto_item_set_hidden(ti); |
3430 | 0 | offset += 2; |
3431 | |
|
3432 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
3433 | 0 | hf_isobus_vt_getattributevalue_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
3434 | 0 | proto_item_append_text(ti, ": "); |
3435 | 0 | if (error_codes & 0x01) |
3436 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
3437 | 0 | if (error_codes & 0x02) |
3438 | 0 | proto_item_append_text(ti, "Invalid Attribute ID "); |
3439 | 0 | if (error_codes & 0x10) |
3440 | 0 | proto_item_append_text(ti, "Any other error "); |
3441 | |
|
3442 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while requesting value of attribute %u from %s ", |
3443 | 0 | attribute_id, get_object_id_string(pinfo->pool, object_id)); |
3444 | 0 | } |
3445 | 0 | } |
3446 | 0 | else |
3447 | 0 | { |
3448 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Get value of attribute %u from %s ", |
3449 | 0 | attribute_id, get_object_id_string(pinfo->pool, object_id)); |
3450 | 0 | } |
3451 | 0 | } |
3452 | 0 | break; |
3453 | 0 | case VT_SELECT_COLOUR_MAP: |
3454 | 0 | { |
3455 | 0 | uint32_t error_codes, object_id; |
3456 | |
|
3457 | 0 | proto_tree_add_item_ret_uint(tree, |
3458 | 0 | hf_isobus_vt_selectcolourmap_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
3459 | 0 | ti = proto_tree_add_item(tree, |
3460 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3461 | 0 | proto_item_set_hidden(ti); |
3462 | 0 | offset += 2; |
3463 | |
|
3464 | 0 | if(direction == vt_to_ecu) |
3465 | 0 | { |
3466 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
3467 | 0 | hf_isobus_vt_selectcolourmap_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
3468 | 0 | proto_item_append_text(ti, ": "); |
3469 | 0 | if (error_codes & 0x01) |
3470 | 0 | proto_item_append_text(ti, "Invalid Object ID "); |
3471 | 0 | if (error_codes & 0x02) |
3472 | 0 | proto_item_append_text(ti, "Invalid Colour Map "); |
3473 | 0 | if (error_codes & 0x04) |
3474 | 0 | proto_item_append_text(ti, "Any other error "); |
3475 | 0 | } |
3476 | |
|
3477 | 0 | if(direction == ecu_to_vt) |
3478 | 0 | { |
3479 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Select colour map %s ", |
3480 | 0 | get_object_id_string(pinfo->pool, object_id)); |
3481 | 0 | } |
3482 | 0 | else if(direction == vt_to_ecu) |
3483 | 0 | { |
3484 | 0 | if(error_codes) |
3485 | 0 | { |
3486 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while selecting colour map %s ", |
3487 | 0 | get_object_id_string(pinfo->pool, object_id)); |
3488 | 0 | } |
3489 | 0 | else |
3490 | 0 | { |
3491 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Colour map %s successfully selected ", |
3492 | 0 | get_object_id_string(pinfo->pool, object_id)); |
3493 | 0 | } |
3494 | 0 | } |
3495 | 0 | } |
3496 | 0 | break; |
3497 | 0 | case VT_IDENTIFY_VT: |
3498 | 0 | { |
3499 | 0 | if(direction == ecu_to_vt) |
3500 | 0 | { |
3501 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Identify VT"); |
3502 | 0 | } |
3503 | 0 | else |
3504 | 0 | { |
3505 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Reply Identify VT "); |
3506 | 0 | } |
3507 | 0 | } |
3508 | 0 | break; |
3509 | 0 | case VT_EXECUTE_EXTENDED_MACRO: |
3510 | 0 | { |
3511 | 0 | uint32_t error_codes, object_id; |
3512 | |
|
3513 | 0 | proto_tree_add_item_ret_uint(tree, |
3514 | 0 | hf_isobus_vt_executeextendedmacro_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
3515 | 0 | ti = proto_tree_add_item(tree, |
3516 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3517 | 0 | proto_item_set_hidden(ti); |
3518 | 0 | offset += 2; |
3519 | |
|
3520 | 0 | if(direction == vt_to_ecu) |
3521 | 0 | { |
3522 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
3523 | 0 | hf_isobus_vt_executeextendedmacro_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
3524 | 0 | proto_item_append_text(ti, ": "); |
3525 | 0 | if (error_codes & 0x01) |
3526 | 0 | proto_item_append_text(ti, "Object ID does not exist "); |
3527 | 0 | if (error_codes & 0x02) |
3528 | 0 | proto_item_append_text(ti, "Object ID is not a Macro object "); |
3529 | 0 | if (error_codes & 0x04) |
3530 | 0 | proto_item_append_text(ti, "Any other error "); |
3531 | 0 | } |
3532 | |
|
3533 | 0 | if(direction == ecu_to_vt) |
3534 | 0 | { |
3535 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Execute extended macro %s ", |
3536 | 0 | get_object_id_string(pinfo->pool, object_id)); |
3537 | 0 | } |
3538 | 0 | else if(direction == vt_to_ecu) |
3539 | 0 | { |
3540 | 0 | if(error_codes) |
3541 | 0 | { |
3542 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while executing extended macro %s ", |
3543 | 0 | get_object_id_string(pinfo->pool, object_id)); |
3544 | 0 | } |
3545 | 0 | else |
3546 | 0 | { |
3547 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Extended macro %s successfully executed ", |
3548 | 0 | get_object_id_string(pinfo->pool, object_id)); |
3549 | 0 | } |
3550 | 0 | } |
3551 | 0 | } |
3552 | 0 | break; |
3553 | 0 | case VT_LOCK_UNLOCK_MASK: |
3554 | 0 | { |
3555 | 0 | uint32_t command, error_codes, object_id, lock_timeout; |
3556 | |
|
3557 | 0 | proto_tree_add_item_ret_uint(tree, |
3558 | 0 | hf_isobus_vt_lockunlockmask_command, tvb, offset, 1, ENC_LITTLE_ENDIAN, &command); |
3559 | 0 | offset += 1; |
3560 | |
|
3561 | 0 | if(direction == ecu_to_vt) |
3562 | 0 | { |
3563 | 0 | proto_tree_add_item_ret_uint(tree, |
3564 | 0 | hf_isobus_vt_lockunlockmask_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id); |
3565 | 0 | ti = proto_tree_add_item(tree, |
3566 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3567 | 0 | proto_item_set_hidden(ti); |
3568 | 0 | offset += 2; |
3569 | |
|
3570 | 0 | if(command == MASK_LOCK) |
3571 | 0 | { |
3572 | 0 | proto_tree_add_item_ret_uint(tree, |
3573 | 0 | hf_isobus_vt_lockunlockmask_locktimeout, tvb, offset, 2, ENC_LITTLE_ENDIAN, &lock_timeout); |
3574 | 0 | } |
3575 | 0 | } |
3576 | 0 | else |
3577 | 0 | { |
3578 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
3579 | 0 | hf_isobus_vt_lockunlockmask_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
3580 | 0 | proto_item_append_text(ti, ": "); |
3581 | 0 | if (error_codes & 0x01) |
3582 | 0 | proto_item_append_text(ti, "Command ignored, no mask is visible or given Object ID does not match the visible mask "); |
3583 | 0 | if (error_codes & 0x02) |
3584 | 0 | proto_item_append_text(ti, "Lock command ignored, already locked "); |
3585 | 0 | if (error_codes & 0x04) |
3586 | 0 | proto_item_append_text(ti, "Unlock command ignored, not locked "); |
3587 | 0 | if (error_codes & 0x08) |
3588 | 0 | proto_item_append_text(ti, "Lock command ignored, an Alarm Mask is active "); |
3589 | 0 | if (error_codes & 0x10) |
3590 | 0 | proto_item_append_text(ti, "Unsolicited unlock, timeout occurred "); |
3591 | 0 | if (error_codes & 0x20) |
3592 | 0 | proto_item_append_text(ti, "Unsolicited unlock, this mask is hidden "); |
3593 | 0 | if (error_codes & 0x40) |
3594 | 0 | proto_item_append_text(ti, "Unsolicited unlock, operator induced, or any other error "); |
3595 | 0 | if (error_codes & 0x80) |
3596 | 0 | proto_item_append_text(ti, "Any other error "); |
3597 | 0 | } |
3598 | |
|
3599 | 0 | if(direction == ecu_to_vt) |
3600 | 0 | { |
3601 | 0 | if(command == MASK_LOCK) |
3602 | 0 | { |
3603 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Lock data mask %s for %ums ", |
3604 | 0 | get_object_id_string(pinfo->pool, object_id), lock_timeout); |
3605 | 0 | } |
3606 | 0 | else if(command == MASK_UNLOCK) |
3607 | 0 | { |
3608 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Unlock data mask %s ", |
3609 | 0 | get_object_id_string(pinfo->pool, object_id)); |
3610 | 0 | } |
3611 | 0 | } |
3612 | 0 | else if(direction == vt_to_ecu) |
3613 | 0 | { |
3614 | 0 | if(error_codes) |
3615 | 0 | { |
3616 | 0 | if(command == MASK_LOCK) |
3617 | 0 | { |
3618 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Error while locking "); |
3619 | 0 | } |
3620 | 0 | else if(command == MASK_UNLOCK) |
3621 | 0 | { |
3622 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Error while unlocking "); |
3623 | 0 | } |
3624 | 0 | } |
3625 | 0 | else |
3626 | 0 | { |
3627 | 0 | if(command == MASK_LOCK) |
3628 | 0 | { |
3629 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Locking successful "); |
3630 | 0 | } |
3631 | 0 | else if(command == MASK_UNLOCK) |
3632 | 0 | { |
3633 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Unlocking successful "); |
3634 | 0 | } |
3635 | 0 | } |
3636 | 0 | } |
3637 | 0 | } |
3638 | 0 | break; |
3639 | 0 | case VT_EXECUTE_MACRO: |
3640 | 0 | { |
3641 | 0 | uint32_t object_id; |
3642 | 0 | uint32_t error_codes; |
3643 | | |
3644 | | /* Other than all object IDs macro object IDs are 1 byte in VT 4 */ |
3645 | 0 | proto_tree_add_item_ret_uint(tree, |
3646 | 0 | hf_isobus_vt_executemacro_objectid, tvb, offset, 1, ENC_LITTLE_ENDIAN, &object_id); |
3647 | 0 | ti = proto_tree_add_item(tree, |
3648 | 0 | hf_isobus_vt_objectid, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3649 | 0 | proto_item_set_hidden(ti); |
3650 | 0 | offset += 1; |
3651 | |
|
3652 | 0 | if(direction == vt_to_ecu) |
3653 | 0 | { |
3654 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
3655 | 0 | hf_isobus_vt_executemacro_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
3656 | 0 | proto_item_append_text(ti, ": "); |
3657 | 0 | if (error_codes & 0x01) |
3658 | 0 | proto_item_append_text(ti, "Object ID does not exist "); |
3659 | 0 | if (error_codes & 0x02) |
3660 | 0 | proto_item_append_text(ti, "Object ID is not a Macro object "); |
3661 | 0 | if (error_codes & 0x04) |
3662 | 0 | proto_item_append_text(ti, "Any other error "); |
3663 | 0 | } |
3664 | |
|
3665 | 0 | if(direction == ecu_to_vt) |
3666 | 0 | { |
3667 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Execute macro %s ", |
3668 | 0 | get_object_id_string(pinfo->pool, object_id)); |
3669 | 0 | } |
3670 | 0 | else if(direction == vt_to_ecu) |
3671 | 0 | { |
3672 | 0 | if(error_codes) |
3673 | 0 | { |
3674 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while executing macro %s ", |
3675 | 0 | get_object_id_string(pinfo->pool, object_id)); |
3676 | 0 | } |
3677 | 0 | else |
3678 | 0 | { |
3679 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Macro %s successfully executed ", |
3680 | 0 | get_object_id_string(pinfo->pool, object_id)); |
3681 | 0 | } |
3682 | 0 | } |
3683 | 0 | } |
3684 | 0 | break; |
3685 | 0 | case VT_GET_MEMORY: |
3686 | 0 | { |
3687 | 0 | if(direction == ecu_to_vt) |
3688 | 0 | { |
3689 | 0 | uint32_t memory_required; |
3690 | 0 | offset += 1; /* reserved byte */ |
3691 | |
|
3692 | 0 | proto_tree_add_item_ret_uint(tree, |
3693 | 0 | hf_isobus_vt_getmemory_memoryrequired, tvb, offset, 4, ENC_LITTLE_ENDIAN, &memory_required); |
3694 | |
|
3695 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "The amount of memory required is %u ", |
3696 | 0 | memory_required); |
3697 | 0 | } |
3698 | 0 | else |
3699 | 0 | { |
3700 | 0 | uint32_t vt_version, status; |
3701 | |
|
3702 | 0 | proto_tree_add_item_ret_uint(tree, |
3703 | 0 | hf_isobus_vt_getmemory_vtversion, tvb, offset, 1, ENC_LITTLE_ENDIAN, &vt_version); |
3704 | 0 | offset += 1; |
3705 | |
|
3706 | 0 | proto_tree_add_item_ret_uint(tree, |
3707 | 0 | hf_isobus_vt_getmemory_status, tvb, offset, 1, ENC_LITTLE_ENDIAN, &status); |
3708 | |
|
3709 | 0 | if(status == ENOUGH_MEMORY) |
3710 | 0 | { |
3711 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "There can be enough memory, VT Version is %u ", |
3712 | 0 | vt_version); |
3713 | 0 | } |
3714 | 0 | else |
3715 | 0 | { |
3716 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "There is not enough memory available, VT Version is %u ", |
3717 | 0 | vt_version); |
3718 | 0 | } |
3719 | 0 | } |
3720 | 0 | } |
3721 | 0 | break; |
3722 | 0 | case VT_GET_SUPPORTED_WIDECHARS: |
3723 | 0 | { |
3724 | 0 | uint32_t code_plane, first_widechar, last_widechar; |
3725 | |
|
3726 | 0 | proto_tree_add_item_ret_uint(tree, |
3727 | 0 | hf_isobus_vt_getsupportedwidechars_codeplane, tvb, offset, 1, ENC_LITTLE_ENDIAN, &code_plane); |
3728 | 0 | offset += 1; |
3729 | |
|
3730 | 0 | proto_tree_add_item_ret_uint(tree, |
3731 | 0 | hf_isobus_vt_getsupportedwidechars_firstwidechar, tvb, offset, 2, ENC_LITTLE_ENDIAN, &first_widechar); |
3732 | 0 | offset += 2; |
3733 | |
|
3734 | 0 | proto_tree_add_item_ret_uint(tree, |
3735 | 0 | hf_isobus_vt_getsupportedwidechars_lastwidechar, tvb, offset, 2, ENC_LITTLE_ENDIAN, &last_widechar); |
3736 | 0 | offset += 2; |
3737 | |
|
3738 | 0 | if(direction == vt_to_ecu) |
3739 | 0 | { |
3740 | 0 | uint32_t error_codes, number_of_ranges, i; |
3741 | |
|
3742 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
3743 | 0 | hf_isobus_vt_getsupportedwidechars_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
3744 | 0 | proto_item_append_text(ti, ": "); |
3745 | 0 | if (error_codes & 0x01) |
3746 | 0 | proto_item_append_text(ti, "Too many ranges "); |
3747 | 0 | if (error_codes & 0x02) |
3748 | 0 | proto_item_append_text(ti, "Error in Code plane "); |
3749 | 0 | if (error_codes & 0x10) |
3750 | 0 | proto_item_append_text(ti, "Any other error "); |
3751 | 0 | offset += 1; |
3752 | |
|
3753 | 0 | proto_tree_add_item_ret_uint(tree, |
3754 | 0 | hf_isobus_vt_getsupportedwidechars_numberofranges, tvb, offset, 1, ENC_LITTLE_ENDIAN, &number_of_ranges); |
3755 | 0 | offset += 1; |
3756 | |
|
3757 | 0 | for(i = 0; i < number_of_ranges; i++) |
3758 | 0 | { |
3759 | 0 | uint32_t first_avail_widechar, last_avail_widechar; |
3760 | 0 | proto_tree* subtree; |
3761 | 0 | proto_item* item; |
3762 | |
|
3763 | 0 | subtree = proto_tree_add_subtree_format(tree, |
3764 | 0 | tvb, offset, 4, ett_isobus_vt_getsupportedwidechars_range, &item, "Range"); |
3765 | |
|
3766 | 0 | proto_tree_add_item_ret_uint(subtree, |
3767 | 0 | hf_isobus_vt_getsupportedwidechars_firstavailablewidechar, tvb, offset, 2, ENC_LITTLE_ENDIAN, &first_avail_widechar); |
3768 | 0 | offset += 2; |
3769 | |
|
3770 | 0 | proto_tree_add_item_ret_uint(subtree, |
3771 | 0 | hf_isobus_vt_getsupportedwidechars_lastavailablewidechar, tvb, offset, 2, ENC_LITTLE_ENDIAN, &last_avail_widechar); |
3772 | 0 | offset += 2; |
3773 | |
|
3774 | 0 | proto_item_set_text(item, "Range 0x%04X - 0x%04X", first_avail_widechar, last_avail_widechar); |
3775 | 0 | } |
3776 | |
|
3777 | 0 | if(error_codes) |
3778 | 0 | { |
3779 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Error while getting supported widechars for code plane %u ", |
3780 | 0 | code_plane); |
3781 | 0 | } |
3782 | 0 | else |
3783 | 0 | { |
3784 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Received supported widechars for code plane %u in %u range", |
3785 | 0 | code_plane, number_of_ranges); |
3786 | |
|
3787 | 0 | if(number_of_ranges > 1) |
3788 | 0 | { |
3789 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "s"); |
3790 | 0 | } |
3791 | 0 | } |
3792 | 0 | } |
3793 | 0 | else if(direction == ecu_to_vt) |
3794 | 0 | { |
3795 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Requesting supported widechars for code plane %u from character 0x%04X till 0x%04X ", |
3796 | 0 | code_plane, first_widechar, last_widechar); |
3797 | 0 | } |
3798 | 0 | } |
3799 | 0 | break; |
3800 | 0 | case VT_GET_NUMBER_OF_SOFT_KEYS: |
3801 | 0 | { |
3802 | 0 | if(direction == ecu_to_vt) |
3803 | 0 | { |
3804 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Requesting number of soft keys"); |
3805 | 0 | } |
3806 | 0 | else |
3807 | 0 | { |
3808 | 0 | uint32_t navigation_soft_keys, virtual_soft_keys, physical_soft_keys; |
3809 | |
|
3810 | 0 | proto_tree_add_item_ret_uint(tree, |
3811 | 0 | hf_isobus_vt_getnumberofsoftkeys_navigationsoftkeys, tvb, offset, 1, ENC_LITTLE_ENDIAN, &navigation_soft_keys); |
3812 | 0 | offset += 1; |
3813 | |
|
3814 | 0 | offset += 2; /* 2 reserved bytes */ |
3815 | |
|
3816 | 0 | proto_tree_add_item(tree, |
3817 | 0 | hf_isobus_vt_getnumberofsoftkeys_xdots, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3818 | 0 | offset += 1; |
3819 | |
|
3820 | 0 | proto_tree_add_item(tree, |
3821 | 0 | hf_isobus_vt_getnumberofsoftkeys_ydots, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3822 | 0 | offset += 1; |
3823 | |
|
3824 | 0 | proto_tree_add_item_ret_uint(tree, |
3825 | 0 | hf_isobus_vt_getnumberofsoftkeys_virtualsoftkeys, tvb, offset, 1, ENC_LITTLE_ENDIAN, &virtual_soft_keys); |
3826 | 0 | offset += 1; |
3827 | |
|
3828 | 0 | proto_tree_add_item_ret_uint(tree, |
3829 | 0 | hf_isobus_vt_getnumberofsoftkeys_physicalsoftkeys, tvb, offset, 1, ENC_LITTLE_ENDIAN, &physical_soft_keys); |
3830 | |
|
3831 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "VT has %u softkeys, %u virtual soft keys and %u physical soft keys", |
3832 | 0 | navigation_soft_keys, virtual_soft_keys, physical_soft_keys); |
3833 | 0 | } |
3834 | 0 | } |
3835 | 0 | break; |
3836 | 0 | case VT_GET_TEXT_FONT_DATA: |
3837 | 0 | { |
3838 | 0 | if(direction == ecu_to_vt) |
3839 | 0 | { |
3840 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Requesting text font data"); |
3841 | 0 | } |
3842 | 0 | else if(direction == vt_to_ecu) |
3843 | 0 | { |
3844 | 0 | proto_tree *ti_smallfonts_subtree, *ti_largefonts_subtree, *ti_typeattribute_subtree; |
3845 | 0 | proto_item *smallfonts_item, *largefonts_item, *typeattributes_item; |
3846 | |
|
3847 | 0 | offset += 4; |
3848 | |
|
3849 | 0 | smallfonts_item = proto_tree_add_item(tree, |
3850 | 0 | hf_isobus_vt_gettextfontdata_smallfontsizes, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3851 | 0 | ti_smallfonts_subtree = proto_item_add_subtree(smallfonts_item, ett_isobus_vt_gettextfontdata_smallfontsizes); |
3852 | 0 | proto_tree_add_item(ti_smallfonts_subtree, hf_isobus_vt_gettextfontdata_smallfontsizes_font8x8, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3853 | 0 | proto_tree_add_item(ti_smallfonts_subtree, hf_isobus_vt_gettextfontdata_smallfontsizes_font8x12, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3854 | 0 | proto_tree_add_item(ti_smallfonts_subtree, hf_isobus_vt_gettextfontdata_smallfontsizes_font12x16, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3855 | 0 | proto_tree_add_item(ti_smallfonts_subtree, hf_isobus_vt_gettextfontdata_smallfontsizes_font16x16, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3856 | 0 | proto_tree_add_item(ti_smallfonts_subtree, hf_isobus_vt_gettextfontdata_smallfontsizes_font16x24, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3857 | 0 | proto_tree_add_item(ti_smallfonts_subtree, hf_isobus_vt_gettextfontdata_smallfontsizes_font24x32, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3858 | 0 | proto_tree_add_item(ti_smallfonts_subtree, hf_isobus_vt_gettextfontdata_smallfontsizes_font32x32, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3859 | 0 | offset += 1; |
3860 | |
|
3861 | 0 | largefonts_item = proto_tree_add_item(tree, |
3862 | 0 | hf_isobus_vt_gettextfontdata_largefontsizes, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3863 | 0 | ti_largefonts_subtree = proto_item_add_subtree(largefonts_item, ett_isobus_vt_gettextfontdata_largefontsizes); |
3864 | 0 | proto_tree_add_item(ti_largefonts_subtree, hf_isobus_vt_gettextfontdata_largefontsizes_font32x48, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3865 | 0 | proto_tree_add_item(ti_largefonts_subtree, hf_isobus_vt_gettextfontdata_largefontsizes_font48x64, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3866 | 0 | proto_tree_add_item(ti_largefonts_subtree, hf_isobus_vt_gettextfontdata_largefontsizes_font64x64, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3867 | 0 | proto_tree_add_item(ti_largefonts_subtree, hf_isobus_vt_gettextfontdata_largefontsizes_font64x96, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3868 | 0 | proto_tree_add_item(ti_largefonts_subtree, hf_isobus_vt_gettextfontdata_largefontsizes_font96x128, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3869 | 0 | proto_tree_add_item(ti_largefonts_subtree, hf_isobus_vt_gettextfontdata_largefontsizes_font128x128, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3870 | 0 | proto_tree_add_item(ti_largefonts_subtree, hf_isobus_vt_gettextfontdata_largefontsizes_font128x192, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3871 | 0 | offset += 1; |
3872 | |
|
3873 | 0 | typeattributes_item = proto_tree_add_item(tree, |
3874 | 0 | hf_isobus_vt_gettextfontdata_typeattributes, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3875 | 0 | ti_typeattribute_subtree = proto_item_add_subtree(typeattributes_item, ett_isobus_vt_gettextfontdata_typeattributes); |
3876 | 0 | proto_tree_add_item(ti_typeattribute_subtree, hf_isobus_vt_gettextfontdata_typeattributes_boldtext, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3877 | 0 | proto_tree_add_item(ti_typeattribute_subtree, hf_isobus_vt_gettextfontdata_typeattributes_crossedouttext, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3878 | 0 | proto_tree_add_item(ti_typeattribute_subtree, hf_isobus_vt_gettextfontdata_typeattributes_underlinedtext, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3879 | 0 | proto_tree_add_item(ti_typeattribute_subtree, hf_isobus_vt_gettextfontdata_typeattributes_italicstext, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3880 | 0 | proto_tree_add_item(ti_typeattribute_subtree, hf_isobus_vt_gettextfontdata_typeattributes_invertedtext, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3881 | 0 | proto_tree_add_item(ti_typeattribute_subtree, hf_isobus_vt_gettextfontdata_typeattributes_flashinverted, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3882 | 0 | proto_tree_add_item(ti_typeattribute_subtree, hf_isobus_vt_gettextfontdata_typeattributes_flashhidden, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3883 | 0 | proto_tree_add_item(ti_typeattribute_subtree, hf_isobus_vt_gettextfontdata_typeattributes_proportionalfontrendering, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3884 | |
|
3885 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Text font data received"); |
3886 | 0 | } |
3887 | 0 | } |
3888 | 0 | break; |
3889 | 0 | case VT_GET_WINDOW_MASK_DATA: |
3890 | 0 | { |
3891 | 0 | if(direction == ecu_to_vt) |
3892 | 0 | { |
3893 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Request window mask data"); |
3894 | 0 | } |
3895 | 0 | else |
3896 | 0 | { |
3897 | 0 | uint32_t background_colour_data_mask, background_colour_soft_key_mask; |
3898 | |
|
3899 | 0 | proto_tree_add_item_ret_uint(tree, |
3900 | 0 | hf_isobus_vt_getwindowmaskdata_backgroundcolourdatamask, tvb, offset, 1, ENC_LITTLE_ENDIAN, &background_colour_data_mask); |
3901 | 0 | offset += 1; |
3902 | |
|
3903 | 0 | proto_tree_add_item_ret_uint(tree, |
3904 | 0 | hf_isobus_vt_getwindowmaskdata_backgroundcoloursoftkeymask, tvb, offset, 1, ENC_LITTLE_ENDIAN, &background_colour_soft_key_mask); |
3905 | |
|
3906 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Background colour of data mask is %s, soft key mask is %s", |
3907 | 0 | rval_to_str_const(background_colour_data_mask, vt_colours, "Unknown"), |
3908 | 0 | rval_to_str_const(background_colour_soft_key_mask, vt_colours, "Unknown")); |
3909 | 0 | } |
3910 | 0 | } |
3911 | 0 | break; |
3912 | 0 | case VT_GET_SUPPORTED_OBJECTS: |
3913 | 0 | { |
3914 | 0 | if(direction == ecu_to_vt) |
3915 | 0 | { |
3916 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Request supported objects"); |
3917 | 0 | } |
3918 | 0 | else |
3919 | 0 | { |
3920 | 0 | uint32_t number_of_bytes, i; |
3921 | |
|
3922 | 0 | proto_tree_add_item_ret_uint(tree, |
3923 | 0 | hf_isobus_vt_getsupportedobjects_numberofbytes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &number_of_bytes); |
3924 | 0 | offset += 1; |
3925 | |
|
3926 | 0 | for(i = 0; i < number_of_bytes; i++) |
3927 | 0 | { |
3928 | 0 | uint8_t object_type; |
3929 | |
|
3930 | 0 | object_type = tvb_get_uint8(tvb, offset); |
3931 | 0 | if(object_type == 0xFF) |
3932 | 0 | { |
3933 | 0 | break; |
3934 | 0 | } |
3935 | | |
3936 | 0 | proto_tree_add_item(tree, |
3937 | 0 | hf_isobus_vt_getsupportedobjects_objecttype, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3938 | 0 | offset += 1; |
3939 | 0 | } |
3940 | |
|
3941 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Supported objects received"); |
3942 | 0 | } |
3943 | 0 | } |
3944 | 0 | break; |
3945 | 0 | case VT_GET_HARDWARE: |
3946 | 0 | { |
3947 | 0 | if(direction == ecu_to_vt) |
3948 | 0 | { |
3949 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Request hardware info"); |
3950 | 0 | } |
3951 | 0 | else |
3952 | 0 | { |
3953 | 0 | uint32_t graphic_type, x_pixels, y_pixels; |
3954 | 0 | proto_item *hardware_item; |
3955 | 0 | proto_tree *hardware_subtree; |
3956 | |
|
3957 | 0 | proto_tree_add_item(tree, |
3958 | 0 | hf_isobus_vt_gethardware_boottime, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3959 | 0 | offset += 1; |
3960 | |
|
3961 | 0 | proto_tree_add_item_ret_uint(tree, |
3962 | 0 | hf_isobus_vt_gethardware_graphictype, tvb, offset, 1, ENC_LITTLE_ENDIAN, &graphic_type); |
3963 | 0 | offset += 1; |
3964 | |
|
3965 | 0 | hardware_item = proto_tree_add_item(tree, |
3966 | 0 | hf_isobus_vt_gethardware_hardware, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3967 | |
|
3968 | 0 | hardware_subtree = proto_item_add_subtree(hardware_item, ett_isobus_vt_gethardware_hardware); |
3969 | 0 | proto_tree_add_item(hardware_subtree, hf_isobus_vt_gethardware_hardware_touchscreen, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3970 | 0 | proto_tree_add_item(hardware_subtree, hf_isobus_vt_gethardware_hardware_pointingdevice, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3971 | 0 | proto_tree_add_item(hardware_subtree, hf_isobus_vt_gethardware_hardware_multifreqaudiooutput, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3972 | 0 | proto_tree_add_item(hardware_subtree, hf_isobus_vt_gethardware_hardware_adjustvolumeaudiooutput, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3973 | 0 | proto_tree_add_item(hardware_subtree, hf_isobus_vt_gethardware_hardware_simultaneousactivationphysicalsoftkeys, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3974 | 0 | proto_tree_add_item(hardware_subtree, hf_isobus_vt_gethardware_hardware_simultaneousactivationbuttons, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3975 | 0 | proto_tree_add_item(hardware_subtree, hf_isobus_vt_gethardware_hardware_dragoperation, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3976 | 0 | proto_tree_add_item(hardware_subtree, hf_isobus_vt_gethardware_hardware_intermediatecoordinatesdrag, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
3977 | 0 | offset += 1; |
3978 | |
|
3979 | 0 | proto_tree_add_item_ret_uint(tree, |
3980 | 0 | hf_isobus_vt_gethardware_xpixels, tvb, offset, 2, ENC_LITTLE_ENDIAN, &x_pixels); |
3981 | 0 | offset += 2; |
3982 | |
|
3983 | 0 | proto_tree_add_item_ret_uint(tree, |
3984 | 0 | hf_isobus_vt_gethardware_ypixels, tvb, offset, 2, ENC_LITTLE_ENDIAN, &y_pixels); |
3985 | |
|
3986 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Hardware info received. Graphic type is %s, screen is %u by %u pixels", |
3987 | 0 | val_to_str_const(graphic_type, graphic_types, "unknown"), |
3988 | 0 | x_pixels, y_pixels); |
3989 | 0 | } |
3990 | 0 | } |
3991 | 0 | break; |
3992 | 0 | case VT_STORE_VERSION: |
3993 | 0 | { |
3994 | 0 | if(direction == ecu_to_vt) |
3995 | 0 | { |
3996 | 0 | const uint8_t *version_label; |
3997 | |
|
3998 | 0 | proto_tree_add_item_ret_string(tree, |
3999 | 0 | hf_isobus_vt_storeversion_versionlabel, tvb, offset, 7, ENC_ASCII|ENC_NA, pinfo->pool, &version_label); |
4000 | |
|
4001 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Store version under label %s", version_label); |
4002 | 0 | } |
4003 | 0 | else |
4004 | 0 | { |
4005 | 0 | uint32_t error_codes; |
4006 | 0 | offset += 4; |
4007 | |
|
4008 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
4009 | 0 | hf_isobus_vt_storeversion_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
4010 | 0 | proto_item_append_text(ti, ": "); |
4011 | 0 | if (error_codes & 0x02) |
4012 | 0 | proto_item_append_text(ti, "Version label is not correct "); |
4013 | 0 | if (error_codes & 0x04) |
4014 | 0 | proto_item_append_text(ti, "Insufficient memory available "); |
4015 | 0 | if (error_codes & 0x08) |
4016 | 0 | proto_item_append_text(ti, "Any other error "); |
4017 | |
|
4018 | 0 | if(error_codes) |
4019 | 0 | { |
4020 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Error while storing version"); |
4021 | 0 | } |
4022 | 0 | else |
4023 | 0 | { |
4024 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Version successfully stored"); |
4025 | 0 | } |
4026 | 0 | } |
4027 | 0 | } |
4028 | 0 | break; |
4029 | 0 | case VT_LOAD_VERSION: |
4030 | 0 | { |
4031 | 0 | if(direction == ecu_to_vt) |
4032 | 0 | { |
4033 | 0 | const uint8_t* version_label; |
4034 | |
|
4035 | 0 | proto_tree_add_item_ret_string(tree, |
4036 | 0 | hf_isobus_vt_loadversion_versionlabel, tvb, offset, 7, ENC_ASCII|ENC_NA, pinfo->pool, &version_label); |
4037 | |
|
4038 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Load version stored under label \"%s\"", version_label); |
4039 | 0 | } |
4040 | 0 | else |
4041 | 0 | { |
4042 | 0 | uint32_t error_codes; |
4043 | 0 | offset += 4; |
4044 | |
|
4045 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
4046 | 0 | hf_isobus_vt_loadversion_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
4047 | 0 | proto_item_append_text(ti, ": "); |
4048 | 0 | if (error_codes & 0x01) |
4049 | 0 | proto_item_append_text(ti, "File system error or pool data corruption "); |
4050 | 0 | if (error_codes & 0x02) |
4051 | 0 | proto_item_append_text(ti, "Version label is not correct or Version label unknown "); |
4052 | 0 | if (error_codes & 0x04) |
4053 | 0 | proto_item_append_text(ti, "Insufficient memory available "); |
4054 | 0 | if (error_codes & 0x08) |
4055 | 0 | proto_item_append_text(ti, "Any other error "); |
4056 | |
|
4057 | 0 | if(error_codes) |
4058 | 0 | { |
4059 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Error while loading version"); |
4060 | 0 | } |
4061 | 0 | else |
4062 | 0 | { |
4063 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Version successfully loaded"); |
4064 | 0 | } |
4065 | 0 | } |
4066 | 0 | } |
4067 | 0 | break; |
4068 | 0 | case VT_DELETE_VERSION: |
4069 | 0 | { |
4070 | 0 | if(direction == ecu_to_vt) |
4071 | 0 | { |
4072 | 0 | const uint8_t* version_label; |
4073 | |
|
4074 | 0 | proto_tree_add_item_ret_string(tree, |
4075 | 0 | hf_isobus_vt_deleteversion_versionlabel, tvb, offset, 7, ENC_ASCII|ENC_NA, pinfo->pool, &version_label); |
4076 | |
|
4077 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Delete version stored under label \"%s\"", version_label); |
4078 | 0 | } |
4079 | 0 | else |
4080 | 0 | { |
4081 | 0 | uint32_t error_codes; |
4082 | 0 | offset += 4; |
4083 | |
|
4084 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
4085 | 0 | hf_isobus_vt_deleteversion_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
4086 | 0 | proto_item_append_text(ti, ": "); |
4087 | 0 | if (error_codes & 0x02) |
4088 | 0 | proto_item_append_text(ti, "Version label is not correct or Version label unknown "); |
4089 | 0 | if (error_codes & 0x08) |
4090 | 0 | proto_item_append_text(ti, "Any other error "); |
4091 | |
|
4092 | 0 | if(error_codes) |
4093 | 0 | { |
4094 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Error while deleting version"); |
4095 | 0 | } |
4096 | 0 | else |
4097 | 0 | { |
4098 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Version successfully deleted"); |
4099 | 0 | } |
4100 | 0 | } |
4101 | 0 | } |
4102 | 0 | break; |
4103 | 0 | case VT_EXTENDED_GET_VERSIONS: |
4104 | 0 | { |
4105 | 0 | if(direction == ecu_to_vt) |
4106 | 0 | { |
4107 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Request a list of extended versions"); |
4108 | 0 | } |
4109 | 0 | else |
4110 | 0 | { |
4111 | 0 | uint32_t number_of_versions, i; |
4112 | |
|
4113 | 0 | proto_tree_add_item_ret_uint(tree, |
4114 | 0 | hf_isobus_vt_extendedgetversions_numberofversions, tvb, offset, 1, ENC_LITTLE_ENDIAN, &number_of_versions); |
4115 | 0 | offset += 1; |
4116 | |
|
4117 | 0 | for(i = 0; i < number_of_versions; i++) |
4118 | 0 | { |
4119 | 0 | proto_tree_add_item(tree, |
4120 | 0 | hf_isobus_vt_extendedgetversions_versionlabel, tvb, offset, 32, ENC_ASCII); |
4121 | 0 | offset += 32; |
4122 | 0 | } |
4123 | |
|
4124 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Extended versions received"); |
4125 | 0 | } |
4126 | 0 | } |
4127 | 0 | break; |
4128 | 0 | case VT_EXTENDED_STORE_VERSION: |
4129 | 0 | { |
4130 | 0 | if(direction == ecu_to_vt) |
4131 | 0 | { |
4132 | 0 | const uint8_t* version_label; |
4133 | |
|
4134 | 0 | proto_tree_add_item_ret_string(tree, |
4135 | 0 | hf_isobus_vt_extendedstoreversion_versionlabel, tvb, offset, 32, ENC_ASCII|ENC_NA, pinfo->pool, &version_label); |
4136 | |
|
4137 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Store extended version under label \"%s\"", version_label); |
4138 | 0 | } |
4139 | 0 | else |
4140 | 0 | { |
4141 | 0 | uint32_t error_codes; |
4142 | 0 | offset += 4; |
4143 | |
|
4144 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
4145 | 0 | hf_isobus_vt_extendedstoreversion_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
4146 | 0 | proto_item_append_text(ti, ": "); |
4147 | 0 | if (error_codes & 0x02) |
4148 | 0 | proto_item_append_text(ti, "Version label is not correct "); |
4149 | 0 | if (error_codes & 0x04) |
4150 | 0 | proto_item_append_text(ti, "Insufficient memory available "); |
4151 | 0 | if (error_codes & 0x08) |
4152 | 0 | proto_item_append_text(ti, "Any other error "); |
4153 | |
|
4154 | 0 | if(error_codes) |
4155 | 0 | { |
4156 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Error while storing extended version"); |
4157 | 0 | } |
4158 | 0 | else |
4159 | 0 | { |
4160 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Extended version successfully stored"); |
4161 | 0 | } |
4162 | 0 | } |
4163 | 0 | } |
4164 | 0 | break; |
4165 | 0 | case VT_EXTENDED_LOAD_VERSION: |
4166 | 0 | { |
4167 | 0 | if(direction == ecu_to_vt) |
4168 | 0 | { |
4169 | 0 | const uint8_t* version_label; |
4170 | |
|
4171 | 0 | proto_tree_add_item_ret_string(tree, |
4172 | 0 | hf_isobus_vt_extendedloadversion_versionlabel, tvb, offset, 32, ENC_ASCII|ENC_NA, pinfo->pool, &version_label); |
4173 | |
|
4174 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Store extended version under label \"%s\"", version_label); |
4175 | 0 | } |
4176 | 0 | else |
4177 | 0 | { |
4178 | 0 | uint32_t error_codes; |
4179 | 0 | offset += 4; |
4180 | |
|
4181 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
4182 | 0 | hf_isobus_vt_extendedloadversion_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
4183 | 0 | proto_item_append_text(ti, ": "); |
4184 | 0 | if (error_codes & 0x01) |
4185 | 0 | proto_item_append_text(ti, "File system error or pool data corruption "); |
4186 | 0 | if (error_codes & 0x02) |
4187 | 0 | proto_item_append_text(ti, "Version label is not correct or Version label unknown "); |
4188 | 0 | if (error_codes & 0x04) |
4189 | 0 | proto_item_append_text(ti, "Insufficient memory available "); |
4190 | 0 | if (error_codes & 0x08) |
4191 | 0 | proto_item_append_text(ti, "Any other error "); |
4192 | |
|
4193 | 0 | if(error_codes) |
4194 | 0 | { |
4195 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Error while loading extended version"); |
4196 | 0 | } |
4197 | 0 | else |
4198 | 0 | { |
4199 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Extended version successfully loaded"); |
4200 | 0 | } |
4201 | 0 | } |
4202 | 0 | } |
4203 | 0 | break; |
4204 | 0 | case VT_EXTENDED_DELETE_VERSION: |
4205 | 0 | { |
4206 | 0 | if(direction == ecu_to_vt) |
4207 | 0 | { |
4208 | 0 | const uint8_t* version_label; |
4209 | |
|
4210 | 0 | proto_tree_add_item_ret_string(tree, |
4211 | 0 | hf_isobus_vt_extendeddeleteversion_versionlabel, tvb, offset, 32, ENC_ASCII|ENC_NA, pinfo->pool, &version_label); |
4212 | |
|
4213 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Delete version stored under label %s", version_label); |
4214 | 0 | } |
4215 | 0 | else |
4216 | 0 | { |
4217 | 0 | uint32_t error_codes; |
4218 | 0 | offset += 4; |
4219 | |
|
4220 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
4221 | 0 | hf_isobus_vt_extendeddeleteversion_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
4222 | 0 | proto_item_append_text(ti, ": "); |
4223 | 0 | if (error_codes & 0x02) |
4224 | 0 | proto_item_append_text(ti, "Version label is not correct or Version label unknown "); |
4225 | 0 | if (error_codes & 0x08) |
4226 | 0 | proto_item_append_text(ti, "Any other error "); |
4227 | |
|
4228 | 0 | if(error_codes) |
4229 | 0 | { |
4230 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Error while deleting extended version"); |
4231 | 0 | } |
4232 | 0 | else |
4233 | 0 | { |
4234 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Extended version successfully deleted"); |
4235 | 0 | } |
4236 | 0 | } |
4237 | 0 | } |
4238 | 0 | break; |
4239 | 0 | case VT_GET_VERSIONS_MESSAGE: |
4240 | 0 | { |
4241 | 0 | if(direction == ecu_to_vt) |
4242 | 0 | { |
4243 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Get versions"); |
4244 | 0 | } |
4245 | | /*no else as this message can only be used from ecu to vt*/ |
4246 | 0 | } |
4247 | 0 | break; |
4248 | 0 | case VT_GET_VERSIONS_RESPONSE: |
4249 | 0 | { |
4250 | 0 | if(direction == vt_to_ecu) |
4251 | 0 | { |
4252 | 0 | uint32_t number_of_versions, i; |
4253 | |
|
4254 | 0 | proto_tree_add_item_ret_uint(tree, |
4255 | 0 | hf_isobus_vt_getversions_numberofversions, tvb, offset, 1, ENC_LITTLE_ENDIAN, &number_of_versions); |
4256 | 0 | offset += 1; |
4257 | |
|
4258 | 0 | for(i = 0; i < number_of_versions; i++) |
4259 | 0 | { |
4260 | 0 | proto_tree_add_item(tree, |
4261 | 0 | hf_isobus_vt_getversions_versionlabel, tvb, offset, 7, ENC_ASCII); |
4262 | 0 | offset += 7; |
4263 | 0 | } |
4264 | |
|
4265 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Versions received"); |
4266 | 0 | } |
4267 | | /*no else as this message can only be used from vt to ecu*/ |
4268 | 0 | } |
4269 | 0 | break; |
4270 | 0 | case VT_UNSUPPORTED_VT_FUNCTION: |
4271 | 0 | { |
4272 | 0 | uint32_t unsupported_vt_function; |
4273 | |
|
4274 | 0 | proto_tree_add_item_ret_uint(tree, |
4275 | 0 | hf_isobus_vt_unsupportedvtfunction_unsupportedvtfunction, tvb, offset, 1, ENC_LITTLE_ENDIAN, &unsupported_vt_function); |
4276 | |
|
4277 | 0 | if(direction == ecu_to_vt) |
4278 | 0 | { |
4279 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "VT function %s (%u) is not supported by ECU", |
4280 | 0 | val_to_str_ext_const(unsupported_vt_function, &vt_function_code_ext, "unknown"), unsupported_vt_function); |
4281 | 0 | } |
4282 | 0 | else |
4283 | 0 | { |
4284 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "VT function %s (%u) is not supported by VT", |
4285 | 0 | val_to_str_ext_const(unsupported_vt_function, &vt_function_code_ext, "unknown"), unsupported_vt_function); |
4286 | 0 | } |
4287 | 0 | } |
4288 | 0 | break; |
4289 | 0 | case VT_VT_STATUS: |
4290 | 0 | { |
4291 | 0 | proto_tree *ti_busycodes_subtree; |
4292 | 0 | proto_item *busycodes_item; |
4293 | 0 | uint32_t working_set_master, object_id_data_mask, object_id_soft_key_mask; |
4294 | |
|
4295 | 0 | proto_tree_add_item_ret_uint(tree, |
4296 | 0 | hf_isobus_vt_vtstatus_workingsetmaster, tvb, offset, 1, ENC_LITTLE_ENDIAN, &working_set_master); |
4297 | 0 | offset += 1; |
4298 | |
|
4299 | 0 | proto_tree_add_item_ret_uint(tree, |
4300 | 0 | hf_isobus_vt_vtstatus_objectiddatamask, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id_data_mask); |
4301 | 0 | ti = proto_tree_add_item(tree, |
4302 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4303 | 0 | proto_item_set_hidden(ti); |
4304 | 0 | offset += 2; |
4305 | |
|
4306 | 0 | proto_tree_add_item_ret_uint(tree, |
4307 | 0 | hf_isobus_vt_vtstatus_objectidsoftkeymask, tvb, offset, 2, ENC_LITTLE_ENDIAN, &object_id_soft_key_mask); |
4308 | 0 | ti = proto_tree_add_item(tree, |
4309 | 0 | hf_isobus_vt_objectid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4310 | 0 | proto_item_set_hidden(ti); |
4311 | 0 | offset += 2; |
4312 | |
|
4313 | 0 | busycodes_item = proto_tree_add_item(tree, |
4314 | 0 | hf_isobus_vt_vtstatus_vtbusycodes, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4315 | |
|
4316 | 0 | ti_busycodes_subtree = proto_item_add_subtree(busycodes_item, ett_isobus_vt_vtstatus_busycodes_subtree); |
4317 | 0 | proto_tree_add_item(ti_busycodes_subtree, hf_isobus_vt_vtstatus_vtbusycodes_updatingvisiblemask, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4318 | 0 | proto_tree_add_item(ti_busycodes_subtree, hf_isobus_vt_vtstatus_vtbusycodes_savingdata, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4319 | 0 | proto_tree_add_item(ti_busycodes_subtree, hf_isobus_vt_vtstatus_vtbusycodes_executingcommand, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4320 | 0 | proto_tree_add_item(ti_busycodes_subtree, hf_isobus_vt_vtstatus_vtbusycodes_executingmacro, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4321 | 0 | proto_tree_add_item(ti_busycodes_subtree, hf_isobus_vt_vtstatus_vtbusycodes_parsingobjectpool, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4322 | 0 | proto_tree_add_item(ti_busycodes_subtree, hf_isobus_vt_vtstatus_vtbusycodes_auxcontrolsactive, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4323 | 0 | proto_tree_add_item(ti_busycodes_subtree, hf_isobus_vt_vtstatus_vtbusycodes_outofmemory, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4324 | 0 | offset += 1; |
4325 | |
|
4326 | 0 | proto_tree_add_item(tree, |
4327 | 0 | hf_isobus_vt_vtstatus_vtfunctioncodes, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4328 | |
|
4329 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Status: Current master is %d data mask is %s soft key mask is %s", |
4330 | 0 | working_set_master, get_object_id_string(pinfo->pool, object_id_data_mask), get_object_id_string(pinfo->pool, object_id_soft_key_mask)); |
4331 | 0 | } |
4332 | 0 | break; |
4333 | 0 | case VT_WORKING_SET_MAINTENANCE: |
4334 | 0 | { |
4335 | 0 | uint8_t bitmask = tvb_get_uint8(tvb, offset); |
4336 | 0 | uint8_t version = tvb_get_uint8(tvb, offset + 1); |
4337 | 0 | if(version == 0xFF) |
4338 | 0 | { |
4339 | 0 | version = 2; |
4340 | 0 | } |
4341 | 0 | if(version > 3) |
4342 | 0 | { |
4343 | 0 | proto_tree_add_item(tree, |
4344 | 0 | hf_isobus_vt_wrksetmain_bitmask, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4345 | 0 | } |
4346 | 0 | offset += 1; |
4347 | |
|
4348 | 0 | proto_tree_add_item(tree, |
4349 | 0 | hf_isobus_vt_wrksetmain_version, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4350 | |
|
4351 | 0 | if(version > 3 && bitmask & 0x80) |
4352 | 0 | { |
4353 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Initiate "); |
4354 | 0 | } |
4355 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "Working Set Maintenance, VT version is %d", |
4356 | 0 | version); |
4357 | |
|
4358 | 0 | current_vt_version = version; |
4359 | 0 | } |
4360 | 0 | break; |
4361 | 0 | case VT_SCREEN_CAPTURE: |
4362 | 0 | { |
4363 | | // item and path is common between command/response |
4364 | 0 | proto_tree_add_item(tree, |
4365 | 0 | hf_isobus_vt_screencapture_item, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4366 | 0 | offset += 1; |
4367 | |
|
4368 | 0 | proto_tree_add_item(tree, |
4369 | 0 | hf_isobus_vt_screencapture_path, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4370 | 0 | offset += 1; |
4371 | |
|
4372 | 0 | if(direction == vt_to_ecu) |
4373 | 0 | { |
4374 | | // screen capture response |
4375 | 0 | uint32_t error_codes; |
4376 | 0 | ti = proto_tree_add_item_ret_uint(tree, |
4377 | 0 | hf_isobus_vt_screencapture_response_errorcodes, tvb, offset, 1, ENC_LITTLE_ENDIAN, &error_codes); |
4378 | 0 | offset += 1; |
4379 | |
|
4380 | 0 | if(error_codes) |
4381 | 0 | { |
4382 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Screen capture failed"); |
4383 | 0 | proto_tree_add_bitmask(tree, tvb, offset, hf_isobus_vt_screencapture_response_errorcodes_flags, |
4384 | 0 | ett_isobus_vt_screencapture_response_errorcodes_flags, |
4385 | 0 | screencapture_response_errorcodes_flag_fields, ENC_BIG_ENDIAN); |
4386 | | |
4387 | |
|
4388 | 0 | proto_item_append_text(ti, ": "); |
4389 | 0 | if (error_codes & 0x01) |
4390 | 0 | proto_item_append_text(ti, "Screen capture is not enabled"); |
4391 | 0 | if (error_codes & 0x02) |
4392 | 0 | proto_item_append_text(ti, "VT transfer is busy"); |
4393 | 0 | if (error_codes & 0x04) |
4394 | 0 | proto_item_append_text(ti, "Item unsupported request"); |
4395 | 0 | if (error_codes & 0x08) |
4396 | 0 | proto_item_append_text(ti, "Path unsupported request"); |
4397 | 0 | if (error_codes & 0x10) |
4398 | 0 | proto_item_append_text(ti, "Removable media path is full or unavailable"); |
4399 | 0 | if (error_codes & 0x20) |
4400 | 0 | proto_item_append_text(ti, "Other error"); |
4401 | 0 | } |
4402 | 0 | else |
4403 | 0 | { |
4404 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Screen capture successful"); |
4405 | 0 | proto_item_append_text(ti, ": no error"); |
4406 | 0 | } |
4407 | |
|
4408 | 0 | proto_tree_add_item(tree, |
4409 | 0 | hf_isobus_vt_screencapture_response_imageid, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4410 | 0 | } |
4411 | 0 | else |
4412 | 0 | { |
4413 | 0 | col_append_str(pinfo->cinfo, COL_INFO, "Screen capture"); |
4414 | 0 | } |
4415 | 0 | } |
4416 | 0 | break; |
4417 | 0 | } |
4418 | 0 | return tvb_captured_length(tvb); |
4419 | 0 | } |
4420 | | |
4421 | | static int |
4422 | | dissect_vt_to_ecu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) |
4423 | 0 | { |
4424 | 0 | return dissect_vt(tvb, pinfo, tree, vt_to_ecu); |
4425 | 0 | } |
4426 | | |
4427 | | static int |
4428 | | dissect_ecu_to_vt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) |
4429 | 0 | { |
4430 | 0 | return dissect_vt(tvb, pinfo, tree, ecu_to_vt); |
4431 | 0 | } |
4432 | | |
4433 | | /* |
4434 | | * Simple "get a line" routine, copied from giop dissector who copied it from somewhere :) |
4435 | | * |
4436 | | */ |
4437 | | |
4438 | | static int vt_getline(FILE *fp, char *line, int maxlen) |
4439 | 0 | { |
4440 | 0 | if (fgets(line, maxlen, fp) == NULL) |
4441 | 0 | { |
4442 | 0 | return 0; |
4443 | 0 | } |
4444 | 0 | else |
4445 | 0 | { |
4446 | 0 | line[strcspn(line, "\n")] = '\0'; |
4447 | 0 | return (int)strlen(line); |
4448 | 0 | } |
4449 | 0 | } |
4450 | | |
4451 | | |
4452 | | static void read_object_id_file(void) |
4453 | 15 | { |
4454 | 15 | char buf[500]; |
4455 | 15 | uint16_t item_count = 0; |
4456 | 15 | FILE *file; |
4457 | | |
4458 | 15 | if ((file = ws_fopen(object_id_translation, "r")) == NULL) |
4459 | 15 | { |
4460 | 15 | object_id_strings[0].value = 0; |
4461 | 15 | object_id_strings[0].strptr = NULL; |
4462 | | |
4463 | 15 | return; |
4464 | 15 | } |
4465 | | |
4466 | 0 | while ((vt_getline(file, buf, 500)) > 0) |
4467 | 0 | { |
4468 | 0 | char **split_string = g_strsplit(buf, ",", 2); |
4469 | |
|
4470 | 0 | object_id_strings[item_count].value = (uint32_t)g_ascii_strtoll(split_string[0], NULL, 10); |
4471 | 0 | object_id_strings[item_count].strptr = wmem_strdup(wmem_epan_scope(), split_string[1]); |
4472 | |
|
4473 | 0 | g_strfreev(split_string); |
4474 | 0 | item_count++; |
4475 | 0 | } |
4476 | |
|
4477 | 0 | fclose(file); |
4478 | |
|
4479 | 0 | object_id_strings[item_count].value = 0; |
4480 | 0 | object_id_strings[item_count].strptr = NULL; |
4481 | 0 | } |
4482 | | |
4483 | | static void isobus_vt_init(void) |
4484 | 15 | { |
4485 | 15 | read_object_id_file(); |
4486 | 15 | } |
4487 | | |
4488 | | /* Register the protocol with Wireshark */ |
4489 | | void |
4490 | | proto_register_isobus_vt(void) |
4491 | 15 | { |
4492 | 15 | static hf_register_info hf[] = { |
4493 | 15 | { &hf_isobus_vt, |
4494 | 15 | { "VT", "isobus.vt", |
4495 | 15 | FT_PROTOCOL, BASE_NONE, NULL, 0x0, |
4496 | 15 | NULL, HFILL } |
4497 | 15 | }, |
4498 | 15 | { &hf_isobus_vt_command, |
4499 | 15 | { "Command", "isobus.vt.command", |
4500 | 15 | FT_UINT8, BASE_DEC | BASE_EXT_STRING, &vt_function_code_ext, 0x0, |
4501 | 15 | NULL, HFILL } |
4502 | 15 | }, |
4503 | 15 | { &hf_isobus_vt_objectid, |
4504 | 15 | { "Object ID", "isobus.vt.object_id", |
4505 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4506 | 15 | NULL, HFILL } |
4507 | 15 | }, |
4508 | 15 | { &hf_isobus_vt_softkey_keyactcode, |
4509 | 15 | { "Activation Code", "isobus.vt.soft_key.act_code", |
4510 | 15 | FT_UINT8, BASE_DEC, VALS(key_activation_codes), 0x0, |
4511 | 15 | NULL, HFILL } |
4512 | 15 | }, |
4513 | 15 | { &hf_isobus_vt_softkey_objectid, |
4514 | 15 | { "Object ID", "isobus.vt.soft_key.object_id", |
4515 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4516 | 15 | NULL, HFILL } |
4517 | 15 | }, |
4518 | 15 | { &hf_isobus_vt_softkey_parentobjectid, |
4519 | 15 | { "Parent Object ID", "isobus.vt.soft_key.parent_object_id", |
4520 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4521 | 15 | NULL, HFILL } |
4522 | 15 | }, |
4523 | 15 | { &hf_isobus_vt_softkey_keynumber, |
4524 | 15 | { "Key Number", "isobus.vt.soft_key.key_number", |
4525 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4526 | 15 | NULL, HFILL } |
4527 | 15 | }, |
4528 | 15 | { &hf_isobus_vt_button_keyactcode, |
4529 | 15 | { "Activation Code", "isobus.vt.button.act_code", |
4530 | 15 | FT_UINT8, BASE_DEC, VALS(button_activation_codes), 0x0, |
4531 | 15 | NULL, HFILL } |
4532 | 15 | }, |
4533 | 15 | { &hf_isobus_vt_button_objectid, |
4534 | 15 | { "Object ID", "isobus.vt.button.object_id", |
4535 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4536 | 15 | NULL, HFILL } |
4537 | 15 | }, |
4538 | 15 | { &hf_isobus_vt_button_parentobjectid, |
4539 | 15 | { "Parent Object ID", "isobus.vt.button.parent_object_id", |
4540 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4541 | 15 | NULL, HFILL } |
4542 | 15 | }, |
4543 | 15 | { &hf_isobus_vt_button_keynumber, |
4544 | 15 | { "Key Number", "isobus.vt.button.key_number", |
4545 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4546 | 15 | NULL, HFILL } |
4547 | 15 | }, |
4548 | 15 | { &hf_isobus_vt_pointing_xposition, |
4549 | 15 | { "X Position", "isobus.vt.pointing_event.x_position", |
4550 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
4551 | 15 | NULL, HFILL } |
4552 | 15 | }, |
4553 | 15 | { &hf_isobus_vt_pointing_yposition, |
4554 | 15 | { "Y Position", "isobus.vt.pointing_event.y_position", |
4555 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
4556 | 15 | NULL, HFILL } |
4557 | 15 | }, |
4558 | 15 | { &hf_isobus_vt_pointing_touchstate, |
4559 | 15 | { "Touch State", "isobus.vt.pointing_event.touch_state", |
4560 | 15 | FT_UINT8, BASE_DEC, VALS(pointing_touch_state), 0x0, |
4561 | 15 | NULL, HFILL } |
4562 | 15 | }, |
4563 | 15 | { &hf_isobus_vt_vtselectinputobject_objectid, |
4564 | 15 | { "Object ID", "isobus.vt.vt_select_input_object.object_id", |
4565 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4566 | 15 | NULL, HFILL } |
4567 | 15 | }, |
4568 | 15 | { &hf_isobus_vt_vtselectinputobject_selection, |
4569 | 15 | { "Selection", "isobus.vt.vt_select_input_object.selection", |
4570 | 15 | FT_UINT8, BASE_DEC, VALS(selection), 0x0, |
4571 | 15 | NULL, HFILL } |
4572 | 15 | }, |
4573 | 15 | { &hf_isobus_vt_vtselectinputobject_openforinput, |
4574 | 15 | { "Open For Input", "isobus.vt.vt_select_input_object.open_for_input", |
4575 | 15 | FT_UINT8, BASE_DEC, NULL, 0x80, |
4576 | 15 | NULL, HFILL } |
4577 | 15 | }, |
4578 | 15 | { &hf_isobus_vt_vtescmessage_objectid, |
4579 | 15 | { "Object ID", "isobus.vt.vt_esc_message.object_id", |
4580 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4581 | 15 | NULL, HFILL } |
4582 | 15 | }, |
4583 | 15 | { &hf_isobus_vt_vtescmessage_errorcodes, |
4584 | 15 | { "Error Codes", "isobus.vt.vt_esc_message.error_codes", |
4585 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4586 | 15 | NULL, HFILL } |
4587 | 15 | }, |
4588 | 15 | { &hf_isobus_vt_vtchgnumval_objectid, |
4589 | 15 | { "Object ID", "isobus.vt.vt_chg_num_val.object_id", |
4590 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4591 | 15 | NULL, HFILL } |
4592 | 15 | }, |
4593 | 15 | { &hf_isobus_vt_vtchgnumval_value, |
4594 | 15 | { "Value", "isobus.vt.vt_chg_num_val.val", |
4595 | 15 | FT_UINT32, BASE_DEC, NULL, 0x0, |
4596 | 15 | NULL, HFILL } |
4597 | 15 | }, |
4598 | 15 | { &hf_isobus_vt_vtchgactivemask_maskobjectid, |
4599 | 15 | { "Mask Object ID", "isobus.vt.vt_chg_active_mask.mask_object_id", |
4600 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4601 | 15 | NULL, HFILL } |
4602 | 15 | }, |
4603 | 15 | { &hf_isobus_vt_vtchgactivemask_errorcodes, |
4604 | 15 | { "Error Codes", "isobus.vt.vt_chg_active_mask.error_codes", |
4605 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
4606 | 15 | NULL, HFILL } |
4607 | 15 | }, |
4608 | 15 | { &hf_isobus_vt_vtchgactivemask_errorobjectid, |
4609 | 15 | { "Error Object ID", "isobus.vt.vt_chg_active_mask.error_object_id", |
4610 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4611 | 15 | NULL, HFILL } |
4612 | 15 | }, |
4613 | 15 | { &hf_isobus_vt_vtchgactivemask_errorobjectidparent, |
4614 | 15 | { "Error Object ID Parent", "isobus.vt.vt_chg_active_mask.error_object_id_parent", |
4615 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4616 | 15 | NULL, HFILL } |
4617 | 15 | }, |
4618 | 15 | { &hf_isobus_vt_vtchgstrval_objectid, |
4619 | 15 | { "Object ID", "isobus.vt.vt_chg_str_val.object_id", |
4620 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4621 | 15 | NULL, HFILL } |
4622 | 15 | }, |
4623 | 15 | { &hf_isobus_vt_vtchgstrval_length, |
4624 | 15 | { "Length", "isobus.vt.vt_chg_str_val.length", |
4625 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4626 | 15 | NULL, HFILL } |
4627 | 15 | }, |
4628 | 15 | { &hf_isobus_vt_vtchgstrval_value, |
4629 | 15 | { "Value", "isobus.vt.vt_chg_str_val.val", |
4630 | 15 | FT_STRING, BASE_NONE, NULL, 0x0, |
4631 | 15 | NULL, HFILL } |
4632 | 15 | }, |
4633 | 15 | { &hf_isobus_vt_vtonuserlayouthideshow_objectid_1, |
4634 | 15 | { "Object ID 1", "isobus.vt.vt_on_user_layout_hide_show.object_id_1", |
4635 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4636 | 15 | NULL, HFILL } |
4637 | 15 | }, |
4638 | 15 | { &hf_isobus_vt_vtonuserlayouthideshow_status_1, |
4639 | 15 | { "Status 1", "isobus.vt.vt_on_user_layout_hide_show.status_1", |
4640 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4641 | 15 | NULL, HFILL } |
4642 | 15 | }, |
4643 | 15 | { &hf_isobus_vt_vtonuserlayouthideshow_objectid_2, |
4644 | 15 | { "Object ID 2", "isobus.vt.vt_on_user_layout_hide_show.object_id_2", |
4645 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4646 | 15 | NULL, HFILL } |
4647 | 15 | }, |
4648 | 15 | { &hf_isobus_vt_vtonuserlayouthideshow_status_2, |
4649 | 15 | { "Status 2", "isobus.vt.vt_on_user_layout_hide_show.status_2", |
4650 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4651 | 15 | NULL, HFILL } |
4652 | 15 | }, |
4653 | 15 | { &hf_isobus_vt_vtcontrolaudiosignaltermination_terminationcause, |
4654 | 15 | { "Termination Cause", "isobus.vt.vt_control_audio_signal_termination.termination_cause", |
4655 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
4656 | 15 | NULL, HFILL } |
4657 | 15 | }, |
4658 | 15 | { &hf_isobus_vt_endofobjectpool_errorcodes, |
4659 | 15 | { "Error Codes", "isobus.vt.end_of_object_pool.error_codes", |
4660 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
4661 | 15 | NULL, HFILL } |
4662 | 15 | }, |
4663 | 15 | { &hf_isobus_vt_endofobjectpool_faultyparentobjectid, |
4664 | 15 | { "Faulty Parent Object ID", "isobus.vt.end_of_object_pool.faulty_parent_object_id", |
4665 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4666 | 15 | NULL, HFILL } |
4667 | 15 | }, |
4668 | 15 | { &hf_isobus_vt_endofobjectpool_faultyobjectid, |
4669 | 15 | { "Faulty Object ID", "isobus.vt.end_of_object_pool.faulty_object_id", |
4670 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4671 | 15 | NULL, HFILL } |
4672 | 15 | }, |
4673 | 15 | { &hf_isobus_vt_endofobjectpool_objectpoolerrorcodes, |
4674 | 15 | { "Object Pool Error Codes", "isobus.vt.end_of_object_pool.object_pool_error_codes", |
4675 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
4676 | 15 | NULL, HFILL } |
4677 | 15 | }, |
4678 | 15 | { &hf_isobus_vt_auxiliaryassignmenttype1_sourceaddressauxinputdevice, |
4679 | 15 | { "Source Address Auxiliary Input Device", "isobus.vt.auxiliary_assignment_type_1.source_address_aux_input_device", |
4680 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4681 | 15 | NULL, HFILL } |
4682 | 15 | }, |
4683 | 15 | { &hf_isobus_vt_auxiliaryassignmenttype1_auxinputnumber, |
4684 | 15 | { "Auxiliary Input Number", "isobus.vt.auxiliary_assignment_type_1.aux_input_number", |
4685 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4686 | 15 | NULL, HFILL } |
4687 | 15 | }, |
4688 | 15 | { &hf_isobus_vt_auxiliaryassignmenttype1_objectidauxinputdevice, |
4689 | 15 | { "Object ID of Auxiliary Function", "isobus.vt.auxiliary_assignment_type_1.object_id_of_auxiliary_function", |
4690 | 15 | FT_UINT16, BASE_DEC_HEX, NULL, 0x0, |
4691 | 15 | NULL, HFILL } |
4692 | 15 | }, |
4693 | 15 | { &hf_isobus_vt_auxiliaryinputtype1status_inputnumber, |
4694 | 15 | { "Input Number", "isobus.vt.auxiliary_input_type_1_status.input_number", |
4695 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4696 | 15 | NULL, HFILL } |
4697 | 15 | }, |
4698 | 15 | { &hf_isobus_vt_auxiliaryinputtype1status_analyzevalue, |
4699 | 15 | { "Analyze Value", "isobus.vt.auxiliary_input_type_1_status.analyze_value", |
4700 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
4701 | 15 | NULL, HFILL } |
4702 | 15 | }, |
4703 | 15 | { &hf_isobus_vt_auxiliaryinputtype1status_numberoftransitions, |
4704 | 15 | { "Number of transitions", "isobus.vt.auxiliary_input_type_1_status.number_of_transitions", |
4705 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
4706 | 15 | NULL, HFILL } |
4707 | 15 | }, |
4708 | 15 | { &hf_isobus_vt_auxiliaryinputtype1status_booleanvalue, |
4709 | 15 | { "Boolean Value", "isobus.vt.auxiliary_input_type_1_status.boolean_value", |
4710 | 15 | FT_UINT8, BASE_DEC, VALS(auxiliary_boolean_value), 0x0, |
4711 | 15 | NULL, HFILL } |
4712 | 15 | }, |
4713 | 15 | { &hf_isobus_vt_preferredassignment_numberofinputunits, |
4714 | 15 | { "Number of Input Units", "isobus.vt.preferred_assignment.number_of_input_units", |
4715 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4716 | 15 | NULL, HFILL } |
4717 | 15 | }, |
4718 | 15 | { &hf_isobus_vt_preferredassignment_auxinputunit_name, |
4719 | 15 | { "64-bit NAME of the Auxiliary Input Unit", "isobus.vt.preferred_assignment.auxiliary_input_unit.name", |
4720 | 15 | FT_UINT64, BASE_HEX, NULL, 0x0, |
4721 | 15 | NULL, HFILL } |
4722 | 15 | }, |
4723 | 15 | { &hf_isobus_vt_preferredassignment_auxinputunit_modelidentificationcode, |
4724 | 15 | { "Model Identification Code of the Auxiliary Input Unit", "isobus.vt.preferred_assignment.auxiliary_input_unit.model_identification_code", |
4725 | 15 | FT_UINT16, BASE_HEX, NULL, 0x0, |
4726 | 15 | NULL, HFILL } |
4727 | 15 | }, |
4728 | 15 | { &hf_isobus_vt_preferredassignment_auxinputunit_numberofpreferredfunctions, |
4729 | 15 | { "Number of Preferred Functions for this Auxiliary Input Unit", "isobus.vt.preferred_assignment.auxiliary_input_unit.number_of_preferred_functions", |
4730 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4731 | 15 | NULL, HFILL } |
4732 | 15 | }, |
4733 | 15 | { &hf_isobus_vt_preferredassignment_auxinputunit_preferredfunctions_auxfunctionobjectid, |
4734 | 15 | { "Object ID of Auxiliary Function", "isobus.vt.preferred_assignment.auxiliary_input_unit.preferred_functions.auxiliary_function_object_id", |
4735 | 15 | FT_UINT16, BASE_HEX_DEC, VALS(object_id_strings), 0x0, |
4736 | 15 | NULL, HFILL } |
4737 | 15 | }, |
4738 | 15 | { &hf_isobus_vt_preferredassignment_auxinputunit_preferredfunctions_auxinputobjectid, |
4739 | 15 | { "Object ID of Auxiliary Input", "isobus.vt.preferred_assignment.auxiliary_input_unit.preferred_functions.auxiliary_input_object_id", |
4740 | 15 | FT_UINT16, BASE_HEX_DEC, VALS(object_id_strings), 0x0, |
4741 | 15 | NULL, HFILL } |
4742 | 15 | }, |
4743 | 15 | { &hf_isobus_vt_preferredassignment_errorcodes, |
4744 | 15 | { "Error Codes", "isobus.vt.preferred_assignment.error_codes", |
4745 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
4746 | 15 | NULL, HFILL } |
4747 | 15 | }, |
4748 | 15 | { &hf_isobus_vt_preferredassignment_faultyauxiliaryfunctionobjectid, |
4749 | 15 | { "Faulty Auxiliary Function Object ID", "isobus.vt.preferred_assignment.faulty_auxiliary_function_object_id", |
4750 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4751 | 15 | NULL, HFILL } |
4752 | 15 | }, |
4753 | 15 | { &hf_isobus_vt_auxiliaryinputtype2maintenance_modelidentificationcode, |
4754 | 15 | { "Model Identification Code", "isobus.vt.auxiliary_input_type_2_maintenance.model_identification_code", |
4755 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
4756 | 15 | NULL, HFILL } |
4757 | 15 | }, |
4758 | 15 | { &hf_isobus_vt_auxiliaryinputtype2maintenance_status, |
4759 | 15 | { "Status", "isobus.vt.auxiliary_input_type_2_maintenance.status", |
4760 | 15 | FT_UINT8, BASE_DEC, VALS(auxiliary_maintenance_status), 0x0, |
4761 | 15 | NULL, HFILL } |
4762 | 15 | }, |
4763 | 15 | { &hf_isobus_vt_auxiliaryassignmenttype2_name, |
4764 | 15 | { "64-bit NAME of the Auxiliary Input Unit", "isobus.vt.auxiliary_assignment_type_2.name", |
4765 | 15 | FT_UINT64, BASE_HEX, NULL, 0x0, |
4766 | 15 | NULL, HFILL } |
4767 | 15 | }, |
4768 | 15 | { &hf_isobus_vt_auxiliaryassignmenttype2_flags, |
4769 | 15 | { "Flags", "isobus.vt.auxiliary_assignment_type_2.flags", |
4770 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
4771 | 15 | NULL, HFILL } |
4772 | 15 | }, |
4773 | 15 | { &hf_isobus_vt_auxiliaryassignmenttype2_flags_preferredassignment, |
4774 | 15 | { "Preferred Assignment", "isobus.vt.auxiliary_assignment_type_2.flags.preferred_assignment", |
4775 | 15 | FT_UINT8, BASE_HEX, NULL, 0x80, |
4776 | 15 | NULL, HFILL } |
4777 | 15 | }, |
4778 | 15 | { &hf_isobus_vt_auxiliaryassignmenttype2_flags_auxiliaryfunctiontype, |
4779 | 15 | { "Auxiliary Function Type", "isobus.vt.auxiliary_assignment_type_2.flags.auxiliary_function_type", |
4780 | 15 | FT_UINT8, BASE_DEC, NULL, 0x1F, |
4781 | 15 | NULL, HFILL } |
4782 | 15 | }, |
4783 | 15 | { &hf_isobus_vt_auxiliaryassignmenttype2_auxinputobjectid, |
4784 | 15 | { "Object ID of the Auxiliary Input", "isobus.vt.auxiliary_assignment_type_2.auxiliary_input_object_id", |
4785 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4786 | 15 | NULL, HFILL } |
4787 | 15 | }, |
4788 | 15 | { &hf_isobus_vt_auxiliaryassignmenttype2_auxfunctionobjectid, |
4789 | 15 | { "Object ID of Auxiliary Function", "isobus.vt.auxiliary_assignment_type_2.auxiliary_function_object_id", |
4790 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4791 | 15 | NULL, HFILL } |
4792 | 15 | }, |
4793 | 15 | { &hf_isobus_vt_auxiliaryassignmenttype2_errorcodes, |
4794 | 15 | { "Error Codes", "isobus.vt.auxiliary_assignment_type_2.error_codes", |
4795 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
4796 | 15 | NULL, HFILL } |
4797 | 15 | }, |
4798 | 15 | { &hf_isobus_vt_auxiliaryinputstatustype2enable_auxiliaryinputobjectid, |
4799 | 15 | { "Auxiliary Input Object ID", "isobus.vt.auxiliary_input_status_type_2_enable.auxiliary_input_object_id", |
4800 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4801 | 15 | NULL, HFILL } |
4802 | 15 | }, |
4803 | 15 | { &hf_isobus_vt_auxiliaryinputstatustype2enable_enable, |
4804 | 15 | { "Enable", "isobus.vt.auxiliary_input_status_type_2_enable.enable", |
4805 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4806 | 15 | NULL, HFILL } |
4807 | 15 | }, |
4808 | 15 | { &hf_isobus_vt_auxiliaryinputstatustype2enable_status, |
4809 | 15 | { "Status", "isobus.vt.auxiliary_input_status_type_2_enable.status", |
4810 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4811 | 15 | NULL, HFILL } |
4812 | 15 | }, |
4813 | 15 | { &hf_isobus_vt_auxiliaryinputstatustype2enable_errorcodes, |
4814 | 15 | { "Error Codes", "isobus.vt.auxiliary_input_status_type_2_enable.error_codes", |
4815 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
4816 | 15 | NULL, HFILL } |
4817 | 15 | }, |
4818 | 15 | { &hf_isobus_vt_auxiliaryinputtype2status_auxiliaryinputobjectid, |
4819 | 15 | { "Auxiliary Input Object ID", "isobus.vt.auxiliary_input_type_2_status.auxiliary_input_object_id", |
4820 | 15 | FT_UINT16, BASE_HEX, VALS(object_id_strings), 0x0, |
4821 | 15 | NULL, HFILL } |
4822 | 15 | }, |
4823 | 15 | { &hf_isobus_vt_auxiliaryinputtype2status_value1, |
4824 | 15 | { "Value 1", "isobus.vt.auxiliary_input_type_2_status.value_1", |
4825 | 15 | FT_UINT16, BASE_HEX, NULL, 0x0, |
4826 | 15 | NULL, HFILL } |
4827 | 15 | }, |
4828 | 15 | { &hf_isobus_vt_auxiliaryinputtype2status_value2, |
4829 | 15 | { "Value 2", "isobus.vt.auxiliary_input_type_2_status.value_2", |
4830 | 15 | FT_UINT16, BASE_HEX, NULL, 0x0, |
4831 | 15 | NULL, HFILL } |
4832 | 15 | }, |
4833 | 15 | { &hf_isobus_vt_auxiliaryinputtype2status_operatingstate, |
4834 | 15 | { "Operating State", "isobus.vt.auxiliary_input_type_2_status.operating_state", |
4835 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
4836 | 15 | NULL, HFILL } |
4837 | 15 | }, |
4838 | 15 | { &hf_isobus_vt_auxiliaryinputtype2status_operatingstate_learnmodeactive, |
4839 | 15 | { "Operating State", "isobus.vt.auxiliary_input_type_2_status.operating_state.learn_mode_active", |
4840 | 15 | FT_UINT8, BASE_HEX, NULL, 0x01, |
4841 | 15 | NULL, HFILL } |
4842 | 15 | }, |
4843 | 15 | { &hf_isobus_vt_auxiliaryinputtype2status_operatingstate_inputactivatedinlearnmode, |
4844 | 15 | { "Input activated in learn mode", "isobus.vt.auxiliary_input_type_2_status.operating_state.input_activated_in_learn_mode", |
4845 | 15 | FT_UINT8, BASE_HEX, NULL, 0x02, |
4846 | 15 | NULL, HFILL } |
4847 | 15 | }, |
4848 | 15 | { &hf_isobus_vt_auxiliarycapabilities_requesttype, |
4849 | 15 | { "Request Type", "isobus.vt.auxiliary_capabilities.request_type", |
4850 | 15 | FT_UINT8, BASE_DEC, VALS(auxiliary_capabilities_request_type), 0x0, |
4851 | 15 | NULL, HFILL } |
4852 | 15 | }, |
4853 | 15 | { &hf_isobus_vt_auxiliarycapabilities_numberofauxiliaryunits, |
4854 | 15 | { "Number of Auxiliary Unit", "isobus.vt.auxiliary_capabilities.number_of_auxiliary_units", |
4855 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4856 | 15 | NULL, HFILL } |
4857 | 15 | }, |
4858 | 15 | { &hf_isobus_vt_auxiliarycapabilities_auxiliaryunit_name, |
4859 | 15 | { "64-bit NAME of the Auxiliary Unit", "isobus.vt.auxiliary_capabilities.auxiliary_unit.name", |
4860 | 15 | FT_UINT64, BASE_HEX, NULL, 0x0, |
4861 | 15 | NULL, HFILL } |
4862 | 15 | }, |
4863 | 15 | { &hf_isobus_vt_auxiliarycapabilities_auxiliaryunit_numberofdifferentsets, |
4864 | 15 | { "Number of different sets for this Auxiliary Unit", "isobus.vt.auxiliary_capabilities.auxiliary_unit.number_of_different_sets", |
4865 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4866 | 15 | NULL, HFILL } |
4867 | 15 | }, |
4868 | 15 | { &hf_isobus_vt_auxiliarycapabilities_auxiliaryunit_set_numberofinstances, |
4869 | 15 | { "Number of Instances", "isobus.vt.auxiliary_capabilities.auxiliary_unit.set.number_of_instances", |
4870 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4871 | 15 | NULL, HFILL } |
4872 | 15 | }, |
4873 | 15 | { &hf_isobus_vt_auxiliarycapabilities_auxiliaryunit_set_functionattribute, |
4874 | 15 | { "Function attribute", "isobus.vt.auxiliary_capabilities.auxiliary_unit.set.function_attribute", |
4875 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4876 | 15 | NULL, HFILL } |
4877 | 15 | }, |
4878 | 15 | { &hf_isobus_vt_auxiliarycapabilities_auxiliaryunit_set_assignedattribute, |
4879 | 15 | { "Assigned attribute", "isobus.vt.auxiliary_capabilities.auxiliary_unit.set.assigned_attribute", |
4880 | 15 | FT_UINT8, BASE_HEX, VALS(auxiliary_assigned_attributes), 0x0, |
4881 | 15 | NULL, HFILL } |
4882 | 15 | }, |
4883 | 15 | { &hf_isobus_vt_esc_objectid, |
4884 | 15 | { "Object ID", "isobus.vt.esc.object_id", |
4885 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4886 | 15 | NULL, HFILL } |
4887 | 15 | }, |
4888 | 15 | { &hf_isobus_vt_esc_errorcodes, |
4889 | 15 | { "Error Codes", "isobus.vt.esc.error_codes", |
4890 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
4891 | 15 | NULL, HFILL } |
4892 | 15 | }, |
4893 | 15 | { &hf_isobus_vt_hideshowobj_objectid, |
4894 | 15 | { "Object ID", "isobus.vt.hide_show_object.object_id", |
4895 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4896 | 15 | NULL, HFILL } |
4897 | 15 | }, |
4898 | 15 | { &hf_isobus_vt_hideshowobj_action, |
4899 | 15 | { "Action", "isobus.vt.hide_show_object.action", |
4900 | 15 | FT_UINT8, BASE_DEC, VALS(vt_hide_show_action), 0x0, |
4901 | 15 | NULL, HFILL } |
4902 | 15 | }, |
4903 | 15 | { &hf_isobus_vt_hideshowobj_errorcodes, |
4904 | 15 | { "Error Codes", "isobus.vt.hide_show_object.error_codes", |
4905 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
4906 | 15 | NULL, HFILL } |
4907 | 15 | }, |
4908 | 15 | { &hf_isobus_vt_enabledisableobj_objectid, |
4909 | 15 | { "Object ID", "isobus.vt.enable_disable_object.object_id", |
4910 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4911 | 15 | NULL, HFILL } |
4912 | 15 | }, |
4913 | 15 | { &hf_isobus_vt_enabledisableobj_enabledisable, |
4914 | 15 | { "Action", "isobus.vt.enable_disable_object.enable_disable", |
4915 | 15 | FT_UINT8, BASE_DEC, VALS(vt_enable_disable_action), 0x0, |
4916 | 15 | NULL, HFILL } |
4917 | 15 | }, |
4918 | 15 | { &hf_isobus_vt_enabledisableobj_errorcodes, |
4919 | 15 | { "Error Codes", "isobus.vt.enable_disable_object.error_codes", |
4920 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
4921 | 15 | NULL, HFILL } |
4922 | 15 | }, |
4923 | 15 | { &hf_isobus_vt_selectinputobject_objectid, |
4924 | 15 | { "Object ID", "isobus.vt.select_input_object.object_id", |
4925 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4926 | 15 | NULL, HFILL } |
4927 | 15 | }, |
4928 | 15 | { &hf_isobus_vt_selectinputobject_option, |
4929 | 15 | { "Option", "isobus.vt.select_input_object.option", |
4930 | 15 | FT_UINT8, BASE_HEX, VALS(select_input_object_option), 0x0, |
4931 | 15 | NULL, HFILL } |
4932 | 15 | }, |
4933 | 15 | { &hf_isobus_vt_selectinputobject_response, |
4934 | 15 | { "Response", "isobus.vt.select_input_object.response", |
4935 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(select_input_opject_response), 0x0, |
4936 | 15 | NULL, HFILL } |
4937 | 15 | }, |
4938 | 15 | { &hf_isobus_vt_selectinputobject_errorcodes, |
4939 | 15 | { "Object ID", "isobus.vt.select_input_object.error_codes", |
4940 | 15 | FT_UINT16, BASE_DEC_HEX, NULL, 0x0, |
4941 | 15 | NULL, HFILL } |
4942 | 15 | }, |
4943 | 15 | { &hf_isobus_vt_controlaudiosignal_activations, |
4944 | 15 | { "Activations", "isobus.vt.control_audio_signal.activations", |
4945 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4946 | 15 | NULL, HFILL } |
4947 | 15 | }, |
4948 | 15 | { &hf_isobus_vt_controlaudiosignal_frequency, |
4949 | 15 | { "Frequency", "isobus.vt.control_audio_signal.frequency", |
4950 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
4951 | 15 | NULL, HFILL } |
4952 | 15 | }, |
4953 | 15 | { &hf_isobus_vt_controlaudiosignal_ontime, |
4954 | 15 | { "On-time duration", "isobus.vt.control_audio_signal.on_time", |
4955 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
4956 | 15 | NULL, HFILL } |
4957 | 15 | }, |
4958 | 15 | { &hf_isobus_vt_controlaudiosignal_offtime, |
4959 | 15 | { "Off-time duration", "isobus.vt.control_audio_signal.off_time", |
4960 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
4961 | 15 | NULL, HFILL } |
4962 | 15 | }, |
4963 | 15 | { &hf_isobus_vt_controlaudiosignal_errorcodes, |
4964 | 15 | { "Error Codes", "isobus.vt.control_audio_signal.error_codes", |
4965 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
4966 | 15 | NULL, HFILL } |
4967 | 15 | }, |
4968 | 15 | { &hf_isobus_vt_setaudiovolume_volume, |
4969 | 15 | { "Volume", "isobus.vt.set_audio_volume.volume", |
4970 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4971 | 15 | NULL, HFILL } |
4972 | 15 | }, |
4973 | 15 | { &hf_isobus_vt_setaudiovolume_errorcodes, |
4974 | 15 | { "Error Codes", "isobus.vt.set_audio_volume.error_codes", |
4975 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
4976 | 15 | NULL, HFILL } |
4977 | 15 | }, |
4978 | 15 | { &hf_isobus_vt_changechildlocation_parentobjectid, |
4979 | 15 | { "Parent Object ID", "isobus.vt.change_child_location.parent_object_id", |
4980 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4981 | 15 | NULL, HFILL } |
4982 | 15 | }, |
4983 | 15 | { &hf_isobus_vt_changechildlocation_objectid, |
4984 | 15 | { "Object ID", "isobus.vt.change_child_location.object_id", |
4985 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
4986 | 15 | NULL, HFILL } |
4987 | 15 | }, |
4988 | 15 | { &hf_isobus_vt_changechildlocation_relativexpos, |
4989 | 15 | { "Relative X Position", "isobus.vt.change_child_location.relative_x_position", |
4990 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4991 | 15 | NULL, HFILL } |
4992 | 15 | }, |
4993 | 15 | { &hf_isobus_vt_changechildlocation_relativeypos, |
4994 | 15 | { "Relative Y Position", "isobus.vt.change_child_location.relative_y_position", |
4995 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
4996 | 15 | NULL, HFILL } |
4997 | 15 | }, |
4998 | 15 | { &hf_isobus_vt_changechildlocation_errorcodes, |
4999 | 15 | { "Errorcode", "isobus.vt.change_child_location.error_codes", |
5000 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5001 | 15 | NULL, HFILL } |
5002 | 15 | }, |
5003 | 15 | { &hf_isobus_vt_changechildposition_parentobjectid, |
5004 | 15 | { "Parent Object ID", "isobus.vt.chg_child_pos.parent_object_id", |
5005 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5006 | 15 | NULL, HFILL } |
5007 | 15 | }, |
5008 | 15 | { &hf_isobus_vt_changechildposition_objectid, |
5009 | 15 | { "Object ID", "isobus.vt.chg_child_pos.object_id", |
5010 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5011 | 15 | NULL, HFILL } |
5012 | 15 | }, |
5013 | 15 | { &hf_isobus_vt_changechildposition_xpos, |
5014 | 15 | { "Relative X Position", "isobus.vt.chg_child_pos.rel_x_pos", |
5015 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5016 | 15 | NULL, HFILL } |
5017 | 15 | }, |
5018 | 15 | { &hf_isobus_vt_changechildposition_ypos, |
5019 | 15 | { "Relative Y Position", "isobus.vt.chg_child_pos.rel_y_pos", |
5020 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5021 | 15 | NULL, HFILL } |
5022 | 15 | }, |
5023 | 15 | { &hf_isobus_vt_changechildposition_errorcodes, |
5024 | 15 | { "Error codes", "isobus.vt.chg_child_pos.error_codes", |
5025 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5026 | 15 | NULL, HFILL } |
5027 | 15 | }, |
5028 | 15 | { &hf_isobus_vt_changesize_objectid, |
5029 | 15 | { "Object ID", "isobus.vt.change_size.object_id", |
5030 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5031 | 15 | NULL, HFILL } |
5032 | 15 | }, |
5033 | 15 | { &hf_isobus_vt_changesize_newwidth, |
5034 | 15 | { "New Width", "isobus.vt.change_size.new_width", |
5035 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5036 | 15 | NULL, HFILL } |
5037 | 15 | }, |
5038 | 15 | { &hf_isobus_vt_changesize_newheight, |
5039 | 15 | { "New Height", "isobus.vt.change_size.new_height", |
5040 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5041 | 15 | NULL, HFILL } |
5042 | 15 | }, |
5043 | 15 | { &hf_isobus_vt_changesize_errorcodes, |
5044 | 15 | { "Errorcode", "isobus.vt.change_size.error_codes", |
5045 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5046 | 15 | NULL, HFILL } |
5047 | 15 | }, |
5048 | 15 | { &hf_isobus_vt_chgnumval_objectid, |
5049 | 15 | { "Object ID", "isobus.vt.change_numeric_value.object_id", |
5050 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5051 | 15 | NULL, HFILL } |
5052 | 15 | }, |
5053 | 15 | { &hf_isobus_vt_chgnumval_errorcodes, |
5054 | 15 | { "Error Codes", "isobus.vt.change_numeric_value.error_codes", |
5055 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5056 | 15 | NULL, HFILL } |
5057 | 15 | }, |
5058 | 15 | { &hf_isobus_vt_chgnumval_value, |
5059 | 15 | { "Value", "isobus.vt.change_numeric_value.val", |
5060 | 15 | FT_UINT32, BASE_DEC, NULL, 0x0, |
5061 | 15 | NULL, HFILL } |
5062 | 15 | }, |
5063 | 15 | { &hf_isobus_vt_changeendpoint_objectid, |
5064 | 15 | { "Object ID", "isobus.vt.change_end_point.object_id", |
5065 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5066 | 15 | NULL, HFILL } |
5067 | 15 | }, |
5068 | 15 | { &hf_isobus_vt_changeendpoint_width, |
5069 | 15 | { "Width", "isobus.vt.change_end_point.width", |
5070 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5071 | 15 | NULL, HFILL } |
5072 | 15 | }, |
5073 | 15 | { &hf_isobus_vt_changeendpoint_height, |
5074 | 15 | { "Height", "isobus.vt.change_end_point.height", |
5075 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5076 | 15 | NULL, HFILL } |
5077 | 15 | }, |
5078 | 15 | { &hf_isobus_vt_changeendpoint_linedirection, |
5079 | 15 | { "Line Direction", "isobus.vt.change_end_point.line_direction", |
5080 | 15 | FT_UINT8, BASE_DEC, VALS(line_direction), 0x0, |
5081 | 15 | NULL, HFILL } |
5082 | 15 | }, |
5083 | 15 | { &hf_isobus_vt_changefontattributes_objectid, |
5084 | 15 | { "Object ID", "isobus.vt.change_font_attributes.object_id", |
5085 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5086 | 15 | NULL, HFILL } |
5087 | 15 | }, |
5088 | 15 | { &hf_isobus_vt_changefontattributes_fontcolour, |
5089 | 15 | { "Font Colour", "isobus.vt.change_font_attributes.font_colour", |
5090 | 15 | FT_UINT8, BASE_DEC | BASE_RANGE_STRING, RVALS(vt_colours), 0x0, |
5091 | 15 | NULL, HFILL } |
5092 | 15 | }, |
5093 | 15 | { &hf_isobus_vt_changefontattributes_fontsize, |
5094 | 15 | { "Font Size", "isobus.vt.change_font_attributes.font_size", |
5095 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5096 | 15 | NULL, HFILL } |
5097 | 15 | }, |
5098 | 15 | { &hf_isobus_vt_changefontattributes_fonttype, |
5099 | 15 | { "Font Type", "isobus.vt.change_font_attributes.font_type", |
5100 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5101 | 15 | NULL, HFILL } |
5102 | 15 | }, |
5103 | 15 | { &hf_isobus_vt_changefontattributes_fontstyle, |
5104 | 15 | { "Font Style", "isobus.vt.change_font_attributes.font_style", |
5105 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5106 | 15 | NULL, HFILL } |
5107 | 15 | }, |
5108 | 15 | { &hf_isobus_vt_changefontattributes_errorcodes, |
5109 | 15 | { "Error Codes", "isobus.vt.change_font_attributes.error_codes", |
5110 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5111 | 15 | NULL, HFILL } |
5112 | 15 | }, |
5113 | 15 | { &hf_isobus_vt_changelineattributes_objectid, |
5114 | 15 | { "Object ID", "isobus.vt.change_line_attributes.object_id", |
5115 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5116 | 15 | NULL, HFILL } |
5117 | 15 | }, |
5118 | 15 | { &hf_isobus_vt_changelineattributes_linecolour, |
5119 | 15 | { "Line Colour", "isobus.vt.change_line_attributes.line_colour", |
5120 | 15 | FT_UINT8, BASE_DEC | BASE_RANGE_STRING, RVALS(vt_colours), 0x0, |
5121 | 15 | NULL, HFILL } |
5122 | 15 | }, |
5123 | 15 | { &hf_isobus_vt_changelineattributes_linewidth, |
5124 | 15 | { "Line Width", "isobus.vt.change_line_attributes.line_width", |
5125 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5126 | 15 | NULL, HFILL } |
5127 | 15 | }, |
5128 | 15 | { &hf_isobus_vt_changelineattributes_lineart, |
5129 | 15 | { "Line Art", "isobus.vt.change_line_attributes.line_art", |
5130 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5131 | 15 | NULL, HFILL } |
5132 | 15 | }, |
5133 | 15 | { &hf_isobus_vt_changelineattributes_errorcodes, |
5134 | 15 | { "Error Codes", "isobus.vt.change_line_attributes.error_codes", |
5135 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5136 | 15 | NULL, HFILL } |
5137 | 15 | }, |
5138 | 15 | { &hf_isobus_vt_changefillattributes_objectid, |
5139 | 15 | { "Object ID", "isobus.vt.change_fill_attributes.object_id", |
5140 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5141 | 15 | NULL, HFILL } |
5142 | 15 | }, |
5143 | 15 | { &hf_isobus_vt_changefillattributes_filltype, |
5144 | 15 | { "Fill Type", "isobus.vt.change_fill_attributes.fill_type", |
5145 | 15 | FT_UINT8, BASE_DEC | BASE_RANGE_STRING, RVALS(vt_colours), 0x0, |
5146 | 15 | NULL, HFILL } |
5147 | 15 | }, |
5148 | 15 | { &hf_isobus_vt_changefillattributes_fillcolour, |
5149 | 15 | { "Fill Colour", "isobus.vt.change_fill_attributes.fill_colour", |
5150 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5151 | 15 | NULL, HFILL } |
5152 | 15 | }, |
5153 | 15 | { &hf_isobus_vt_changefillattributes_fillpatternobjectid, |
5154 | 15 | { "Fill Pattern Object ID", "isobus.vt.change_fill_attributes.fill_pattern_object_id", |
5155 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5156 | 15 | NULL, HFILL } |
5157 | 15 | }, |
5158 | 15 | { &hf_isobus_vt_changefillattributes_errorcodes, |
5159 | 15 | { "Error Codes", "isobus.vt.change_fill_attributes.error_codes", |
5160 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5161 | 15 | NULL, HFILL } |
5162 | 15 | }, |
5163 | 15 | { &hf_isobus_vt_changeactivemask_workingset, |
5164 | 15 | { "Working Set Object ID", "isobus.vt.chg_active_mask.working_set_object_id", |
5165 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5166 | 15 | NULL, HFILL } |
5167 | 15 | }, |
5168 | 15 | { &hf_isobus_vt_changeactivemask_newactivemask, |
5169 | 15 | { "New Active Mask Object ID", "isobus.vt.chg_active_mask.new_active_mask_object_id", |
5170 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5171 | 15 | NULL, HFILL } |
5172 | 15 | }, |
5173 | 15 | { &hf_isobus_vt_changeactivemask_errorcodes, |
5174 | 15 | { "Error Codes", "isobus.vt.chg_active_mask.error_codes", |
5175 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5176 | 15 | NULL, HFILL } |
5177 | 15 | }, |
5178 | 15 | { &hf_isobus_vt_changesoftkeymask_masktype, |
5179 | 15 | { "Mask Type", "isobus.vt.change_soft_key_mask.mask_type", |
5180 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5181 | 15 | NULL, HFILL } |
5182 | 15 | }, |
5183 | 15 | { &hf_isobus_vt_changesoftkeymask_datamaskobjectid, |
5184 | 15 | { "Working Set Object ID", "isobus.vt.change_soft_key_mask.data_mask_object_id", |
5185 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5186 | 15 | NULL, HFILL } |
5187 | 15 | }, |
5188 | 15 | { &hf_isobus_vt_changesoftkeymask_newsoftkeymaskobjectid, |
5189 | 15 | { "New Active Mask Object ID", "isobus.vt.change_soft_key_mask.new_soft_key_mask_object_id", |
5190 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5191 | 15 | NULL, HFILL } |
5192 | 15 | }, |
5193 | 15 | { &hf_isobus_vt_changesoftkeymask_errorcodes, |
5194 | 15 | { "Error Codes", "isobus.vt.change_soft_key_mask.error_codes", |
5195 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5196 | 15 | NULL, HFILL } |
5197 | 15 | }, |
5198 | 15 | { &hf_isobus_vt_changeattributes_objectid, |
5199 | 15 | { "Object ID", "isobus.vt.change_attributes.object_id", |
5200 | 15 | FT_UINT16, BASE_DEC, VALS(object_id_strings), 0x0, |
5201 | 15 | NULL, HFILL } |
5202 | 15 | }, |
5203 | 15 | { &hf_isobus_vt_changeattributes_attributeid, |
5204 | 15 | { "Attribute ID", "isobus.vt.change_attributes.attribute_id", |
5205 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5206 | 15 | NULL, HFILL } |
5207 | 15 | }, |
5208 | 15 | { &hf_isobus_vt_changeattributes_newvalue, |
5209 | 15 | { "New Value For Attribute", "isobus.vt.change_attributes.new_active_mask", |
5210 | 15 | FT_UINT32, BASE_DEC_HEX, NULL, 0x0, |
5211 | 15 | NULL, HFILL } |
5212 | 15 | }, |
5213 | 15 | { &hf_isobus_vt_changeattributes_errorcodes, |
5214 | 15 | { "Error Codes", "isobus.vt.change_attributes.error_codes", |
5215 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5216 | 15 | NULL, HFILL } |
5217 | 15 | }, |
5218 | 15 | { &hf_isobus_vt_changepriority_objectid, |
5219 | 15 | { "Object ID", "isobus.vt.change_priority.object_id", |
5220 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5221 | 15 | NULL, HFILL } |
5222 | 15 | }, |
5223 | 15 | { &hf_isobus_vt_changepriority_newpriority, |
5224 | 15 | { "New Priority", "isobus.vt.change_priority.new_priority", |
5225 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5226 | 15 | NULL, HFILL } |
5227 | 15 | }, |
5228 | 15 | { &hf_isobus_vt_changepriority_errorcodes, |
5229 | 15 | { "Error Codes", "isobus.vt.change_priority.error_codes", |
5230 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5231 | 15 | NULL, HFILL } |
5232 | 15 | }, |
5233 | 15 | { &hf_isobus_vt_changelistitem_listobjectid, |
5234 | 15 | { "List Object ID", "isobus.vt.change_list_item.list_object_id", |
5235 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5236 | 15 | NULL, HFILL } |
5237 | 15 | }, |
5238 | 15 | { &hf_isobus_vt_changelistitem_listindex, |
5239 | 15 | { "List Index", "isobus.vt.change_list_item.list_index", |
5240 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5241 | 15 | NULL, HFILL } |
5242 | 15 | }, |
5243 | 15 | { &hf_isobus_vt_changelistitem_newobjectid, |
5244 | 15 | { "New Object ID", "isobus.vt.change_list_item.new_object_id", |
5245 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5246 | 15 | NULL, HFILL } |
5247 | 15 | }, |
5248 | 15 | { &hf_isobus_vt_changelistitem_errorcodes, |
5249 | 15 | { "Error Codes", "isobus.vt.change_list_item.error_codes", |
5250 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5251 | 15 | NULL, HFILL } |
5252 | 15 | }, |
5253 | 15 | { &hf_isobus_vt_deleteobjectpool_errorcodes, |
5254 | 15 | { "Error Codes", "isobus.vt.delete_object_pool.error_codes", |
5255 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5256 | 15 | NULL, HFILL } |
5257 | 15 | }, |
5258 | 15 | { &hf_isobus_vt_chgstrval_objectid, |
5259 | 15 | { "Object ID", "isobus.vt.change_string_value.object_id", |
5260 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5261 | 15 | NULL, HFILL } |
5262 | 15 | }, |
5263 | 15 | { &hf_isobus_vt_chgstrval_length, |
5264 | 15 | { "Length", "isobus.vt.change_string_value.length", |
5265 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5266 | 15 | NULL, HFILL } |
5267 | 15 | }, |
5268 | 15 | { &hf_isobus_vt_chgstrval_errorcodes, |
5269 | 15 | { "Error Codes", "isobus.vt.change_string_value.error_codes", |
5270 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5271 | 15 | NULL, HFILL } |
5272 | 15 | }, |
5273 | 15 | { &hf_isobus_vt_chgstrval_value, |
5274 | 15 | { "Value", "isobus.vt.change_string_value.value", |
5275 | 15 | FT_STRING, BASE_NONE, NULL, 0x0, |
5276 | 15 | NULL, HFILL } |
5277 | 15 | }, |
5278 | 15 | { &hf_isobus_vt_changebackgroundcolour_objectid, |
5279 | 15 | { "Object ID", "isobus.vt.change_background_colour.object_id", |
5280 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5281 | 15 | NULL, HFILL } |
5282 | 15 | }, |
5283 | 15 | { &hf_isobus_vt_changebackgroundcolour_errorcodes, |
5284 | 15 | { "Error Codes", "isobus.vt.change_background_colour.error_codes", |
5285 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5286 | 15 | NULL, HFILL } |
5287 | 15 | }, |
5288 | 15 | { &hf_isobus_vt_changebackgroundcolour_colour, |
5289 | 15 | { "Colour", "isobus.vt.change_background_colour.colour", |
5290 | 15 | FT_UINT8, BASE_DEC | BASE_RANGE_STRING, RVALS(vt_colours), 0x0, |
5291 | 15 | NULL, HFILL } |
5292 | 15 | }, |
5293 | 15 | { &hf_isobus_vt_changeobjectlabel_objectid, |
5294 | 15 | { "Object ID", "isobus.vt.change_object_label.object_id", |
5295 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5296 | 15 | NULL, HFILL } |
5297 | 15 | }, |
5298 | 15 | { &hf_isobus_vt_changeobjectlabel_stringobjectid, |
5299 | 15 | { "String Object ID", "isobus.vt.change_object_label.string_object_id", |
5300 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5301 | 15 | NULL, HFILL } |
5302 | 15 | }, |
5303 | 15 | { &hf_isobus_vt_changeobjectlabel_fonttype, |
5304 | 15 | { "Colour", "isobus.vt.change_object_label.colour", |
5305 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5306 | 15 | NULL, HFILL } |
5307 | 15 | }, |
5308 | 15 | { &hf_isobus_vt_changeobjectlabel_graphicobjectid, |
5309 | 15 | { "Graphics Representation Object ID", "isobus.vt.change_object_label.graphic_representation_object_id", |
5310 | 15 | FT_UINT16, BASE_DEC, VALS(object_id_strings), 0x0, |
5311 | 15 | NULL, HFILL } |
5312 | 15 | }, |
5313 | 15 | { &hf_isobus_vt_changeobjectlabel_errorcodes, |
5314 | 15 | { "Error Codes", "isobus.vt.change_object_label.error_codes", |
5315 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5316 | 15 | NULL, HFILL } |
5317 | 15 | }, |
5318 | 15 | { &hf_isobus_vt_changepolygonpoint_objectid, |
5319 | 15 | { "Object ID", "isobus.vt.change_polygon_point.object_id", |
5320 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5321 | 15 | NULL, HFILL } |
5322 | 15 | }, |
5323 | 15 | { &hf_isobus_vt_changepolygonpoint_pointindex, |
5324 | 15 | { "Point Index", "isobus.vt.change_polygon_point.point_index", |
5325 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5326 | 15 | NULL, HFILL } |
5327 | 15 | }, |
5328 | 15 | { &hf_isobus_vt_changepolygonpoint_xvalue, |
5329 | 15 | { "X Value", "isobus.vt.change_polygon_point.x_value", |
5330 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5331 | 15 | NULL, HFILL } |
5332 | 15 | }, |
5333 | 15 | { &hf_isobus_vt_changepolygonpoint_yvalue, |
5334 | 15 | { "Y Value", "isobus.vt.change_polygon_point.y_value", |
5335 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5336 | 15 | NULL, HFILL } |
5337 | 15 | }, |
5338 | 15 | { &hf_isobus_vt_changepolygonpoint_errorcodes, |
5339 | 15 | { "Error Codes", "isobus.vt.change_polygon_point.error_codes", |
5340 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5341 | 15 | NULL, HFILL } |
5342 | 15 | }, |
5343 | 15 | { &hf_isobus_vt_changepolygonscale_objectid, |
5344 | 15 | { "Object ID", "isobus.vt.change_polygon_scale.object_id", |
5345 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5346 | 15 | NULL, HFILL } |
5347 | 15 | }, |
5348 | 15 | { &hf_isobus_vt_changepolygonscale_newwidth, |
5349 | 15 | { "New Width", "isobus.vt.change_polygon_scale.new_width", |
5350 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5351 | 15 | NULL, HFILL } |
5352 | 15 | }, |
5353 | 15 | { &hf_isobus_vt_changepolygonscale_newheight, |
5354 | 15 | { "New Height", "isobus.vt.change_polygon_scale.new_height", |
5355 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5356 | 15 | NULL, HFILL } |
5357 | 15 | }, |
5358 | 15 | { &hf_isobus_vt_changepolygonscale_errorcodes, |
5359 | 15 | { "Error Codes", "isobus.vt.change_polygon_scale.error_codes", |
5360 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5361 | 15 | NULL, HFILL } |
5362 | 15 | }, |
5363 | 15 | { &hf_isobus_vt_graphicscontext_objectid, |
5364 | 15 | { "Object ID", "isobus.vt.graphics_context.object_id", |
5365 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5366 | 15 | NULL, HFILL } |
5367 | 15 | }, |
5368 | 15 | { &hf_isobus_vt_graphicscontext_subcommandid, |
5369 | 15 | { "Sub Command ID", "isobus.vt.graphics_context.sub_command_id", |
5370 | 15 | FT_UINT8, BASE_DEC | BASE_EXT_STRING, &graphics_context_sub_command_id_ext, 0x0, |
5371 | 15 | NULL, HFILL } |
5372 | 15 | }, |
5373 | 15 | { &hf_isobus_vt_graphicscontext_setgraphicscursor_xposition, |
5374 | 15 | { "X Position", "isobus.vt.graphics_context.set_graphics_cursor.x_position", |
5375 | 15 | FT_INT16, BASE_DEC, NULL, 0x0, |
5376 | 15 | NULL, HFILL } |
5377 | 15 | }, |
5378 | 15 | { &hf_isobus_vt_graphicscontext_setgraphicscursor_yposition, |
5379 | 15 | { "Y Position", "isobus.vt.graphics_context.set_graphics_cursor.y_position", |
5380 | 15 | FT_INT16, BASE_DEC, NULL, 0x0, |
5381 | 15 | NULL, HFILL } |
5382 | 15 | }, |
5383 | 15 | { &hf_isobus_vt_graphicscontext_movegraphicscursor_xoffset, |
5384 | 15 | { "X Offset", "isobus.vt.graphics_context.move_graphics_cursor.x_offset", |
5385 | 15 | FT_INT16, BASE_DEC, NULL, 0x0, |
5386 | 15 | NULL, HFILL } |
5387 | 15 | }, |
5388 | 15 | { &hf_isobus_vt_graphicscontext_movegraphicscursor_yoffset, |
5389 | 15 | { "Y Offset", "isobus.vt.graphics_context.move_graphics_cursor.y_offset", |
5390 | 15 | FT_INT16, BASE_DEC, NULL, 0x0, |
5391 | 15 | NULL, HFILL } |
5392 | 15 | }, |
5393 | 15 | { &hf_isobus_vt_graphicscontext_setforegroundcolour_colour, |
5394 | 15 | { "Colour", "isobus.vt.graphics_context.set_foreground_colour.colour", |
5395 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5396 | 15 | NULL, HFILL } |
5397 | 15 | }, |
5398 | 15 | { &hf_isobus_vt_graphicscontext_setbackgroundcolour_colour, |
5399 | 15 | { "Colour", "isobus.vt.graphics_context.set_background_colour.colour", |
5400 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5401 | 15 | NULL, HFILL } |
5402 | 15 | }, |
5403 | 15 | { &hf_isobus_vt_graphicscontext_setlineattributesobjectid_objectid, |
5404 | 15 | { "Object ID", "isobus.vt.graphics_context.set_line_attributes_object_id.object_id", |
5405 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5406 | 15 | NULL, HFILL } |
5407 | 15 | }, |
5408 | 15 | { &hf_isobus_vt_graphicscontext_setfillattributesobjectid_objectid, |
5409 | 15 | { "Object ID", "isobus.vt.graphics_context.set_fill_attributes_object_id.object_id", |
5410 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5411 | 15 | NULL, HFILL } |
5412 | 15 | }, |
5413 | 15 | { &hf_isobus_vt_graphicscontext_setfontattributesobjectid_objectid, |
5414 | 15 | { "Object ID", "isobus.vt.graphics_context.set_font_attributes_object_id.object_id", |
5415 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5416 | 15 | NULL, HFILL } |
5417 | 15 | }, |
5418 | 15 | { &hf_isobus_vt_graphicscontext_eraserectangle_width, |
5419 | 15 | { "Width", "isobus.vt.graphics_context.erase_rectangle.width", |
5420 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5421 | 15 | NULL, HFILL } |
5422 | 15 | }, |
5423 | 15 | { &hf_isobus_vt_graphicscontext_eraserectangle_height, |
5424 | 15 | { "Height", "isobus.vt.graphics_context.erase_rectangle.height", |
5425 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5426 | 15 | NULL, HFILL } |
5427 | 15 | }, |
5428 | 15 | { &hf_isobus_vt_graphicscontext_drawpoint_xoffset, |
5429 | 15 | { "X Offset", "isobus.vt.graphics_context.draw_point.x_offset", |
5430 | 15 | FT_INT16, BASE_DEC, NULL, 0x0, |
5431 | 15 | NULL, HFILL } |
5432 | 15 | }, |
5433 | 15 | { &hf_isobus_vt_graphicscontext_drawpoint_yoffset, |
5434 | 15 | { "Y Offset", "isobus.vt.graphics_context.draw_point.y_offset", |
5435 | 15 | FT_INT16, BASE_DEC, NULL, 0x0, |
5436 | 15 | NULL, HFILL } |
5437 | 15 | }, |
5438 | 15 | { &hf_isobus_vt_graphicscontext_drawline_xoffset, |
5439 | 15 | { "X Offset", "isobus.vt.graphics_context.draw_line.x_offset", |
5440 | 15 | FT_INT16, BASE_DEC, NULL, 0x0, |
5441 | 15 | NULL, HFILL } |
5442 | 15 | }, |
5443 | 15 | { &hf_isobus_vt_graphicscontext_drawline_yoffset, |
5444 | 15 | { "Y Offset", "isobus.vt.graphics_context.draw_line.y_offset", |
5445 | 15 | FT_INT16, BASE_DEC, NULL, 0x0, |
5446 | 15 | NULL, HFILL } |
5447 | 15 | }, |
5448 | 15 | { &hf_isobus_vt_graphicscontext_drawrectangle_width, |
5449 | 15 | { "Width", "isobus.vt.graphics_context.draw_rectangle.width", |
5450 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5451 | 15 | NULL, HFILL } |
5452 | 15 | }, |
5453 | 15 | { &hf_isobus_vt_graphicscontext_drawrectangle_height, |
5454 | 15 | { "Height", "isobus.vt.graphics_context.draw_rectangle.height", |
5455 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5456 | 15 | NULL, HFILL } |
5457 | 15 | }, |
5458 | 15 | { &hf_isobus_vt_graphicscontext_drawclosedellipse_width, |
5459 | 15 | { "Width", "isobus.vt.graphics_context.draw_closed_rectangle.width", |
5460 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5461 | 15 | NULL, HFILL } |
5462 | 15 | }, |
5463 | 15 | { &hf_isobus_vt_graphicscontext_drawclosedellipse_height, |
5464 | 15 | { "Height", "isobus.vt.graphics_context.draw_closed_rectangle.height", |
5465 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5466 | 15 | NULL, HFILL } |
5467 | 15 | }, |
5468 | 15 | { &hf_isobus_vt_graphicscontext_drawpolygon_numberofpoints, |
5469 | 15 | { "Number of polygon points", "isobus.vt.graphics_context.draw_polygon.number_of_points", |
5470 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5471 | 15 | NULL, HFILL } |
5472 | 15 | }, |
5473 | 15 | { &hf_isobus_vt_graphicscontext_drawpolygon_point_xoffset, |
5474 | 15 | { "X Offset", "isobus.vt.graphics_context.draw_polygon.point.x_offset", |
5475 | 15 | FT_INT16, BASE_DEC, NULL, 0x0, |
5476 | 15 | NULL, HFILL } |
5477 | 15 | }, |
5478 | 15 | { &hf_isobus_vt_graphicscontext_drawpolygon_point_yoffset, |
5479 | 15 | { "Y Offset", "isobus.vt.graphics_context.draw_polygon.point.y_offset", |
5480 | 15 | FT_INT16, BASE_DEC, NULL, 0x0, |
5481 | 15 | NULL, HFILL } |
5482 | 15 | }, |
5483 | 15 | { &hf_isobus_vt_graphicscontext_drawtext_background, |
5484 | 15 | { "Background", "isobus.vt.graphics_context.draw_text.point.background", |
5485 | 15 | FT_UINT8, BASE_DEC, VALS(draw_text_background), 0x0, |
5486 | 15 | NULL, HFILL } |
5487 | 15 | }, |
5488 | 15 | { &hf_isobus_vt_graphicscontext_drawtext_numberofbytes, |
5489 | 15 | { "Number of Bytes", "isobus.vt.graphics_context.draw_text.point.number_of_bytes", |
5490 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5491 | 15 | NULL, HFILL } |
5492 | 15 | }, |
5493 | 15 | { &hf_isobus_vt_graphicscontext_drawtext_textstring, |
5494 | 15 | { "Text string", "isobus.vt.graphics_context.draw_text.point.text_string", |
5495 | 15 | FT_STRING, BASE_NONE, NULL, 0x0, |
5496 | 15 | NULL, HFILL } |
5497 | 15 | }, |
5498 | 15 | { &hf_isobus_vt_graphicscontext_panviewport_viewportx, |
5499 | 15 | { "Viewport X", "isobus.vt.graphics_context.pan_viewport.viewport_x", |
5500 | 15 | FT_INT16, BASE_DEC, NULL, 0x0, |
5501 | 15 | NULL, HFILL } |
5502 | 15 | }, |
5503 | 15 | { &hf_isobus_vt_graphicscontext_panviewport_viewporty, |
5504 | 15 | { "Viewport Y", "isobus.vt.graphics_context.pan_viewport.viewport_y", |
5505 | 15 | FT_INT16, BASE_DEC, NULL, 0x0, |
5506 | 15 | NULL, HFILL } |
5507 | 15 | }, |
5508 | 15 | { &hf_isobus_vt_graphicscontext_zoomviewport_zoomvalue, |
5509 | 15 | { "Zoom Value", "isobus.vt.graphics_context.zoom_viewport.zoom_value", |
5510 | 15 | FT_FLOAT, BASE_NONE, NULL, 0x0, |
5511 | 15 | NULL, HFILL } |
5512 | 15 | }, |
5513 | 15 | { &hf_isobus_vt_graphicscontext_panandzoomviewport_viewportx, |
5514 | 15 | { "Viewport X", "isobus.vt.graphics_context.pan_and_zoom_viewport.viewport_x", |
5515 | 15 | FT_INT16, BASE_DEC, NULL, 0x0, |
5516 | 15 | NULL, HFILL } |
5517 | 15 | }, |
5518 | 15 | { &hf_isobus_vt_graphicscontext_panandzoomviewport_viewporty, |
5519 | 15 | { "Viewport Y", "isobus.vt.graphics_context.pan_and_zoom_viewport.viewport_y", |
5520 | 15 | FT_INT16, BASE_DEC, NULL, 0x0, |
5521 | 15 | NULL, HFILL } |
5522 | 15 | }, |
5523 | 15 | { &hf_isobus_vt_graphicscontext_panandzoomviewport_zoomvalue, |
5524 | 15 | { "Zoom Value", "isobus.vt.graphics_context.pan_and_zoom_viewport.zoom_value", |
5525 | 15 | FT_FLOAT, BASE_NONE, NULL, 0x0, |
5526 | 15 | NULL, HFILL } |
5527 | 15 | }, |
5528 | 15 | { &hf_isobus_vt_graphicscontext_changeviewportsize_newwidth, |
5529 | 15 | { "New Width", "isobus.vt.graphics_context.change_viewport_size.new_width", |
5530 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5531 | 15 | NULL, HFILL } |
5532 | 15 | }, |
5533 | 15 | { &hf_isobus_vt_graphicscontext_changeviewportsize_newheight, |
5534 | 15 | { "New Height", "isobus.vt.graphics_context.change_viewport_size.new_height", |
5535 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5536 | 15 | NULL, HFILL } |
5537 | 15 | }, |
5538 | 15 | { &hf_isobus_vt_graphicscontext_drawvtobject_objectid, |
5539 | 15 | { "Object ID", "isobus.vt.graphics_context.draw_vt_object.object_id", |
5540 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5541 | 15 | NULL, HFILL } |
5542 | 15 | }, |
5543 | 15 | { &hf_isobus_vt_graphicscontext_copycanvastopicturegraphic_objectidpicturegraphic, |
5544 | 15 | { "Object ID of Picture Graphic", "isobus.vt.graphics_context.copy_canvas_to_picture_graphic.object_id_picture_graphic", |
5545 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5546 | 15 | NULL, HFILL } |
5547 | 15 | }, |
5548 | 15 | { &hf_isobus_vt_graphicscontext_copyviewporttopicturegraphic_objectidpicturegraphic, |
5549 | 15 | { "Object ID of Picture Graphic", "isobus.vt.graphics_context.copy_viewport_to_picture_graphic.object_id_picture_graphic", |
5550 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5551 | 15 | NULL, HFILL } |
5552 | 15 | }, |
5553 | 15 | { &hf_isobus_vt_getattributevalue_objectid, |
5554 | 15 | { "Object ID", "isobus.vt.get_attribute_value.object_id", |
5555 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5556 | 15 | NULL, HFILL } |
5557 | 15 | }, |
5558 | 15 | { &hf_isobus_vt_getattributevalue_attributeid, |
5559 | 15 | { "Attribute ID", "isobus.vt.get_attribute_value.attribute_id", |
5560 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5561 | 15 | NULL, HFILL } |
5562 | 15 | }, |
5563 | 15 | { &hf_isobus_vt_getattributevalue_value, |
5564 | 15 | { "Value", "isobus.vt.get_attribute_value.value", |
5565 | 15 | FT_UINT32, BASE_DEC_HEX, NULL, 0x0, |
5566 | 15 | NULL, HFILL } |
5567 | 15 | }, |
5568 | 15 | { &hf_isobus_vt_getattributevalue_errorcodes, |
5569 | 15 | { "Error Codes", "isobus.vt.get_attribute_value.error_codes", |
5570 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5571 | 15 | NULL, HFILL } |
5572 | 15 | }, |
5573 | 15 | { &hf_isobus_vt_selectcolourmap_objectid, |
5574 | 15 | { "Object ID", "isobus.vt.select_colour_map.object_id", |
5575 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5576 | 15 | NULL, HFILL } |
5577 | 15 | }, |
5578 | 15 | { &hf_isobus_vt_selectcolourmap_errorcodes, |
5579 | 15 | { "Error Codes", "isobus.vt.select_colour_map.error_codes", |
5580 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5581 | 15 | NULL, HFILL } |
5582 | 15 | }, |
5583 | 15 | { &hf_isobus_vt_executeextendedmacro_objectid, |
5584 | 15 | { "Object ID", "isobus.vt.execute_extended_macro.object_id", |
5585 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5586 | 15 | NULL, HFILL } |
5587 | 15 | }, |
5588 | 15 | { &hf_isobus_vt_executeextendedmacro_errorcodes, |
5589 | 15 | { "Error Codes", "isobus.vt.execute_extended_macro.error_codes", |
5590 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5591 | 15 | NULL, HFILL } |
5592 | 15 | }, |
5593 | 15 | { &hf_isobus_vt_lockunlockmask_command, |
5594 | 15 | { "Command", "isobus.vt.lock_unlock_mask.command", |
5595 | 15 | FT_UINT8, BASE_DEC, VALS(lock_unlock), 0x0, |
5596 | 15 | NULL, HFILL } |
5597 | 15 | }, |
5598 | 15 | { &hf_isobus_vt_lockunlockmask_objectid, |
5599 | 15 | { "Object ID", "isobus.vt.lock_unlock_mask.object_id", |
5600 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5601 | 15 | NULL, HFILL } |
5602 | 15 | }, |
5603 | 15 | { &hf_isobus_vt_lockunlockmask_locktimeout, |
5604 | 15 | { "Lock Timeout", "isobus.vt.lock_unlock_mask.lock_timeout", |
5605 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5606 | 15 | NULL, HFILL } |
5607 | 15 | }, |
5608 | 15 | { &hf_isobus_vt_lockunlockmask_errorcodes, |
5609 | 15 | { "Error Codes", "isobus.vt.lock_unlock_mask.error_codes", |
5610 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5611 | 15 | NULL, HFILL } |
5612 | 15 | }, |
5613 | 15 | { &hf_isobus_vt_executemacro_objectid, |
5614 | 15 | { "Object ID", "isobus.vt.execute_macro.object_id", |
5615 | 15 | FT_UINT8, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
5616 | 15 | NULL, HFILL } |
5617 | 15 | }, |
5618 | 15 | { &hf_isobus_vt_executemacro_errorcodes, |
5619 | 15 | { "Error Codes", "isobus.vt.execute_macro.error_codes", |
5620 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5621 | 15 | NULL, HFILL } |
5622 | 15 | }, |
5623 | 15 | { &hf_isobus_vt_getmemory_memoryrequired, |
5624 | 15 | { "Memory Required", "isobus.vt.get_memory.memory_required", |
5625 | 15 | FT_UINT32, BASE_DEC, NULL, 0x0, |
5626 | 15 | NULL, HFILL } |
5627 | 15 | }, |
5628 | 15 | { &hf_isobus_vt_getmemory_vtversion, |
5629 | 15 | { "VT Version", "isobus.vt.get_memory.vt_version", |
5630 | 15 | FT_UINT8, BASE_DEC, VALS(vt_versions_extended), 0x0, |
5631 | 15 | NULL, HFILL } |
5632 | 15 | }, |
5633 | 15 | { &hf_isobus_vt_getmemory_status, |
5634 | 15 | { "Status", "isobus.vt.get_memory.status", |
5635 | 15 | FT_UINT8, BASE_DEC, VALS(memory_status), 0x0, |
5636 | 15 | NULL, HFILL } |
5637 | 15 | }, |
5638 | 15 | { &hf_isobus_vt_getsupportedwidechars_codeplane, |
5639 | 15 | { "Code Plane", "isobus.vt.get_supported_widechars.code_plane", |
5640 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5641 | 15 | NULL, HFILL } |
5642 | 15 | }, |
5643 | 15 | { &hf_isobus_vt_getsupportedwidechars_firstwidechar, |
5644 | 15 | { "First Widechar", "isobus.vt.get_supported_widechars.first_widechar", |
5645 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5646 | 15 | NULL, HFILL } |
5647 | 15 | }, |
5648 | 15 | { &hf_isobus_vt_getsupportedwidechars_lastwidechar, |
5649 | 15 | { "Last Widechar", "isobus.vt.get_supported_widechars.last_widechar", |
5650 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5651 | 15 | NULL, HFILL } |
5652 | 15 | }, |
5653 | 15 | { &hf_isobus_vt_getsupportedwidechars_errorcodes, |
5654 | 15 | { "Error Codes", "isobus.vt.get_supported_widechars.error_codes", |
5655 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5656 | 15 | NULL, HFILL } |
5657 | 15 | }, |
5658 | 15 | { &hf_isobus_vt_getsupportedwidechars_numberofranges, |
5659 | 15 | { "Number of Ranges", "isobus.vt.get_supported_widechars.number_of_ranges", |
5660 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5661 | 15 | NULL, HFILL } |
5662 | 15 | }, |
5663 | 15 | { &hf_isobus_vt_getsupportedwidechars_firstavailablewidechar, |
5664 | 15 | { "First Available Widechar", "isobus.vt.get_supported_widechars.first_available_widechar", |
5665 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5666 | 15 | NULL, HFILL } |
5667 | 15 | }, |
5668 | 15 | { &hf_isobus_vt_getsupportedwidechars_lastavailablewidechar, |
5669 | 15 | { "Last Available Widechar", "isobus.vt.get_supported_widechars.last_available_widechar", |
5670 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5671 | 15 | NULL, HFILL } |
5672 | 15 | }, |
5673 | 15 | { &hf_isobus_vt_getnumberofsoftkeys_navigationsoftkeys, |
5674 | 15 | { "Navigation Soft Keys", "isobus.vt.get_number_of_soft_keys.navigation_soft_keys", |
5675 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5676 | 15 | NULL, HFILL } |
5677 | 15 | }, |
5678 | 15 | { &hf_isobus_vt_getnumberofsoftkeys_xdots, |
5679 | 15 | { "X Dots", "isobus.vt.get_number_of_soft_keys.x_dots", |
5680 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5681 | 15 | NULL, HFILL } |
5682 | 15 | }, |
5683 | 15 | { &hf_isobus_vt_getnumberofsoftkeys_ydots, |
5684 | 15 | { "Y Dots", "isobus.vt.get_number_of_soft_keys.y_dots", |
5685 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5686 | 15 | NULL, HFILL } |
5687 | 15 | }, |
5688 | 15 | { &hf_isobus_vt_getnumberofsoftkeys_virtualsoftkeys, |
5689 | 15 | { "Virtual Soft Keys", "isobus.vt.get_number_of_soft_keys.virtual_soft_keys", |
5690 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5691 | 15 | NULL, HFILL } |
5692 | 15 | }, |
5693 | 15 | { &hf_isobus_vt_getnumberofsoftkeys_physicalsoftkeys, |
5694 | 15 | { "Physical Soft Keys", "isobus.vt.get_number_of_soft_keys.physical_soft_keys", |
5695 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5696 | 15 | NULL, HFILL } |
5697 | 15 | }, |
5698 | 15 | { &hf_isobus_vt_gettextfontdata_smallfontsizes, |
5699 | 15 | { "Small Font Sizes", "isobus.vt.get_text_font_data.small_font_sizes", |
5700 | 15 | FT_UINT8, BASE_HEX, NULL, 0x00, |
5701 | 15 | NULL, HFILL } |
5702 | 15 | }, |
5703 | 15 | { &hf_isobus_vt_gettextfontdata_smallfontsizes_font8x8, |
5704 | 15 | { "Font 8 x 8", "isobus.vt.get_text_font_data.small_font_sizes.font_8x8", |
5705 | 15 | FT_UINT8, BASE_HEX, NULL, 0x01, |
5706 | 15 | NULL, HFILL } |
5707 | 15 | }, |
5708 | 15 | { &hf_isobus_vt_gettextfontdata_smallfontsizes_font8x12, |
5709 | 15 | { "Font 8 x 12", "isobus.vt.get_text_font_data.small_font_sizes.font_8x12", |
5710 | 15 | FT_UINT8, BASE_HEX, NULL, 0x02, |
5711 | 15 | NULL, HFILL } |
5712 | 15 | }, |
5713 | 15 | { &hf_isobus_vt_gettextfontdata_smallfontsizes_font12x16, |
5714 | 15 | { "Font 12 x 16", "isobus.vt.get_text_font_data.small_font_sizes.font_12x16", |
5715 | 15 | FT_UINT8, BASE_HEX, NULL, 0x04, |
5716 | 15 | NULL, HFILL } |
5717 | 15 | }, |
5718 | 15 | { &hf_isobus_vt_gettextfontdata_smallfontsizes_font16x16, |
5719 | 15 | { "Font 12 x 16", "isobus.vt.get_text_font_data.small_font_sizes.font_12x16", |
5720 | 15 | FT_UINT8, BASE_HEX, NULL, 0x08, |
5721 | 15 | NULL, HFILL } |
5722 | 15 | }, |
5723 | 15 | { &hf_isobus_vt_gettextfontdata_smallfontsizes_font16x24, |
5724 | 15 | { "Font 16 x 24", "isobus.vt.get_text_font_data.small_font_sizes.font_16x24", |
5725 | 15 | FT_UINT8, BASE_HEX, NULL, 0x10, |
5726 | 15 | NULL, HFILL } |
5727 | 15 | }, |
5728 | 15 | { &hf_isobus_vt_gettextfontdata_smallfontsizes_font24x32, |
5729 | 15 | { "Font 24 x 32", "isobus.vt.get_text_font_data.small_font_sizes.font_24x32", |
5730 | 15 | FT_UINT8, BASE_HEX, NULL, 0x20, |
5731 | 15 | NULL, HFILL } |
5732 | 15 | }, |
5733 | 15 | { &hf_isobus_vt_gettextfontdata_smallfontsizes_font32x32, |
5734 | 15 | { "Font 32 x 32", "isobus.vt.get_text_font_data.small_font_sizes.font_32x32", |
5735 | 15 | FT_UINT8, BASE_HEX, NULL, 0x40, |
5736 | 15 | NULL, HFILL } |
5737 | 15 | }, |
5738 | 15 | { &hf_isobus_vt_gettextfontdata_largefontsizes, |
5739 | 15 | { "Large Font Sizes", "isobus.vt.get_text_font_data.large_font_sizes", |
5740 | 15 | FT_UINT8, BASE_HEX, NULL, 0x00, |
5741 | 15 | NULL, HFILL } |
5742 | 15 | }, |
5743 | 15 | { &hf_isobus_vt_gettextfontdata_largefontsizes_font32x48, |
5744 | 15 | { "Font 32 x 48", "isobus.vt.get_text_font_data.large_font_sizes.font_32x48", |
5745 | 15 | FT_UINT8, BASE_HEX, NULL, 0x01, |
5746 | 15 | NULL, HFILL } |
5747 | 15 | }, |
5748 | 15 | { &hf_isobus_vt_gettextfontdata_largefontsizes_font48x64, |
5749 | 15 | { "Font 48 x 64", "isobus.vt.get_text_font_data.large_font_sizes.font_48x64", |
5750 | 15 | FT_UINT8, BASE_HEX, NULL, 0x02, |
5751 | 15 | NULL, HFILL } |
5752 | 15 | }, |
5753 | 15 | { &hf_isobus_vt_gettextfontdata_largefontsizes_font64x64, |
5754 | 15 | { "Font 64 x 64", "isobus.vt.get_text_font_data.large_font_sizes.font_64x64", |
5755 | 15 | FT_UINT8, BASE_HEX, NULL, 0x04, |
5756 | 15 | NULL, HFILL } |
5757 | 15 | }, |
5758 | 15 | { &hf_isobus_vt_gettextfontdata_largefontsizes_font64x96, |
5759 | 15 | { "Font 64 x 96", "isobus.vt.get_text_font_data.large_font_sizes.font_64x96", |
5760 | 15 | FT_UINT8, BASE_HEX, NULL, 0x08, |
5761 | 15 | NULL, HFILL } |
5762 | 15 | }, |
5763 | 15 | { &hf_isobus_vt_gettextfontdata_largefontsizes_font96x128, |
5764 | 15 | { "Font 96 x 128", "isobus.vt.get_text_font_data.large_font_sizes.font_96x128", |
5765 | 15 | FT_UINT8, BASE_HEX, NULL, 0x10, |
5766 | 15 | NULL, HFILL } |
5767 | 15 | }, |
5768 | 15 | { &hf_isobus_vt_gettextfontdata_largefontsizes_font128x128, |
5769 | 15 | { "Font 128 x 128", "isobus.vt.get_text_font_data.large_font_sizes.font_128x128", |
5770 | 15 | FT_UINT8, BASE_HEX, NULL, 0x20, |
5771 | 15 | NULL, HFILL } |
5772 | 15 | }, |
5773 | 15 | { &hf_isobus_vt_gettextfontdata_largefontsizes_font128x192, |
5774 | 15 | { "Font 128 x 192", "isobus.vt.get_text_font_data.large_font_sizes.font_128x192", |
5775 | 15 | FT_UINT8, BASE_HEX, NULL, 0x40, |
5776 | 15 | NULL, HFILL } |
5777 | 15 | }, |
5778 | 15 | { &hf_isobus_vt_gettextfontdata_typeattributes, |
5779 | 15 | { "Type Attributes", "isobus.vt.get_text_font_data.type_attributes", |
5780 | 15 | FT_UINT8, BASE_HEX, NULL, 0x00, |
5781 | 15 | NULL, HFILL } |
5782 | 15 | }, |
5783 | 15 | { &hf_isobus_vt_gettextfontdata_typeattributes_boldtext, |
5784 | 15 | { "Bold text", "isobus.vt.get_text_font_data.type_attributes.bold_text", |
5785 | 15 | FT_UINT8, BASE_HEX, NULL, 0x01, |
5786 | 15 | NULL, HFILL } |
5787 | 15 | }, |
5788 | 15 | { &hf_isobus_vt_gettextfontdata_typeattributes_crossedouttext, |
5789 | 15 | { "Crossed out text", "isobus.vt.get_text_font_data.type_attributes.crossed_out_text", |
5790 | 15 | FT_UINT8, BASE_HEX, NULL, 0x02, |
5791 | 15 | NULL, HFILL } |
5792 | 15 | }, |
5793 | 15 | { &hf_isobus_vt_gettextfontdata_typeattributes_underlinedtext, |
5794 | 15 | { "Underlined text", "isobus.vt.get_text_font_data.type_attributes.underlined_text", |
5795 | 15 | FT_UINT8, BASE_HEX, NULL, 0x04, |
5796 | 15 | NULL, HFILL } |
5797 | 15 | }, |
5798 | 15 | { &hf_isobus_vt_gettextfontdata_typeattributes_italicstext, |
5799 | 15 | { "Italics text", "isobus.vt.get_text_font_data.type_attributes.italics_text", |
5800 | 15 | FT_UINT8, BASE_HEX, NULL, 0x08, |
5801 | 15 | NULL, HFILL } |
5802 | 15 | }, |
5803 | 15 | { &hf_isobus_vt_gettextfontdata_typeattributes_invertedtext, |
5804 | 15 | { "Inverted text", "isobus.vt.get_text_font_data.type_attributes.inverted_text", |
5805 | 15 | FT_UINT8, BASE_HEX, NULL, 0x10, |
5806 | 15 | NULL, HFILL } |
5807 | 15 | }, |
5808 | 15 | { &hf_isobus_vt_gettextfontdata_typeattributes_flashinverted, |
5809 | 15 | { "Flash inverted", "isobus.vt.get_text_font_data.type_attributes.flash_inverted", |
5810 | 15 | FT_UINT8, BASE_HEX, NULL, 0x20, |
5811 | 15 | NULL, HFILL } |
5812 | 15 | }, |
5813 | 15 | { &hf_isobus_vt_gettextfontdata_typeattributes_flashhidden, |
5814 | 15 | { "Flash hidden", "isobus.vt.get_text_font_data.type_attributes.flash_hidden", |
5815 | 15 | FT_UINT8, BASE_HEX, NULL, 0x40, |
5816 | 15 | NULL, HFILL } |
5817 | 15 | }, |
5818 | 15 | { &hf_isobus_vt_gettextfontdata_typeattributes_proportionalfontrendering, |
5819 | 15 | { "Proportional font rendering", "isobus.vt.get_text_font_data.type_attributes.proportional_font_rendering", |
5820 | 15 | FT_UINT8, BASE_DEC, NULL, 0x40, |
5821 | 15 | NULL, HFILL } |
5822 | 15 | }, |
5823 | 15 | { &hf_isobus_vt_getwindowmaskdata_backgroundcolourdatamask, |
5824 | 15 | { "Background Colour Data Mask", "isobus.vt.get_window_mask_data.background_colour_data_mask", |
5825 | 15 | FT_UINT8, BASE_DEC | BASE_RANGE_STRING, RVALS(vt_colours), 0x0, |
5826 | 15 | NULL, HFILL } |
5827 | 15 | }, |
5828 | 15 | { &hf_isobus_vt_getwindowmaskdata_backgroundcoloursoftkeymask, |
5829 | 15 | { "Background Colour Soft Key Mask", "isobus.vt.get_window_mask_data.background_colour_soft_key_mask", |
5830 | 15 | FT_UINT8, BASE_DEC | BASE_RANGE_STRING, RVALS(vt_colours), 0x0, |
5831 | 15 | NULL, HFILL } |
5832 | 15 | }, |
5833 | 15 | { &hf_isobus_vt_getsupportedobjects_numberofbytes, |
5834 | 15 | { "Number of bytes", "isobus.vt.get_supported_objects.number_of_bytes", |
5835 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5836 | 15 | NULL, HFILL } |
5837 | 15 | }, |
5838 | 15 | { &hf_isobus_vt_getsupportedobjects_objecttype, |
5839 | 15 | { "Object Type", "isobus.vt.get_supported_objects.object_type", |
5840 | 15 | FT_UINT8, BASE_DEC | BASE_RANGE_STRING, RVALS(vt_object_types), 0x0, |
5841 | 15 | NULL, HFILL } |
5842 | 15 | }, |
5843 | 15 | { &hf_isobus_vt_gethardware_boottime, |
5844 | 15 | { "Boot time", "isobus.vt.get_hardware.boot_time", |
5845 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5846 | 15 | NULL, HFILL } |
5847 | 15 | }, |
5848 | 15 | { &hf_isobus_vt_gethardware_graphictype, |
5849 | 15 | { "Graphic type", "isobus.vt.get_hardware.graphic_type", |
5850 | 15 | FT_UINT8, BASE_DEC, VALS(graphic_types), 0x0, |
5851 | 15 | NULL, HFILL } |
5852 | 15 | }, |
5853 | 15 | { &hf_isobus_vt_gethardware_hardware, |
5854 | 15 | { "Hardware", "isobus.vt.get_hardware.hardware", |
5855 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5856 | 15 | NULL, HFILL } |
5857 | 15 | }, |
5858 | 15 | { &hf_isobus_vt_gethardware_hardware_touchscreen, |
5859 | 15 | { "Touch Screen", "isobus.vt.get_hardware.hardware.touch_screen", |
5860 | 15 | FT_UINT8, BASE_HEX, NULL, 0x01, |
5861 | 15 | NULL, HFILL } |
5862 | 15 | }, |
5863 | 15 | { &hf_isobus_vt_gethardware_hardware_pointingdevice, |
5864 | 15 | { "Pointing Device", "isobus.vt.get_hardware.hardware.pointing_device", |
5865 | 15 | FT_UINT8, BASE_HEX, NULL, 0x02, |
5866 | 15 | NULL, HFILL } |
5867 | 15 | }, |
5868 | 15 | { &hf_isobus_vt_gethardware_hardware_multifreqaudiooutput, |
5869 | 15 | { "Multiple frequency audio output", "isobus.vt.get_hardware.hardware.multiple_frequency_audio_output", |
5870 | 15 | FT_UINT8, BASE_HEX, NULL, 0x04, |
5871 | 15 | NULL, HFILL } |
5872 | 15 | }, |
5873 | 15 | { &hf_isobus_vt_gethardware_hardware_adjustvolumeaudiooutput, |
5874 | 15 | { "Adjustable volume audio output", "isobus.vt.get_hardware.hardware.adjustable_volume_audio_output", |
5875 | 15 | FT_UINT8, BASE_HEX, NULL, 0x08, |
5876 | 15 | NULL, HFILL } |
5877 | 15 | }, |
5878 | 15 | { &hf_isobus_vt_gethardware_hardware_simultaneousactivationphysicalsoftkeys, |
5879 | 15 | { "Simultaneous activation of physical soft keys", "isobus.vt.get_hardware.hardware.simultaneous_activation_physical_soft_keys", |
5880 | 15 | FT_UINT8, BASE_HEX, NULL, 0x10, |
5881 | 15 | NULL, HFILL } |
5882 | 15 | }, |
5883 | 15 | { &hf_isobus_vt_gethardware_hardware_simultaneousactivationbuttons, |
5884 | 15 | { "Simultaneous activation of buttons", "isobus.vt.get_hardware.hardware.simultaneous_activation_buttons", |
5885 | 15 | FT_UINT8, BASE_HEX, NULL, 0x20, |
5886 | 15 | NULL, HFILL } |
5887 | 15 | }, |
5888 | 15 | { &hf_isobus_vt_gethardware_hardware_dragoperation, |
5889 | 15 | { "Reports drag operation", "isobus.vt.get_hardware.hardware.drag_operation", |
5890 | 15 | FT_UINT8, BASE_HEX, NULL, 0x40, |
5891 | 15 | NULL, HFILL } |
5892 | 15 | }, |
5893 | 15 | { &hf_isobus_vt_gethardware_hardware_intermediatecoordinatesdrag, |
5894 | 15 | { "Intermediate coordinates during drag", "isobus.vt.get_hardware.hardware.intermediate_coordinates_drag", |
5895 | 15 | FT_UINT8, BASE_HEX, NULL, 0x80, |
5896 | 15 | NULL, HFILL } |
5897 | 15 | }, |
5898 | 15 | { &hf_isobus_vt_gethardware_xpixels, |
5899 | 15 | { "X - Pixels", "isobus.vt.get_hardware.x_pixels", |
5900 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5901 | 15 | NULL, HFILL } |
5902 | 15 | }, |
5903 | 15 | { &hf_isobus_vt_gethardware_ypixels, |
5904 | 15 | { "Y - Pixels", "isobus.vt.get_hardware.y_pixels", |
5905 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
5906 | 15 | NULL, HFILL } |
5907 | 15 | }, |
5908 | 15 | { &hf_isobus_vt_storeversion_versionlabel, |
5909 | 15 | { "Version Label", "isobus.vt.store_version.version_label", |
5910 | 15 | FT_STRING, BASE_NONE, NULL, 0x0, |
5911 | 15 | NULL, HFILL } |
5912 | 15 | }, |
5913 | 15 | { &hf_isobus_vt_storeversion_errorcodes, |
5914 | 15 | { "Error Codes", "isobus.vt.store_version.error_codes", |
5915 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5916 | 15 | NULL, HFILL } |
5917 | 15 | }, |
5918 | 15 | { &hf_isobus_vt_loadversion_versionlabel, |
5919 | 15 | { "Version Label", "isobus.vt.load_version.version_label", |
5920 | 15 | FT_STRING, BASE_NONE, NULL, 0x0, |
5921 | 15 | NULL, HFILL } |
5922 | 15 | }, |
5923 | 15 | { &hf_isobus_vt_loadversion_errorcodes, |
5924 | 15 | { "Error Codes", "isobus.vt.load_version.error_codes", |
5925 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5926 | 15 | NULL, HFILL } |
5927 | 15 | }, |
5928 | 15 | { &hf_isobus_vt_deleteversion_versionlabel, |
5929 | 15 | { "Version Label", "isobus.vt.delete_version.version_label", |
5930 | 15 | FT_STRING, BASE_NONE, NULL, 0x0, |
5931 | 15 | NULL, HFILL } |
5932 | 15 | }, |
5933 | 15 | { &hf_isobus_vt_deleteversion_errorcodes, |
5934 | 15 | { "Error Codes", "isobus.vt.delete_version.error_codes", |
5935 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5936 | 15 | NULL, HFILL } |
5937 | 15 | }, |
5938 | 15 | { &hf_isobus_vt_extendedgetversions_numberofversions, |
5939 | 15 | { "Number of versions", "isobus.vt.extended_get_versions.number_of_versions", |
5940 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5941 | 15 | NULL, HFILL } |
5942 | 15 | }, |
5943 | 15 | { &hf_isobus_vt_extendedgetversions_versionlabel, |
5944 | 15 | { "Version label", "isobus.vt.extended_get_versions.version_label", |
5945 | 15 | FT_STRING, BASE_NONE, NULL, 0x0, |
5946 | 15 | NULL, HFILL } |
5947 | 15 | }, |
5948 | 15 | { &hf_isobus_vt_extendedstoreversion_versionlabel, |
5949 | 15 | { "Version Label", "isobus.vt.extended_store_version.version_label", |
5950 | 15 | FT_STRING, BASE_NONE, NULL, 0x0, |
5951 | 15 | NULL, HFILL } |
5952 | 15 | }, |
5953 | 15 | { &hf_isobus_vt_extendedstoreversion_errorcodes, |
5954 | 15 | { "Error Codes", "isobus.vt.extended_store_version.error_codes", |
5955 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5956 | 15 | NULL, HFILL } |
5957 | 15 | }, |
5958 | 15 | { &hf_isobus_vt_extendedloadversion_versionlabel, |
5959 | 15 | { "Version Label", "isobus.vt.extended_load_version.version_label", |
5960 | 15 | FT_STRING, BASE_NONE, NULL, 0x0, |
5961 | 15 | NULL, HFILL } |
5962 | 15 | }, |
5963 | 15 | { &hf_isobus_vt_extendedloadversion_errorcodes, |
5964 | 15 | { "Error Codes", "isobus.vt.extended_load_version.error_codes", |
5965 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5966 | 15 | NULL, HFILL } |
5967 | 15 | }, |
5968 | 15 | { &hf_isobus_vt_extendeddeleteversion_versionlabel, |
5969 | 15 | { "Version Label", "isobus.vt.extended_delete_version.version_label", |
5970 | 15 | FT_STRING, BASE_NONE, NULL, 0x0, |
5971 | 15 | NULL, HFILL } |
5972 | 15 | }, |
5973 | 15 | { &hf_isobus_vt_extendeddeleteversion_errorcodes, |
5974 | 15 | { "Error Codes", "isobus.vt.extended_delete_version.error_codes", |
5975 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
5976 | 15 | NULL, HFILL } |
5977 | 15 | }, |
5978 | 15 | { &hf_isobus_vt_getversions_numberofversions, |
5979 | 15 | { "Number of versions", "isobus.vt.get_versions.number_of_versions", |
5980 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5981 | 15 | NULL, HFILL } |
5982 | 15 | }, |
5983 | 15 | { &hf_isobus_vt_getversions_versionlabel, |
5984 | 15 | { "Version label", "isobus.vt.get_versions.version_label", |
5985 | 15 | FT_STRING, BASE_NONE, NULL, 0x0, |
5986 | 15 | NULL, HFILL } |
5987 | 15 | }, |
5988 | 15 | { &hf_isobus_vt_unsupportedvtfunction_unsupportedvtfunction, |
5989 | 15 | { "Unsupported VT function", "isobus.vt.unsupported_vt_function.unsupported_vt_function", |
5990 | 15 | FT_UINT8, BASE_DEC | BASE_EXT_STRING, &vt_function_code_ext, 0x0, |
5991 | 15 | NULL, HFILL } |
5992 | 15 | }, |
5993 | 15 | { &hf_isobus_vt_vtstatus_workingsetmaster, |
5994 | 15 | { "Working Set Master", "isobus.vt.vtstatus.working_set_master", |
5995 | 15 | FT_UINT8, BASE_DEC, NULL, 0x0, |
5996 | 15 | NULL, HFILL } |
5997 | 15 | }, |
5998 | 15 | { &hf_isobus_vt_vtstatus_objectiddatamask, |
5999 | 15 | { "Object ID Data Mask", "isobus.vt.vtstatus.object_id_data_mask", |
6000 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
6001 | 15 | NULL, HFILL } |
6002 | 15 | }, |
6003 | 15 | { &hf_isobus_vt_vtstatus_objectidsoftkeymask, |
6004 | 15 | { "Object ID Soft Key Mask", "isobus.vt.vtstatus.object_id_soft_key_mask", |
6005 | 15 | FT_UINT16, BASE_DEC_HEX, VALS(object_id_strings), 0x0, |
6006 | 15 | NULL, HFILL } |
6007 | 15 | }, |
6008 | 15 | { &hf_isobus_vt_vtstatus_vtbusycodes, |
6009 | 15 | { "VT Busy Codes", "isobus.vt.vtstatus.vt_busy_codes", |
6010 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
6011 | 15 | NULL, HFILL } |
6012 | 15 | }, |
6013 | 15 | { &hf_isobus_vt_vtstatus_vtbusycodes_updatingvisiblemask, |
6014 | 15 | { "VT is busy updating visible mask", "isobus.vt.vtstatus.vt_busy_codes.updating_visible_mask", |
6015 | 15 | FT_UINT8, BASE_HEX, NULL, 0x80, |
6016 | 15 | NULL, HFILL } |
6017 | 15 | }, |
6018 | 15 | { &hf_isobus_vt_vtstatus_vtbusycodes_savingdata, |
6019 | 15 | { "VT is busy saving data to non-volatile memory","isobus.vt.vtstatus.vt_busy_codes.saving_data", |
6020 | 15 | FT_UINT8, BASE_HEX, NULL, 0x40, |
6021 | 15 | NULL, HFILL } |
6022 | 15 | }, |
6023 | 15 | { &hf_isobus_vt_vtstatus_vtbusycodes_executingcommand, |
6024 | 15 | { "VT is busy executing a command", "isobus.vt.vtstatus.vt_busy_codes.executing_commands", |
6025 | 15 | FT_UINT8, BASE_HEX, NULL, 0x20, |
6026 | 15 | NULL, HFILL } |
6027 | 15 | }, |
6028 | 15 | { &hf_isobus_vt_vtstatus_vtbusycodes_executingmacro, |
6029 | 15 | { "VT is busy executing a Macro", "isobus.vt.vtstatus.vt_busy_codes.executing_macro", |
6030 | 15 | FT_UINT8, BASE_HEX, NULL, 0x10, |
6031 | 15 | NULL, HFILL } |
6032 | 15 | }, |
6033 | 15 | { &hf_isobus_vt_vtstatus_vtbusycodes_parsingobjectpool, |
6034 | 15 | { "VT is busy parsing an object pool", "isobus.vt.vtstatus.vt_busy_codes.parsing_object_pool", |
6035 | 15 | FT_UINT8, BASE_HEX, NULL, 0x8, |
6036 | 15 | NULL, HFILL } |
6037 | 15 | }, |
6038 | 15 | { &hf_isobus_vt_vtstatus_vtbusycodes_auxcontrolsactive, |
6039 | 15 | { "Auxiliary controls learn mode active", "isobus.vt.vtstatus.vt_function_codes.aux_controls_active", |
6040 | 15 | FT_UINT8, BASE_HEX, NULL, 0x2, |
6041 | 15 | NULL, HFILL } |
6042 | 15 | }, |
6043 | 15 | { &hf_isobus_vt_vtstatus_vtbusycodes_outofmemory, |
6044 | 15 | { "VT is out of memory", "isobus.vt.vtstatus.vt_function_codes.out_of_memory", |
6045 | 15 | FT_UINT8, BASE_HEX, NULL, 0x1, |
6046 | 15 | NULL, HFILL } |
6047 | 15 | }, |
6048 | 15 | { &hf_isobus_vt_vtstatus_vtfunctioncodes, |
6049 | 15 | { "VT Function Codes", "isobus.vt.vtstatus.vt_function_codes", |
6050 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, |
6051 | 15 | NULL, HFILL } |
6052 | 15 | }, |
6053 | 15 | { &hf_isobus_vt_wrksetmain_bitmask, |
6054 | 15 | { "Bitmask", "isobus.vt.working_set_maintenance.bitmask", |
6055 | 15 | FT_UINT8, BASE_DEC, NULL, 0x80, |
6056 | 15 | NULL, HFILL } |
6057 | 15 | }, |
6058 | 15 | { &hf_isobus_vt_wrksetmain_version, |
6059 | 15 | { "Version", "isobus.vt.working_set_maintenance.version", |
6060 | 15 | FT_UINT8, BASE_DEC | BASE_RANGE_STRING, RVALS(vt_versions), 0x0, |
6061 | 15 | NULL, HFILL } |
6062 | 15 | }, |
6063 | 15 | { &hf_isobus_vt_screencapture_item, |
6064 | 15 | { "Item", "isobus.vt.screencapture.item", |
6065 | 15 | FT_UINT8, BASE_DEC | BASE_RANGE_STRING, RVALS(screencapture_items), 0x0, |
6066 | 15 | NULL, HFILL } |
6067 | 15 | }, |
6068 | 15 | { &hf_isobus_vt_screencapture_path, |
6069 | 15 | { "Path", "isobus.vt.screencapture.path", |
6070 | 15 | FT_UINT8, BASE_DEC | BASE_RANGE_STRING, RVALS(screencapture_path), 0x0, |
6071 | 15 | NULL, HFILL } |
6072 | 15 | }, |
6073 | 15 | { &hf_isobus_vt_screencapture_response_errorcodes, |
6074 | 15 | { "Error codes", "isobus.vt.screencapture_response.errorcodes", |
6075 | 15 | FT_UINT8, BASE_DEC, NULL, 0x80, |
6076 | 15 | NULL, HFILL } |
6077 | 15 | }, |
6078 | 15 | { &hf_isobus_vt_screencapture_response_errorcodes_flags, |
6079 | 15 | { "Error flags", "isobus.vt.screencapture_response.errorcodes.flags", |
6080 | 15 | FT_UINT8, BASE_HEX, |
6081 | 15 | NULL, 0, NULL, HFILL } |
6082 | 15 | }, |
6083 | 15 | { &hf_isobus_vt_screen_capture_response_error_not_enabled, |
6084 | 15 | { "Screen capture is not enabled", "isobus.vt.screencapture_response.errorcodes.flags.command_was_not_sent", |
6085 | 15 | FT_BOOLEAN, 8, NULL, 0x01, |
6086 | 15 | NULL, HFILL } |
6087 | 15 | }, |
6088 | 15 | { &hf_isobus_vt_screen_capture_response_error_vt_transfer_is_busy, |
6089 | 15 | { "VT transfer is busy", "isobus.vt.screencapture_response.errorcodes.flags.vt_transfer_is_busy", |
6090 | 15 | FT_BOOLEAN, 8, NULL, 0x02, |
6091 | 15 | NULL, HFILL } |
6092 | 15 | }, |
6093 | 15 | { &hf_isobus_vt_screen_capture_response_error_item_unsupported, |
6094 | 15 | { "The specified item is not supported", "isobus.vt.screencapture_response.errorcodes.flags.item_unsupported", |
6095 | 15 | FT_BOOLEAN, 8, NULL, 0x04, |
6096 | 15 | NULL, HFILL } |
6097 | 15 | }, |
6098 | 15 | { &hf_isobus_vt_screen_capture_response_error_path_unsupported, |
6099 | 15 | { "The specified path is not supported", "isobus.vt.screencapture_response.errorcodes.flags.path_unsupported", |
6100 | 15 | FT_BOOLEAN, 8, NULL, 0x08, |
6101 | 15 | NULL, HFILL } |
6102 | 15 | }, |
6103 | 15 | { &hf_isobus_vt_screen_capture_response_error_removable_media_is_full_or_unavailable, |
6104 | 15 | { "Removable media path is full or unavailable", "isobus.vt.screencapture_response.errorcodes.flags.media_full_or_unavailable", |
6105 | 15 | FT_BOOLEAN, 8, NULL, 0x10, |
6106 | 15 | NULL, HFILL } |
6107 | 15 | }, |
6108 | 15 | { &hf_isobus_vt_screen_capture_response_error_other, |
6109 | 15 | { "Other error", "isobus.vt.screencapture_response.errorcodes.flags.other_error", |
6110 | 15 | FT_BOOLEAN, 8, NULL, 0x20, |
6111 | 15 | NULL, HFILL } |
6112 | 15 | }, |
6113 | 15 | { &hf_isobus_vt_screencapture_response_imageid, |
6114 | 15 | { "Image ID", "isobus.vt.screencapture_response.imageid", |
6115 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, |
6116 | 15 | NULL, HFILL } |
6117 | 15 | } |
6118 | 15 | }; |
6119 | | |
6120 | 15 | static int *ett[] = { |
6121 | 15 | &ett_isobus_vt, |
6122 | 15 | &ett_isobus_vt_vtstatus_busycodes_subtree, |
6123 | 15 | &ett_isobus_vt_getsupportedwidechars_range, |
6124 | 15 | &ett_isobus_vt_gettextfontdata_smallfontsizes, |
6125 | 15 | &ett_isobus_vt_gettextfontdata_largefontsizes, |
6126 | 15 | &ett_isobus_vt_gettextfontdata_typeattributes, |
6127 | 15 | &ett_isobus_vt_gethardware_hardware, |
6128 | 15 | &ett_isobus_vt_preferredassignment_inputunit, |
6129 | 15 | &ett_isobus_vt_preferredassignment_inputunit_preferredfunction, |
6130 | 15 | &ett_isobus_vt_auxiliarycapabilities_inputunit, |
6131 | 15 | &ett_isobus_vt_auxiliarycapabilities_inputunit_set, |
6132 | 15 | &ett_isobus_vt_auxiliaryassignmenttype2_flags, |
6133 | 15 | &ett_isobus_vt_auxiliaryinputtype2status_operatingstate, |
6134 | 15 | &ett_isobus_vt_screencapture_response_errorcodes_flags, |
6135 | 15 | }; |
6136 | | |
6137 | 15 | module_t *vt_module; |
6138 | | |
6139 | 15 | register_init_routine(&isobus_vt_init); |
6140 | | |
6141 | 15 | proto_vt = proto_register_protocol("ISObus Virtual Terminal", |
6142 | 15 | "ISObus VT", |
6143 | 15 | "isobus.vt"); |
6144 | | |
6145 | 15 | proto_register_field_array(proto_vt, hf, array_length(hf)); |
6146 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
6147 | | |
6148 | | /* register preferences */ |
6149 | 15 | vt_module = prefs_register_protocol(proto_vt, NULL); |
6150 | | |
6151 | | /* file to translate object ids to names, format should be separate line for each object. |
6152 | | * objects should be specified in the following way: <object ID number>,<object ID name> |
6153 | | */ |
6154 | 15 | prefs_register_filename_preference(vt_module, "object_ids", "Object ID Translation", |
6155 | 15 | "File containing a translation from object ID to string", &object_id_translation, |
6156 | 15 | false); |
6157 | 15 | } |
6158 | | |
6159 | | void |
6160 | | proto_reg_handoff_isobus_vt(void) |
6161 | 15 | { |
6162 | 15 | dissector_handle_t vt_handle_vt_to_ecu; |
6163 | 15 | dissector_handle_t vt_handle_ecu_to_vt; |
6164 | | |
6165 | 15 | vt_handle_vt_to_ecu = create_dissector_handle( dissect_vt_to_ecu, proto_vt ); |
6166 | 15 | vt_handle_ecu_to_vt = create_dissector_handle( dissect_ecu_to_vt, proto_vt ); |
6167 | | |
6168 | 15 | dissector_add_uint("isobus.pdu_format", 230, vt_handle_vt_to_ecu); |
6169 | 15 | dissector_add_uint("isobus.pdu_format", 231, vt_handle_ecu_to_vt); |
6170 | 15 | } |
6171 | | |
6172 | | /* |
6173 | | * Editor modelines - https://www.wireshark.org/tools/modelines.html |
6174 | | * |
6175 | | * Local variables: |
6176 | | * c-basic-offset: 4 |
6177 | | * tab-width: 8 |
6178 | | * indent-tabs-mode: nil |
6179 | | * End: |
6180 | | * |
6181 | | * vi: set shiftwidth=4 tabstop=8 expandtab: |
6182 | | * :indentSize=4:tabSize=8:noTabs=true: |
6183 | | */ |