kvlclib.h
Go to the documentation of this file.
1 /*
2  * Copyright 2016 by KVASER AB, SWEDEN
3  * WWW: http://www.kvaser.com
4  *
5  * This software is furnished under a license and may be used and copied
6  * only in accordance with the terms of such license.
7  */
8 
45 #ifndef KVLCLIB_H
46 #define KVLCLIB_H
47 
48 #include <windows.h>
49 
50 #include "kvaDbLib.h"
51 
52 #ifdef __cplusplus
53 extern "C"
54 {
55 #endif // __cplusplus
56 
61  typedef int KvlcStatus;
62  typedef void *KvlcHandle;
63  typedef signed __int64 time_int64;
64  typedef unsigned __int64 time_uint64;
65  typedef signed __int64 int64;
66  typedef unsigned __int64 uint64;
69 #pragma pack(push, 1)
70 
74  typedef struct
75  {
76  int64 fileSize;
77  int64 eventCount;
78  time_int64 startOfMeasurement;
79  unsigned int channelMask;
80  unsigned int canChannelMask;
81  unsigned int linChannelMask;
82  unsigned int directionMask;
84 
88  typedef struct
89  {
90  unsigned int id;
91  time_int64 timeStamp;
92  unsigned int channel;
93  unsigned int dlc;
94  unsigned int flags;
95  unsigned char data[64];
96  } kvlcLogMsgEx;
97 
101  typedef struct
102  {
103  unsigned int calendarTime;
104  time_int64 timeStamp;
106 
110  typedef struct
111  {
112  int type;
115  unsigned int trigMask;
116  time_int64 timeStamp;
118 
122  typedef struct
123  {
124  unsigned int lioMajor; // Lio major version
125  unsigned int lioMinor; // Lio minor version
126  unsigned int fwMajor; // Firmware major version
127  unsigned int fwMinor; // Firmware major version
128  unsigned int fwBuild; // Firmware build version
129  unsigned int serialNumber; // Serial number
130  unsigned int eanHi; // EAN high bytes
131  unsigned int eanLo; // EAN low bytes
133 
137  typedef struct
138  {
139  unsigned int type;
140  union
141  {
142  kvlcLogMsgEx msg;
143  kvlcLogRtcClockEx rtc;
144  kvlcLogTriggerEx trig;
145  kvlcLogVersionEx ver;
146  unsigned char raw[128];
147  } eventUnion;
148  } kvlcLogEventEx;
149 
150 #pragma pack(pop)
151 
160 #define KVLC_LOG_TYPE_INVALID 0
161 #define KVLC_LOG_TYPE_CLOCK 1
162 #define KVLC_LOG_TYPE_MSG 2
163 #define KVLC_LOG_TYPE_TRIGGER 3
164 #define KVLC_LOG_TYPE_VERSION 4
165 #define KVLC_LOG_TYPE_LINMSG 5
166 
176 #define KVLC_DIR_RX 0x01
177 #define KVLC_DIR_TX 0x02
178 
183 #define KVLC_DEFAULT_SCAN_EVENT_COUNT 10000u
184 
194 #define kvlcOK ((KvlcStatus)0)
195 #define kvlcFail ((KvlcStatus) - 1)
196 #define kvlcERR_PARAM ((KvlcStatus) - 2)
197 #define kvlcEOF ((KvlcStatus) - 3)
198 #define kvlcERR_NOT_IMPLEMENTED ((KvlcStatus) - 4)
199 #define kvlcERR_FILE_ERROR ((KvlcStatus) - 5)
200 #define kvlcERR_FILE_EXISTS ((KvlcStatus) - 6)
201 #define kvlcERR_INTERNAL_ERROR ((KvlcStatus) - 7)
202 #define kvlcERR_NULL_POINTER ((KvlcStatus) - 8)
203 #define kvlcERR_FILE_TOO_LARGE ((KvlcStatus) - 10)
204 #define kvlcERR_TYPE_MISMATCH ((KvlcStatus) - 11)
205 #define kvlcERR_NO_FREE_HANDLES ((KvlcStatus) - 12)
206 #define kvlcERR_NO_INPUT_SELECTED ((KvlcStatus) - 13)
207 #define kvlcERR_CONVERTING ((KvlcStatus) - 14)
208 #define kvlcERR_BUFFER_SIZE ((KvlcStatus) - 15)
209 
210 #define kvlcERR_INVALID_LOG_EVENT ((KvlcStatus) - 30)
211 #define kvlcERR_NO_TIME_REFERENCE ((KvlcStatus) - 31)
212 #define kvlcERR_TIME_DECREASING ((KvlcStatus) - 32)
213 #define kvlcERR_MIXED_ENDIANNESS ((KvlcStatus) - 33)
214 #define kvlcERR_RESULT_TOO_BIG ((KvlcStatus) - 34)
215 #define kvlcERR_UNSUPPORTED_VERSION ((KvlcStatus) - 35)
216 
217 
230 #define KVLC_FILE_FORMAT_KME24 1
231 #define KVLC_FILE_FORMAT_KME25 2
232 #define KVLC_FILE_FORMAT_VECTOR_ASC 3
233 #define KVLC_FILE_FORMAT_CSV 4
234 #define KVLC_FILE_FORMAT_PLAIN_ASC 5
235 #define KVLC_FILE_FORMAT_MEMO_LOG 6
236 #define KVLC_FILE_FORMAT_KME40 7
237 #define KVLC_FILE_FORMAT_VECTOR_BLF 8
238 #define KVLC_FILE_FORMAT_KME50 9
239 #define KVLC_FILE_FORMAT_KME60 10
240 
241 #define KVLC_FILE_FORMAT_CSV_SIGNAL 100
242 #define KVLC_FILE_FORMAT_MDF 101
243 #define KVLC_FILE_FORMAT_MATLAB 102
244 #define KVLC_FILE_FORMAT_J1587 103
245 #define KVLC_FILE_FORMAT_J1587_ALT 104
246 #define KVLC_FILE_FORMAT_FAMOS 105
247 #define KVLC_FILE_FORMAT_MDF_SIGNAL 106
248 #define KVLC_FILE_FORMAT_MDF_4X 107
249 #define KVLC_FILE_FORMAT_MDF_4X_SIGNAL 108
250 #define KVLC_FILE_FORMAT_VECTOR_BLF_FD 109
251 #define KVLC_FILE_FORMAT_DIADEM 110
252 #define KVLC_FILE_FORMAT_RPCIII 111
253 
254 #define KVLC_FILE_FORMAT_XCP 200
255 #define KVLC_FILE_FORMAT_FAMOS_XCP 201
256 
257 #define KVLC_FILE_FORMAT_DEBUG 1000
258 
275 #define KVLC_PROPERTY_START_OF_MEASUREMENT 1
276 
282 #define KVLC_PROPERTY_FIRST_TRIGGER 2
283 
289 #define KVLC_PROPERTY_USE_OFFSET 3
290 
295 #define KVLC_PROPERTY_OFFSET 4
296 
301 #define KVLC_PROPERTY_CHANNEL_MASK 5
302 
303 #define KVLC_PROPERTY_HLP_J1939 6
304 #define KVLC_PROPERTY_CALENDAR_TIME_STAMPS 7
305 #define KVLC_PROPERTY_WRITE_HEADER 8
306 #define KVLC_PROPERTY_SEPARATOR_CHAR 9
307 #define KVLC_PROPERTY_DECIMAL_CHAR 10
308 
309 #define KVLC_PROPERTY_ID_IN_HEX 11
310 #define KVLC_PROPERTY_DATA_IN_HEX 12
311 #define KVLC_PROPERTY_NUMBER_OF_TIME_DECIMALS 13
312 #define KVLC_PROPERTY_NAME_MANGLING 14
313 #define KVLC_PROPERTY_FILL_BLANKS 15
314 
315 #define KVLC_PROPERTY_SHOW_UNITS 16
316 #define KVLC_PROPERTY_ISO8601_DECIMALS 17
317 #define KVLC_PROPERTY_MERGE_LINES 18
318 #define KVLC_PROPERTY_RESAMPLE_COLUMN 19
319 #define KVLC_PROPERTY_VERSION 20
320 
321 #define KVLC_PROPERTY_SHOW_COUNTER 21
322 
327 #define KVLC_PROPERTY_CROP_PRETRIGGER 22
328 #define KVLC_PROPERTY_ENUM_VALUES 23
329 #define KVLC_PROPERTY_SIZE_LIMIT 24
330 
331 
336 #define KVLC_PROPERTY_TIME_LIMIT 25
337 
343 #define KVLC_PROPERTY_LIMIT_DATA_BYTES 26
344 #define KVLC_PROPERTY_CREATION_DATE 27
345 
346 
351 #define KVLC_PROPERTY_OVERWRITE 28
352 #define KVLC_PROPERTY_TIMEZONE 29
353 
354 
359 #define KVLC_PROPERTY_FULLY_QUALIFIED_NAMES 30
360 
361 #define KVLC_PROPERTY_NUMBER_OF_DATA_DECIMALS 31
362 
363 
375 #define KVLC_PROPERTY_COMPRESSION_LEVEL 32
376 
384 #define KVLC_PROPERTY_SAMPLE_AND_HOLD_TIMESTEP 33
385 
389 #define KVLC_PROPERTY_SIGNAL_BASED 1001
390 
394 #define KVLC_PROPERTY_SHOW_SIGNAL_SELECT 1002
395 
399 #define KVLC_PROPERTY_ATTACHMENTS 1003
400 
404 #define KVLC_PROPERTY_LIN_FRAMES 1004
405 
425  KvlcStatus WINAPI kvlcGetErrorText(KvlcStatus error, char *buffer, unsigned int buffer_size);
426 
443  KvlcStatus WINAPI kvlcGetVersion(unsigned int *major, unsigned int *minor, unsigned int *build);
444 
464  KvlcStatus WINAPI kvlcCreateConverter(KvlcHandle *handle, const char *filename, int format);
465 
481  KvlcStatus WINAPI kvlcDeleteConverter(KvlcHandle handle);
482 
502  KvlcStatus WINAPI kvlcCreateReader(KvlcHandle *handle, const char *filename, int format);
503 
519  KvlcStatus WINAPI kvlcDeleteReader(KvlcHandle handle);
520 
546  KvlcStatus WINAPI kvlcReadInfo(KvlcHandle handle, kvlcReaderInfo *info,
547  unsigned int maxEvents);
548 
566  KvlcStatus WINAPI kvlcReadNextEvent(KvlcHandle handle, kvlcLogEventEx *e);
567 
590  KvlcStatus WINAPI kvlcReadFirstEventAtOrAfter(KvlcHandle handle, time_int64 timestamp, kvlcLogEventEx *e);
591 
613  KvlcStatus WINAPI kvlcEventCount(KvlcHandle handle, unsigned int *count);
614 
631  KvlcStatus WINAPI kvlcEventCountEx(KvlcHandle handle, int64 *count);
632 
647  KvlcStatus WINAPI kvlcConvertEvent(KvlcHandle handle);
648 
667  KvlcStatus WINAPI kvlcSetInputFile(KvlcHandle handle, const char *filename, int format);
668 
689  KvlcStatus WINAPI kvlcNextInputFile(KvlcHandle handle, const char *filename);
690 
710  KvlcStatus WINAPI kvlcFeedSelectFormat(KvlcHandle handle, int format);
711 
732  KvlcStatus WINAPI kvlcFeedLogEvent(KvlcHandle handle, void *event);
733 
753  KvlcStatus WINAPI kvlcFeedNextFile(KvlcHandle handle);
754 
772  KvlcStatus WINAPI kvlcIsOutputFilenameNew(KvlcHandle handle, int *updated);
773 
795  KvlcStatus WINAPI kvlcGetOutputFilename(KvlcHandle handle, char *filename, int len);
796 
822  KvlcStatus WINAPI kvlcGetWriterPropertyDefault(int format, unsigned int property, void *buf, unsigned int len);
823 
846  KvlcStatus WINAPI kvlcSetProperty(KvlcHandle handle, unsigned int property, void *buf, unsigned int len);
847 
870  KvlcStatus WINAPI kvlcGetProperty(KvlcHandle handle, unsigned int property, void *buf, unsigned int len);
871 
892  KvlcStatus WINAPI kvlcIsOverrunActive(KvlcHandle handle, int *overrun);
893 
909  KvlcStatus WINAPI kvlcResetOverrunActive(KvlcHandle handle);
910 
934  KvlcStatus WINAPI kvlcIsDataTruncated(KvlcHandle handle, int *truncated);
935 
951  KvlcStatus WINAPI kvlcResetDataTruncated(KvlcHandle handle);
952 
973  KvlcStatus WINAPI kvlcAttachFile(KvlcHandle handle, const char *filename);
974 
990  KvlcStatus WINAPI kvlcGetFirstWriterFormat(int *format);
991 
1009  KvlcStatus WINAPI kvlcGetNextWriterFormat(int currentFormat, int *nextFormat);
1010 
1026  KvlcStatus WINAPI kvlcGetFirstReaderFormat(int *format);
1027 
1045  KvlcStatus WINAPI kvlcGetNextReaderFormat(int currentFormat, int *nextFormat);
1046 
1065  KvlcStatus WINAPI kvlcGetReaderName(int format, char *str, unsigned int len);
1066 
1085  KvlcStatus WINAPI kvlcGetReaderExtension(int format, char *str, unsigned int len);
1086 
1105  KvlcStatus WINAPI kvlcGetReaderDescription(int format, char *str, unsigned int len);
1106 
1132  KvlcStatus WINAPI kvlcGetReaderPropertyDefault(int format, unsigned int property, void *buf, unsigned int len);
1133 
1152  KvlcStatus WINAPI kvlcGetWriterName(int format, char *str, unsigned int len);
1153 
1172  KvlcStatus WINAPI kvlcGetWriterExtension(int format, char *str, unsigned int len);
1173 
1192  KvlcStatus WINAPI kvlcGetWriterDescription(int format, char *str, unsigned int len);
1193 
1211  KvlcStatus WINAPI kvlcIsPropertySupported(int format, unsigned int property, int *supported);
1212 
1235  KvlcStatus WINAPI kvlcAddDatabaseFile(KvlcHandle handle, const char *filename, unsigned int channelMask);
1236 
1258  KvlcStatus WINAPI kvlcAddDatabase(KvlcHandle handle, KvaDbHnd dbHandle, unsigned int channelMask);
1259 
1277  KvlcStatus WINAPI kvlcIsDlcMismatch(KvlcHandle handle, int *mismatch);
1278 
1295  KvlcStatus WINAPI kvlcResetDlcMismatch(KvlcHandle handle);
1296 
1315  KvlcStatus WINAPI kvlcGetDlcMismatchList(KvlcHandle handle, unsigned int *MsgIds, unsigned int *MsgDlc, unsigned int *MsgOccurance, unsigned int *length);
1316 
1317 #ifdef __cplusplus
1318 };
1319 #endif
1320 
1321 #endif // KVLCLIB_H
KvlcStatus kvlcNextInputFile(KvlcHandle handle, const char *filename)
unsigned int fwBuild
Definition: kvlclib.h:128
KvlcStatus kvlcResetDlcMismatch(KvlcHandle handle)
KvlcStatus kvlcCreateReader(KvlcHandle *handle, const char *filename, int format)
KvlcStatus kvlcGetReaderDescription(int format, char *str, unsigned int len)
Information about an open log file reader.
Definition: kvlclib.h:74
int64 fileSize
Size of the input file in bytes.
Definition: kvlclib.h:76
A trigger message.
Definition: kvlclib.h:110
unsigned __int64 uint64
Definition: kvlclib.h:66
unsigned int canChannelMask
Bitmask of channels observed with CAN/CAN FD traffic; bit N set means channel N is a CAN channel...
Definition: kvlclib.h:80
KvlcStatus kvlcReadFirstEventAtOrAfter(KvlcHandle handle, time_int64 timestamp, kvlcLogEventEx *e)
KvlcStatus kvlcGetNextWriterFormat(int currentFormat, int *nextFormat)
KvlcStatus kvlcGetReaderName(int format, char *str, unsigned int len)
unsigned int serialNumber
Definition: kvlclib.h:129
unsigned int type
LOG_TYPE_xxx, Event types in log
Definition: kvlclib.h:139
KvlcStatus kvlcGetNextReaderFormat(int currentFormat, int *nextFormat)
KvlcStatus kvlcIsOverrunActive(KvlcHandle handle, int *overrun)
KvlcStatus kvlcSetProperty(KvlcHandle handle, unsigned int property, void *buf, unsigned int len)
Definitions for the Database API.
KvlcStatus kvlcGetReaderExtension(int format, char *str, unsigned int len)
KvlcStatus kvlcIsOutputFilenameNew(KvlcHandle handle, int *updated)
int type
The type of trigger TRIGVAR_TYPE_xxx.
Definition: kvlclib.h:112
KvlcStatus kvlcAddDatabaseFile(KvlcHandle handle, const char *filename, unsigned int channelMask)
KvlcStatus kvlcDeleteConverter(KvlcHandle handle)
KvlcStatus kvlcEventCount(KvlcHandle handle, unsigned int *count)
A RTC clock message.
Definition: kvlclib.h:101
KvlcStatus kvlcEventCountEx(KvlcHandle handle, int64 *count)
unsigned int fwMinor
Definition: kvlclib.h:127
KvlcStatus kvlcAddDatabase(KvlcHandle handle, KvaDbHnd dbHandle, unsigned int channelMask)
unsigned int directionMask
Bitmask of directions observed during scan; use DIR_xxx.
Definition: kvlclib.h:82
int postTrigger
Posttrigger time in milliseconds.
Definition: kvlclib.h:114
KvlcStatus kvlcGetWriterName(int format, char *str, unsigned int len)
void * KvlcHandle
Definition: kvlclib.h:62
KvlcStatus kvlcGetFirstWriterFormat(int *format)
KvlcStatus kvlcIsPropertySupported(int format, unsigned int property, int *supported)
unsigned int channelMask
Bitmask of channels observed during scan; bit N set means channel N was seen.
Definition: kvlclib.h:79
unsigned int linChannelMask
Bitmask of channels observed with LIN traffic; bit N set means channel N is a LIN channel...
Definition: kvlclib.h:81
KvlcStatus kvlcGetProperty(KvlcHandle handle, unsigned int property, void *buf, unsigned int len)
int64 eventCount
Estimated number of events in the file.
Definition: kvlclib.h:77
KvlcStatus kvlcFeedSelectFormat(KvlcHandle handle, int format)
unsigned int calendarTime
RTC date, seconds since 1970-01-01T00:00:00+00:00 (UTC)
Definition: kvlclib.h:103
KvlcStatus kvlcCreateConverter(KvlcHandle *handle, const char *filename, int format)
unsigned int dlc
The length of the message.
Definition: kvlclib.h:93
KvlcStatus kvlcReadNextEvent(KvlcHandle handle, kvlcLogEventEx *e)
KvlcStatus kvlcGetWriterPropertyDefault(int format, unsigned int property, void *buf, unsigned int len)
unsigned int eanLo
Definition: kvlclib.h:131
unsigned int eanHi
Definition: kvlclib.h:130
KvlcStatus kvlcConvertEvent(KvlcHandle handle)
int preTrigger
Pretrigger time in milliseconds.
Definition: kvlclib.h:113
signed __int64 int64
Definition: kvlclib.h:65
unsigned int fwMajor
Definition: kvlclib.h:126
unsigned int id
The message identifier.
Definition: kvlclib.h:90
A version message.
Definition: kvlclib.h:122
KvlcStatus kvlcGetFirstReaderFormat(int *format)
KvlcStatus kvlcGetDlcMismatchList(KvlcHandle handle, unsigned int *MsgIds, unsigned int *MsgDlc, unsigned int *MsgOccurance, unsigned int *length)
KvlcStatus kvlcResetDataTruncated(KvlcHandle handle)
KvlcStatus kvlcResetOverrunActive(KvlcHandle handle)
KvlcStatus kvlcGetOutputFilename(KvlcHandle handle, char *filename, int len)
KvlcStatus kvlcGetWriterDescription(int format, char *str, unsigned int len)
int KvlcStatus
Definition: kvlclib.h:61
KvlcStatus kvlcDeleteReader(KvlcHandle handle)
KvlcStatus kvlcFeedLogEvent(KvlcHandle handle, void *event)
void * KvaDbHnd
Database handle.
Definition: kvaDbLib.h:258
signed __int64 time_int64
Definition: kvlclib.h:63
KvlcStatus kvlcIsDlcMismatch(KvlcHandle handle, int *mismatch)
KvlcStatus kvlcIsDataTruncated(KvlcHandle handle, int *truncated)
unsigned __int64 time_uint64
Definition: kvlclib.h:64
The union of events used by kvlcReadNextEvent() and kvlcReadFirstEventAtOrAfter().
Definition: kvlclib.h:137
A CAN/LIN message.
Definition: kvlclib.h:88
KvlcStatus kvlcAttachFile(KvlcHandle handle, const char *filename)
KvlcStatus kvlcSetInputFile(KvlcHandle handle, const char *filename, int format)
KvlcStatus kvlcGetVersion(unsigned int *major, unsigned int *minor, unsigned int *build)
KvlcStatus kvlcGetWriterExtension(int format, char *str, unsigned int len)
KvlcStatus kvlcFeedNextFile(KvlcHandle handle)
unsigned int trigMask
Bitmask with all active triggers.
Definition: kvlclib.h:115
unsigned int flags
Message flags canMSG_xxx or LIN_xxx.
Definition: kvlclib.h:94
time_int64 timeStamp
The timestamp in units of 1 nanosecond.
Definition: kvlclib.h:91
time_int64 startOfMeasurement
Start of measurement (nanoseconds since 1 Jan 1970); 0 if not yet available.
Definition: kvlclib.h:78
KvlcStatus kvlcGetErrorText(KvlcStatus error, char *buffer, unsigned int buffer_size)
unsigned int lioMajor
Definition: kvlclib.h:124
KvlcStatus kvlcReadInfo(KvlcHandle handle, kvlcReaderInfo *info, unsigned int maxEvents)
unsigned int lioMinor
Definition: kvlclib.h:125
KvlcStatus kvlcGetReaderPropertyDefault(int format, unsigned int property, void *buf, unsigned int len)
unsigned int channel
The device channel on which the message arrived, 0,1,...
Definition: kvlclib.h:92