Vector BLF
ObjectHeaderBase.h
1 /*
2  * Copyright (C) 2013 Tobias Lorenz.
3  * Contact: tobias.lorenz@gmx.net
4  *
5  * This file is part of Tobias Lorenz's Toolkit.
6  *
7  * Commercial License Usage
8  * Licensees holding valid commercial licenses may use this file in
9  * accordance with the commercial license agreement provided with the
10  * Software or, alternatively, in accordance with the terms contained in
11  * a written agreement between you and Tobias Lorenz.
12  *
13  * GNU General Public License 3.0 Usage
14  * Alternatively, this file may be used under the terms of the GNU
15  * General Public License version 3.0 as published by the Free Software
16  * Foundation and appearing in the file LICENSE.GPL included in the
17  * packaging of this file. Please review the following information to
18  * ensure the GNU General Public License version 3.0 requirements will be
19  * met: http://www.gnu.org/copyleft/gpl.html.
20  */
21 
22 #pragma once
23 
24 #include <Vector/BLF/platform.h>
25 
26 #include <Vector/BLF/AbstractFile.h>
27 #include <Vector/BLF/VectorTypes.h>
28 
29 #include <Vector/BLF/vector_blf_export.h>
30 
31 namespace Vector {
32 namespace BLF {
33 
39 enum class ObjectType : DWORD {
40  UNKNOWN = 0,
41  CAN_MESSAGE = 1,
42  CAN_ERROR = 2,
43  CAN_OVERLOAD = 3,
44  CAN_STATISTIC = 4,
45  APP_TRIGGER = 5,
46  ENV_INTEGER = 6,
47  ENV_DOUBLE = 7,
48  ENV_STRING = 8,
49  ENV_DATA = 9,
50  LOG_CONTAINER = 10,
51  LIN_MESSAGE = 11,
52  LIN_CRC_ERROR = 12,
53  LIN_DLC_INFO = 13,
54  LIN_RCV_ERROR = 14,
55  LIN_SND_ERROR = 15,
56  LIN_SLV_TIMEOUT = 16,
57  LIN_SCHED_MODCH = 17,
58  LIN_SYN_ERROR = 18,
59  LIN_BAUDRATE = 19,
60  LIN_SLEEP = 20,
61  LIN_WAKEUP = 21,
62  MOST_SPY = 22,
63  MOST_CTRL = 23,
64  MOST_LIGHTLOCK = 24,
65  MOST_STATISTIC = 25,
66  Reserved26 = 26,
67  Reserved27 = 27,
68  Reserved28 = 28,
69  FLEXRAY_DATA = 29,
70  FLEXRAY_SYNC = 30,
71  CAN_DRIVER_ERROR = 31,
72  MOST_PKT = 32,
73  MOST_PKT2 = 33,
74  MOST_HWMODE = 34,
75  MOST_REG = 35,
76  MOST_GENREG = 36,
77  MOST_NETSTATE = 37,
78  MOST_DATALOST = 38,
79  MOST_TRIGGER = 39,
80  FLEXRAY_CYCLE = 40,
81  FLEXRAY_MESSAGE = 41,
82  LIN_CHECKSUM_INFO = 42,
83  LIN_SPIKE_EVENT = 43,
84  CAN_DRIVER_SYNC = 44,
85  FLEXRAY_STATUS = 45,
86  GPS_EVENT = 46,
87  FR_ERROR = 47,
88  FR_STATUS = 48,
89  FR_STARTCYCLE = 49,
90  FR_RCVMESSAGE = 50,
91  REALTIMECLOCK = 51,
92  Reserved52 = 52,
93  Reserved53 = 53,
94  LIN_STATISTIC = 54,
95  J1708_MESSAGE = 55,
96  J1708_VIRTUAL_MSG = 56,
97  LIN_MESSAGE2 = 57,
98  LIN_SND_ERROR2 = 58,
99  LIN_SYN_ERROR2 = 59,
100  LIN_CRC_ERROR2 = 60,
101  LIN_RCV_ERROR2 = 61,
102  LIN_WAKEUP2 = 62,
103  LIN_SPIKE_EVENT2 = 63,
104  LIN_LONG_DOM_SIG = 64,
105  APP_TEXT = 65,
106  FR_RCVMESSAGE_EX = 66,
107  MOST_STATISTICEX = 67,
108  MOST_TXLIGHT = 68,
109  MOST_ALLOCTAB = 69,
110  MOST_STRESS = 70,
111  ETHERNET_FRAME = 71,
112  SYS_VARIABLE = 72,
113  CAN_ERROR_EXT = 73,
114  CAN_DRIVER_ERROR_EXT = 74,
115  LIN_LONG_DOM_SIG2 = 75,
116  MOST_150_MESSAGE = 76,
117  MOST_150_PKT = 77,
118  MOST_ETHERNET_PKT = 78,
119  MOST_150_MESSAGE_FRAGMENT = 79,
120  MOST_150_PKT_FRAGMENT = 80,
121  MOST_ETHERNET_PKT_FRAGMENT = 81,
122  MOST_SYSTEM_EVENT = 82,
123  MOST_150_ALLOCTAB = 83,
124  MOST_50_MESSAGE = 84,
125  MOST_50_PKT = 85,
126  CAN_MESSAGE2 = 86,
127  LIN_UNEXPECTED_WAKEUP = 87,
128  LIN_SHORT_OR_SLOW_RESPONSE = 88,
129  LIN_DISTURBANCE_EVENT = 89,
130  SERIAL_EVENT = 90,
131  OVERRUN_ERROR = 91,
132  EVENT_COMMENT = 92,
133  WLAN_FRAME = 93,
134  WLAN_STATISTIC = 94,
135  MOST_ECL = 95,
136  GLOBAL_MARKER = 96,
137  AFDX_FRAME = 97,
138  AFDX_STATISTIC = 98,
139  KLINE_STATUSEVENT = 99,
140  CAN_FD_MESSAGE = 100,
141  CAN_FD_MESSAGE_64 = 101,
142  ETHERNET_RX_ERROR = 102,
143  ETHERNET_STATUS = 103,
144  CAN_FD_ERROR_64 = 104,
145  LIN_SHORT_OR_SLOW_RESPONSE2 = 105,
146  AFDX_STATUS = 106,
147  AFDX_BUS_STATISTIC = 107,
148  Reserved108 = 108,
149  AFDX_ERROR_EVENT = 109,
150  A429_ERROR = 110,
151  A429_STATUS = 111,
152  A429_BUS_STATISTIC = 112,
153  A429_MESSAGE = 113,
154  ETHERNET_STATISTIC = 114,
155  Unknown115 = 115,
156  Reserved116 = 116,
157  Reserved117 = 117,
158  TEST_STRUCTURE = 118,
159  DIAG_REQUEST_INTERPRETATION = 119,
160  ETHERNET_FRAME_EX = 120,
161  ETHERNET_FRAME_FORWARDED = 121,
162  ETHERNET_ERROR_EX = 122,
163  ETHERNET_ERROR_FORWARDED = 123,
164  FUNCTION_BUS = 124,
165  DATA_LOST_BEGIN = 125,
166  DATA_LOST_END = 126,
167  WATER_MARK_EVENT = 127,
168  TRIGGER_CONDITION = 128
169 };
170 
172 const DWORD ObjectSignature = 0x4A424F4C; /* LOBJ */
173 
179 struct VECTOR_BLF_EXPORT ObjectHeaderBase {
180  ObjectHeaderBase(const WORD headerVersion, const ObjectType objectType);
181  virtual ~ObjectHeaderBase() noexcept = default;
182  ObjectHeaderBase(const ObjectHeaderBase &) = default;
183  ObjectHeaderBase & operator=(const ObjectHeaderBase &) = default;
184  ObjectHeaderBase(ObjectHeaderBase &&) = default;
185  ObjectHeaderBase & operator=(ObjectHeaderBase &&) = default;
186 
192  virtual void read(AbstractFile & is);
193 
199  virtual void write(AbstractFile & os);
200 
206  virtual WORD calculateHeaderSize() const;
207 
213  virtual DWORD calculateObjectSize() const;
214 
220  DWORD signature {ObjectSignature};
221 
230  WORD headerSize {};
231 
245  WORD headerVersion {};
246 
252  DWORD objectSize {};
253 
261  ObjectType objectType {};
262 };
263 
264 }
265 }
Definition: AbstractFile.h:36
Base object header type definition.
Definition: ObjectHeaderBase.h:179