kvmlib.h
Go to the documentation of this file.
1 /*
2  * Copyright 2015 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 
9 #ifndef KVMLIB_H
10 #define KVMLIB_H
11 
46 #include <windows.h>
47 #include <stdint.h>
48 #include <stdio.h>
49 
50 typedef int8_t int8;
51 typedef uint8_t uint8;
52 typedef int16_t int16;
53 typedef uint16_t uint16;
54 typedef int32_t int32;
55 typedef uint32_t uint32;
56 typedef int64_t int64;
57 
58 
59 #ifdef __cplusplus
60 extern "C" {
61 #endif
62 
71 #define kvmDEVICE_MHYDRA 0
72 #define kvmDEVICE_MHYDRA_EXT 1
73 
83 #define kvmLDF_MAJOR_CAN 3
84 #define kvmLDF_MAJOR_CAN64 5
85 
90 typedef HANDLE kmeFileHandle;
91 
100 #define kvmFS_FAT16 0
101 #define kvmFS_FAT32 1
102 
112 #define kvmFILE_KME24 0
113 #define kvmFILE_KME25 1
114 #define kvmFILE_KME40 2
115 #define kvmFILE_KME50 3
116 #define kvmFILE_KME60 4
117 
122 typedef HANDLE kvmHandle;
123 
124 
135  // If you change here, remember to also change kvmlib.cpp and kvmlibtest...
136 typedef enum {
137  kvmOK = 0,
138  kvmFail = -1,
144  kvmEOF = -12,
171 
172 } kvmStatus;
183 #define kvmLogFileType_ERR 0
184 #define kvmLogFileType_ALL 1
185 
196 #define kvm_SWINFO_KVMLIB 1
197 #define kvm_SWINFO_DRIVER 2
198 #define kvm_SWINFO_FIRMWARE 3
199 #define kvm_SWINFO_DRIVER_PRODUCT 4
200 #define kvm_SWINFO_CONFIG_VERSION_NEEDED 5
201 #define kvm_SWINFO_CPLD_VERSION 6
202 
204 #include <pshpack1.h>
205 
206 #ifndef canMSG_RTR
207 
216 # define canMSG_RTR 0x0001
217 # define canMSG_STD 0x0002
218 # define canMSG_EXT 0x0004
219 # define canMSG_ERROR_FRAME 0x0020
220 # define canMSG_TXACK 0x0040
221 # define canMSG_TXRQ 0x0080
222 # define canMSGERR_OVERRUN 0x0600
223 # define canFDMSG_EDL 0x010000
224 # define canFDMSG_FDF 0x010000
225 # define canFDMSG_BRS 0x020000
226 # define canFDMSG_ESI 0x040000
227 
228 #endif
229 
230 #ifndef LIN_TX
231 
240 # define LIN_TX 1
241 # define LIN_RX 2
242 # define LIN_WAKEUP_FRAME 4
243 # define LIN_NODATA 8
244 # define LIN_CSUM_ERROR 16
245 # define LIN_PARITY_ERROR 32
246 # define LIN_SYNCH_ERROR 64
247 # define LIN_BIT_ERROR 128
248 
249 #endif
250 
259 #define TRIGVAR_TYPE_MSG_ID 0
260 #define TRIGVAR_TYPE_MSG_DLC 1
261 #define TRIGVAR_TYPE_MSG_FLAG 2
262 #define TRIGVAR_TYPE_SIGVAL 3
263 #define TRIGVAR_TYPE_EXTERNAL 4
264 #define TRIGVAR_TYPE_TIMER 5
265 #define TRIGVAR_TYPE_DISK_FULL 6
266 #define TRIGVAR_TYPE_STARTUP 9
267 
272 typedef struct {
278  uint8 data[64];
279 } kvmLogMsgEx;
280 
284 typedef struct {
288 
289 
293 typedef struct {
300 
304 typedef struct
305 {
306  uint32 lioMajor; // Lio major version
307  uint32 lioMinor; // Lio minor version
308  uint32 fwMajor; // Firmware major version
309  uint32 fwMinor; // Firmware major version
310  uint32 fwBuild; // Firmware build version
311  uint32 serialNumber; // Serial number
312  uint32 eanHi; // EAN high bytes
313  uint32 eanLo; // EAN low bytes
315 
316 
324 #define kvmLOG_TYPE_INVALID 0
325 #define kvmLOG_TYPE_CLOCK 1
326 #define kvmLOG_TYPE_MSG 2
327 #define kvmLOG_TYPE_TRIGGER 3
328 #define kvmLOG_TYPE_VERSION 4
329 #define kvmLOG_TYPE_LINMSG 5
330 
335 typedef struct {
337  union {
338  kvmLogMsgEx msg;
339  kvmLogRtcClockEx rtc;
340  kvmLogTriggerEx trig;
341  kvmLogVersionEx ver;
342  uint8 raw[128];
343  } eventUnion;
344 } kvmLogEventEx;
345 
346 #include <poppack.h>
347 
357 void WINAPI kvmInitialize(void);
358 
374 kvmStatus WINAPI kvmGetVersion(int *major, int *minor, int *build);
375 
388 kvmStatus WINAPI kvmGetErrorText(kvmStatus error, char *buf, size_t len);
389 
406 kvmStatus WINAPI kvmClose(kvmHandle h);
407 
427 kvmHandle WINAPI kvmDeviceOpen(int32 cardNr,
428  kvmStatus *status,
429  int32 deviceType);
430 
450 
472 kvmStatus WINAPI kvmDeviceMountKmfEx(kvmHandle h, int *ldfMajor, int *ldfMinor);
473 
498 kvmHandle WINAPI kvmKmfOpen(const char *filename,
499  kvmStatus *status,
500  int32 deviceType);
501 
529 kvmHandle WINAPI kvmKmfOpenEx(const char *filename,
530  kvmStatus *status,
531  int32 deviceType,
532  int *ldfMajor,
533  int *ldfMinor);
534 
549 
574  int fileSystem,
575  uint32 reserveSpace,
576  uint32 dbaseSpace);
577 
592 kvmStatus WINAPI kvmLogFileGetCount(kvmHandle h, uint32 *fileCount);
593 
609 kvmStatus WINAPI kvmLogFileGetType(kvmHandle h, uint32 fileIndx, int32 *logFileType);
610 
634 kvmStatus WINAPI kvmLogFileMount(kvmHandle h, uint32 fileIndx,
635  uint32 *eventCount);
636 
655 kvmStatus WINAPI kvmLogFileMountEx(kvmHandle h, uint32 fileIndx,
656  int64 *eventCount);
657 
670 
687  uint32 *startTime);
688 
705  uint32 *endTime);
706 
723  uint32 *serialNumber);
724 
742 
743 
758 
775 kvmStatus WINAPI kvmDeviceDiskStatus(kvmHandle h, int *present);
776 
794  uint32 *totalSectorCount,
795  uint32 *usedSectorCount);
796 
812 kvmStatus WINAPI kvmDeviceDiskSize(kvmHandle h, uint32 *diskSize);
813 
828 kvmStatus WINAPI kvmDeviceGetSerialNumber(kvmHandle h, unsigned int *serial);
829 
849  int32 itemCode,
850  unsigned int *major,
851  unsigned int *minor,
852  unsigned int *build,
853  unsigned int *flags);
868 
869 
887 
905 
922 kvmStatus WINAPI kvmKmfReadConfig(kvmHandle h, void *buf,
923  size_t buflen, size_t *actual_len);
924 
940 kvmStatus WINAPI kvmKmfWriteConfig(kvmHandle h, void *buf, size_t buflen);
941 
942 
962 kvmStatus WINAPI kvmKmfGetDbaseFile(kvmHandle h, char *path, char *filenamebuf, size_t buflen);
963 
981 kvmStatus WINAPI kvmKmfPutDbaseFile(kvmHandle h, char *filename);
982 
997 
1016 kmeFileHandle WINAPI kvmKmeOpenFile (const char *filename,
1017  kvmStatus *status,
1018  int32 fileType);
1019 
1037 kvmStatus WINAPI kvmKmeScanFileType (const char *filename,
1038  int32 *fileType);
1039 
1061 kmeFileHandle WINAPI kvmKmeCreateFile (const char *filename,
1062  kvmStatus *status,
1063  int32 fileType);
1064 
1084 
1103 
1126 kvmStatus WINAPI kvmKmeCountEvents(kmeFileHandle h, uint32 *eventCount);
1127 
1145 kvmStatus WINAPI kvmKmeCountEventsEx(kmeFileHandle h, int64 *eventCount);
1146 
1165 
1199 #ifdef __cplusplus
1200 }
1201 #endif
1202 
1203 #endif //KVMLIB_H
kvmStatus kvmClose(kvmHandle h)
Unsupported version.
Definition: kvmlib.h:156
Error writing log file.
Definition: kvmlib.h:143
Disk full (data).
Definition: kvmlib.h:153
uint32 flags
Message flags canMSG_xxx or LIN_xxx.
Definition: kvmlib.h:277
uint32 eanLo
Definition: kvmlib.h:313
kvmStatus kvmLogFileGetCount(kvmHandle h, uint32 *fileCount)
kmeFileHandle kvmKmeOpenFile(const char *filename, kvmStatus *status, int32 fileType)
kvmStatus kvmKmeCloseFile(kmeFileHandle h)
uint32 trigMask
Bitmask with all active triggers.
Definition: kvmlib.h:297
kvmStatus kvmDeviceDiskStatus(kvmHandle h, int *present)
Queue is full.
Definition: kvmlib.h:147
File not found.
Definition: kvmlib.h:160
HANDLE kvmHandle
A handle to a Memorator or equivalent KMF file.
Definition: kvmlib.h:122
Configuration error.
Definition: kvmlib.h:168
kvmStatus kvmLogFileMount(kvmHandle h, uint32 fileIndx, uint32 *eventCount)
uint16_t uint16
Definition: kvmlib.h:53
int32 postTrigger
Posttrigger time in milliseconds.
Definition: kvmlib.h:296
A RTC clock message.
Definition: kvmlib.h:284
No log message found.
Definition: kvmlib.h:142
kvmStatus kvmDeviceGetRTC(kvmHandle h, uint32 *t)
kvmStatus kvmKmeWriteEvent(kmeFileHandle h, kvmLogEventEx *e)
HANDLE kmeFileHandle
A handle to a KME file.
Definition: kvmlib.h:90
uint32 serialNumber
Definition: kvmlib.h:311
kvmStatus kvmKmfGetUsage(kvmHandle h, uint32 *totalSectorCount, uint32 *usedSectorCount)
User abort.
Definition: kvmlib.h:166
kmeFileHandle kvmKmeCreateFile(const char *filename, kvmStatus *status, int32 fileType)
File system corrupt.
Definition: kvmlib.h:155
Error while reading log file.
Definition: kvmlib.h:146
OK!
Definition: kvmlib.h:137
Timeout.
Definition: kvmlib.h:163
kvmStatus kvmDeviceFormatDisk(kvmHandle h, int fileSystem, uint32 reserveSpace, uint32 dbaseSpace)
kvmStatus kvmKmfEraseDbaseFile(kvmHandle h)
Disk is write protected.
Definition: kvmlib.h:169
kvmStatus kvmKmeCountEventsEx(kmeFileHandle h, int64 *eventCount)
uint32 id
The message identifier.
Definition: kvmlib.h:273
Wrong disk type.
Definition: kvmlib.h:162
kvmStatus kvmKmfWriteConfig(kvmHandle h, void *buf, size_t buflen)
kvmStatus kvmDeviceFlashLeds(kvmHandle h)
uint32 fwMinor
Definition: kvmlib.h:309
uint32 lioMinor
Definition: kvmlib.h:307
End of file found.
Definition: kvmlib.h:144
uint32 type
kvmLOG_TYPE_xxx, Event types in log
Definition: kvmlib.h:336
kvmStatus kvmLogFileDismount(kvmHandle h)
kvmStatus kvmLogFileDeleteAll(kvmHandle h)
int8_t int8
Definition: kvmlib.h:50
kvmStatus kvmKmfReadConfig(kvmHandle h, void *buf, size_t buflen, size_t *actual_len)
File I/O error.
Definition: kvmlib.h:150
Disk not formatted.
Definition: kvmlib.h:161
uint32 fwMajor
Definition: kvmlib.h:308
kvmStatus kvmKmeScanFileType(const char *filename, int32 *fileType)
Illegal request.
Definition: kvmlib.h:159
The union of events used by kvmKmeReadEvent().
Definition: kvmlib.h:335
kvmStatus kvmLogFileGetType(kvmHandle h, uint32 fileIndx, int32 *logFileType)
int16_t int16
Definition: kvmlib.h:52
uint32 channel
The device channel on which the message arrived, 0,1,...
Definition: kvmlib.h:275
kvmStatus kvmDeviceGetSoftwareInfo(kvmHandle h, int32 itemCode, unsigned int *major, unsigned int *minor, unsigned int *build, unsigned int *flags)
kvmStatus kvmDeviceMountKmfEx(kvmHandle h, int *ldfMajor, int *ldfMinor)
uint32 dlc
The length of the message.
Definition: kvmlib.h:276
kvmStatus kvmGetErrorText(kvmStatus error, char *buf, size_t len)
kvmStatus kvmLogFileReadEvent(kvmHandle h, kvmLogEventEx *e)
int32 type
The type of trigger TRIGVAR_TYPE_xxx.
Definition: kvmlib.h:294
kvmStatus kvmDeviceMountKmf(kvmHandle h)
signed __int64 int64
Definition: kvlclib.h:65
CRC check failed.
Definition: kvmlib.h:148
uint32 lioMajor
Definition: kvmlib.h:306
kvmStatus kvmLogFileGetCreatorSerial(kvmHandle h, uint32 *serialNumber)
Firmware error.
Definition: kvmlib.h:167
int64 timeStamp
The timestamp in units of 1 nanosecond.
Definition: kvmlib.h:274
kvmStatus kvmLogFileMountEx(kvmHandle h, uint32 fileIndx, int64 *eventCount)
int64_t int64
Definition: kvmlib.h:56
Generic error.
Definition: kvmlib.h:138
kvmStatus kvmKmfValidate(kvmHandle h)
Fatal error.
Definition: kvmlib.h:158
kvmStatus kvmLogFileGetEndTime(kvmHandle h, uint32 *endTime)
Disk full (directory).
Definition: kvmlib.h:152
Not implemented.
Definition: kvmlib.h:157
kvmStatus kvmKmeReadEvent(kmeFileHandle h, kvmLogEventEx *e)
Device occupied.
Definition: kvmlib.h:165
General disk error.
Definition: kvmlib.h:151
uint32_t uint32
Definition: kvmlib.h:55
uint32 fwBuild
Definition: kvmlib.h:310
A trigger message.
Definition: kvmlib.h:293
No disk found.
Definition: kvmlib.h:145
Device communication error.
Definition: kvmlib.h:164
kvmStatus
Definition: kvmlib.h:136
Sector unexpectadly erased.
Definition: kvmlib.h:149
Error in supplied parameters.
Definition: kvmlib.h:139
int32 preTrigger
Pretrigger time in milliseconds.
Definition: kvmlib.h:295
Can&#39;t find/open log file.
Definition: kvmlib.h:140
kvmStatus kvmLogFileGetStartTime(kvmHandle h, uint32 *startTime)
uint8_t uint8
Definition: kvmlib.h:51
int32_t int32
Definition: kvmlib.h:54
kvmStatus kvmKmfGetDbaseFile(kvmHandle h, char *path, char *filenamebuf, size_t buflen)
Result is too big for an out-parameter.
Definition: kvmlib.h:170
kvmStatus kvmDeviceSetRTC(kvmHandle h, uint32 t)
kvmStatus kvmDeviceDiskSize(kvmHandle h, uint32 *diskSize)
A version message.
Definition: kvmlib.h:304
kvmHandle kvmKmfOpenEx(const char *filename, kvmStatus *status, int32 deviceType, int *ldfMajor, int *ldfMinor)
uint32 calendarTime
RTC date, seconds since 1970-01-01T00:00:00+00:00 (UTC)
Definition: kvmlib.h:285
kvmHandle kvmKmfOpen(const char *filename, kvmStatus *status, int32 deviceType)
uint32 eanHi
Definition: kvmlib.h:312
kvmStatus kvmKmeCountEvents(kmeFileHandle h, uint32 *eventCount)
kvmHandle kvmDeviceOpen(int32 cardNr, kvmStatus *status, int32 deviceType)
Start time not found.
Definition: kvmlib.h:141
void kvmInitialize(void)
Unexpected sequence.
Definition: kvmlib.h:154
kvmStatus kvmKmfPutDbaseFile(kvmHandle h, char *filename)
A CAN/LIN message.
Definition: kvmlib.h:272
kvmStatus kvmGetVersion(int *major, int *minor, int *build)
kvmStatus kvmDeviceGetSerialNumber(kvmHandle h, unsigned int *serial)