kvmlib.h
Go to the documentation of this file.
1 /*
2 * Copyright 2017 by Kvaser AB, Molndal, Sweden
3 * http://www.kvaser.com
4 *
5 * This software is dual licensed under the following two licenses:
6 * BSD-new and GPLv2. You may use either one. See the included
7 * COPYING file for details.
8 *
9 * License: BSD-new
10 * ==============================================================================
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions are met:
13 * * Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * * Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 * * Neither the name of the <organization> nor the
19 * names of its contributors may be used to endorse or promote products
20 * derived from this software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
29 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
30 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 * POSSIBILITY OF SUCH DAMAGE.
33 *
34 *
35 * License: GPLv2
36 * ==============================================================================
37 * This program is free software; you can redistribute it and/or modify
38 * it under the terms of the GNU General Public License as published by
39 * the Free Software Foundation; either version 2 of the License, or
40 * (at your option) any later version.
41 *
42 * This program is distributed in the hope that it will be useful,
43 * but WITHOUT ANY WARRANTY; without even the implied warranty of
44 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
45 * GNU General Public License for more details.
46 *
47 * You should have received a copy of the GNU General Public License
48 * along with this program; if not, write to the Free Software
49 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
50 *
51 *
52 * IMPORTANT NOTICE:
53 * ==============================================================================
54 * This source code is made available for free, as an open license, by Kvaser AB,
55 * for use with its applications. Kvaser AB does not accept any liability
56 * whatsoever for any third party patent or other immaterial property rights
57 * violations that may result from any usage of this source code, regardless of
58 * the combination of source code and various applications that it can be used
59 * in, or with.
60 *
61 * -----------------------------------------------------------------------------
62 */
63 
64 #ifndef KVMLIB_H
65 #define KVMLIB_H
66 
101 #define WINAPI
102 #define INVALID_HANDLE_VALUE NULL
103 typedef void* HANDLE;
104 #include <stdint.h>
105 #include <stdio.h>
106 
107 typedef int8_t int8;
108 typedef uint8_t uint8;
109 typedef int16_t int16;
110 typedef uint16_t uint16;
111 typedef int32_t int32;
112 typedef uint32_t uint32;
113 typedef int64_t int64;
114 
115 
116 #ifdef __cplusplus
117 extern "C" {
118 #endif
119 
128 #define kvmDEVICE_MHYDRA 0
129 #define kvmDEVICE_MHYDRA_EXT 1
130 
140 #define kvmLDF_MAJOR_CAN 3
141 #define kvmLDF_MAJOR_CAN64 5
142 
147 typedef HANDLE kmeFileHandle;
148 
157 #define kvmFS_FAT16 0
158 #define kvmFS_FAT32 1
159 
169 #define kvmFILE_KME24 0
170 #define kvmFILE_KME25 1
171 #define kvmFILE_KME40 2
172 #define kvmFILE_KME50 3
173 
178 typedef HANDLE kvmHandle;
179 
180 
191  // If you change here, remember to also change kvmlib.cpp and kvmlibtest...
192 typedef enum {
193  kvmOK = 0,
194  kvmFail = -1,
200  kvmEOF = -12,
227 
228 } kvmStatus;
239 #define kvmLogFileType_ERR 0
240 #define kvmLogFileType_ALL 1
241 
252 #define kvm_SWINFO_KVMLIB 1
253 #define kvm_SWINFO_DRIVER 2
254 #define kvm_SWINFO_FIRMWARE 3
255 #define kvm_SWINFO_DRIVER_PRODUCT 4
256 #define kvm_SWINFO_CONFIG_VERSION_NEEDED 5
257 #define kvm_SWINFO_CPLD_VERSION 6
258 
260 #include <pshpack1.h>
261 
262 #ifndef canMSG_RTR
263 
272 # define canMSG_RTR 0x0001
273 # define canMSG_STD 0x0002
274 # define canMSG_EXT 0x0004
275 # define canMSG_ERROR_FRAME 0x0020
276 # define canMSG_TXACK 0x0040
277 # define canMSG_TXRQ 0x0080
278 # define canMSGERR_OVERRUN 0x0600
279 # define canFDMSG_EDL 0x010000
280 # define canFDMSG_FDF 0x010000
281 # define canFDMSG_BRS 0x020000
282 # define canFDMSG_ESI 0x040000
283 
284 #endif
285 
294 #define TRIGVAR_TYPE_MSG_ID 0
295 #define TRIGVAR_TYPE_MSG_DLC 1
296 #define TRIGVAR_TYPE_MSG_FLAG 2
297 #define TRIGVAR_TYPE_SIGVAL 3
298 #define TRIGVAR_TYPE_EXTERNAL 4
299 #define TRIGVAR_TYPE_TIMER 5
300 #define TRIGVAR_TYPE_DISK_FULL 6
301 #define TRIGVAR_TYPE_STARTUP 9
302 
307 typedef struct {
313  uint8 data[64];
314 } kvmLogMsgEx;
315 
319 typedef struct {
323 
324 
328 typedef struct {
335 
339 typedef struct
340 {
341  uint32 lioMajor; // Lio major version
342  uint32 lioMinor; // Lio minor version
343  uint32 fwMajor; // Firmware major version
344  uint32 fwMinor; // Firmware major version
345  uint32 fwBuild; // Firmware build version
346  uint32 serialNumber; // Serial number
347  uint32 eanHi; // EAN high bytes
348  uint32 eanLo; // EAN low bytes
350 
351 
359 #define kvmLOG_TYPE_INVALID 0
360 #define kvmLOG_TYPE_CLOCK 1
361 #define kvmLOG_TYPE_MSG 2
362 #define kvmLOG_TYPE_TRIGGER 3
363 #define kvmLOG_TYPE_VERSION 4
364 
369 typedef struct {
371  union {
376  uint8 raw[128];
377  } eventUnion;
378 } kvmLogEventEx;
379 
380 #include <poppack.h>
381 
391 void WINAPI kvmInitialize(void);
392 
408 kvmStatus WINAPI kvmGetVersion(int *major, int *minor, int *build);
409 
422 kvmStatus WINAPI kvmGetErrorText(kvmStatus error, char *buf, size_t len);
423 
441 
462  kvmStatus *status,
463  int32 deviceType);
464 
484 
506 kvmStatus WINAPI kvmDeviceMountKmfEx(kvmHandle h, int *ldfMajor, int *ldfMinor);
507 
532 kvmHandle WINAPI kvmKmfOpen(const char *filename,
533  kvmStatus *status,
534  int32 deviceType);
535 
563 kvmHandle WINAPI kvmKmfOpenEx(const char *filename,
564  kvmStatus *status,
565  int32 deviceType,
566  int *ldfMajor,
567  int *ldfMinor);
568 
583 
608  int fileSystem,
609  uint32 reserveSpace,
610  uint32 dbaseSpace);
611 
627 
643 kvmStatus WINAPI kvmLogFileGetType(kvmHandle h, uint32 fileIndx, int32 *logFileType);
644 
669  uint32 *eventCount);
670 
690  int64 *eventCount);
691 
704 
721  uint32 *startTime);
722 
739  uint32 *endTime);
740 
757  uint32 *serialNumber);
758 
776 
777 
792 
810 
828  uint32 *totalSectorCount,
829  uint32 *usedSectorCount);
830 
847 
862 kvmStatus WINAPI kvmDeviceGetSerialNumber(kvmHandle h, unsigned int *serial);
863 
883  int32 itemCode,
884  unsigned int *major,
885  unsigned int *minor,
886  unsigned int *build,
887  unsigned int *flags);
902 
903 
921 
939 
957  size_t buflen, size_t *actual_len);
958 
974 kvmStatus WINAPI kvmKmfWriteConfig(kvmHandle h, void *buf, size_t buflen);
975 
976 
996 kvmStatus WINAPI kvmKmfGetDbaseFile(kvmHandle h, char *path, char *filenamebuf, size_t buflen);
997 
1015 kvmStatus WINAPI kvmKmfPutDbaseFile(kvmHandle h, char *filename);
1016 
1031 
1050 kmeFileHandle WINAPI kvmKmeOpenFile (const char *filename,
1051  kvmStatus *status,
1052  int32 fileType);
1053 
1071 kvmStatus WINAPI kvmKmeScanFileType (const char *filename,
1072  int32 *fileType);
1073 
1095 kmeFileHandle WINAPI kvmKmeCreateFile (const char *filename,
1096  kvmStatus *status,
1097  int32 fileType);
1098 
1118 
1137 
1161 
1180 
1199 
1230 #ifdef __cplusplus
1231 }
1232 #endif
1233 
1234 #endif //KVMLIB_H
kvmStatus kvmKmeCountEvents(kmeFileHandle h, uint32 *eventCount)
kvmStatus kvmLogFileDeleteAll(kvmHandle h)
HANDLE kvmHandle
A handle to a Memorator or equivalent KMF file.
Definition: kvmlib.h:178
int32 postTrigger
Posttrigger time in milliseconds.
Definition: kvmlib.h:331
No log message found.
Definition: kvmlib.h:198
kvmStatus kvmDeviceDiskSize(kvmHandle h, uint32 *diskSize)
kvmStatus kvmKmeCloseFile(kmeFileHandle h)
kvmStatus kvmLogFileGetStartTime(kvmHandle h, uint32 *startTime)
void * HANDLE
Definition: kvmlib.h:103
uint32 fwBuild
Definition: kvmlib.h:345
kvmStatus kvmKmfGetUsage(kvmHandle h, uint32 *totalSectorCount, uint32 *usedSectorCount)
uint32 calendarTime
RTC date, seconds since 1970-01-01T00:00:00+00:00 (UTC)
Definition: kvmlib.h:320
#define WINAPI
Definition: kvmlib.h:101
kvmStatus kvmDeviceFormatDisk(kvmHandle h, int fileSystem, uint32 reserveSpace, uint32 dbaseSpace)
Timeout.
Definition: kvmlib.h:219
kvmLogMsgEx msg
A CAN message.
Definition: kvmlib.h:372
kvmStatus kvmDeviceGetSoftwareInfo(kvmHandle h, int32 itemCode, unsigned int *major, unsigned int *minor, unsigned int *build, unsigned int *flags)
kvmStatus
Definition: kvmlib.h:192
Configuration error.
Definition: kvmlib.h:224
Unexpected sequence.
Definition: kvmlib.h:210
kvmStatus kvmKmeScanFileType(const char *filename, int32 *fileType)
kvmHandle kvmDeviceOpen(int32 cardNr, kvmStatus *status, int32 deviceType)
Wrong disk type.
Definition: kvmlib.h:218
kvmHandle kvmKmfOpen(const char *filename, kvmStatus *status, int32 deviceType)
kvmLogVersionEx ver
A version message.
Definition: kvmlib.h:375
OK!
Definition: kvmlib.h:193
A RTC clock message.
Definition: kvmlib.h:319
kvmStatus kvmGetVersion(int *major, int *minor, int *build)
uint32 dlc
The length of the message.
Definition: kvmlib.h:311
int64 timeStamp
The timestamp in units of 1 nanosecond.
Definition: kvmlib.h:309
Sector unexpectadly erased.
Definition: kvmlib.h:205
Disk not formatted.
Definition: kvmlib.h:217
kvmStatus kvmKmfReadConfig(kvmHandle h, void *buf, size_t buflen, size_t *actual_len)
A CAN message.
Definition: kvmlib.h:307
Error in supplied parameters.
Definition: kvmlib.h:195
kvmStatus kvmDeviceMountKmf(kvmHandle h)
The union of events used by kvmKmeReadEvent().
Definition: kvmlib.h:369
CRC check failed.
Definition: kvmlib.h:204
void kvmInitialize(void)
kvmStatus kvmDeviceDiskStatus(kvmHandle h, int *present)
Result is too big for an out-parameter.
Definition: kvmlib.h:226
Device communication error.
Definition: kvmlib.h:220
General disk error.
Definition: kvmlib.h:207
uint8_t uint8
Definition: kvmlib.h:108
File I/O error.
Definition: kvmlib.h:206
Disk full (data).
Definition: kvmlib.h:209
kvmStatus kvmDeviceGetSerialNumber(kvmHandle h, unsigned int *serial)
kvmStatus kvmLogFileGetCount(kvmHandle h, uint32 *fileCount)
File not found.
Definition: kvmlib.h:216
kvmStatus kvmDeviceFlashLeds(kvmHandle h)
int8_t int8
Definition: kvmlib.h:107
kvmStatus kvmLogFileGetEndTime(kvmHandle h, uint32 *endTime)
A version message.
Definition: kvmlib.h:339
uint32 eanHi
Definition: kvmlib.h:347
kvmStatus kvmKmfEraseDbaseFile(kvmHandle h)
kvmStatus kvmClose(kvmHandle h)
kvmStatus kvmKmfPutDbaseFile(kvmHandle h, char *filename)
Firmware error.
Definition: kvmlib.h:223
Fatal error.
Definition: kvmlib.h:214
uint32 type
kvmLOG_TYPE_xxx, Event types in log
Definition: kvmlib.h:370
uint32 fwMinor
Definition: kvmlib.h:344
HANDLE kmeFileHandle
A handle to a KME file.
Definition: kvmlib.h:147
uint32 lioMinor
Definition: kvmlib.h:342
Illegal request.
Definition: kvmlib.h:215
uint16_t uint16
Definition: kvmlib.h:110
Unsupported version.
Definition: kvmlib.h:212
uint32 flags
Message flags canMSG_xxx.
Definition: kvmlib.h:312
kvmStatus kvmDeviceGetRTC(kvmHandle h, uint32 *t)
uint32 serialNumber
Definition: kvmlib.h:346
kvmStatus kvmLogFileMount(kvmHandle h, uint32 fileIndx, uint32 *eventCount)
kvmHandle kvmKmfOpenEx(const char *filename, kvmStatus *status, int32 deviceType, int *ldfMajor, int *ldfMinor)
int64 timeStamp
The timestamp in units of 1 nanosecond.
Definition: kvmlib.h:333
No disk found.
Definition: kvmlib.h:201
Start time not found.
Definition: kvmlib.h:197
kvmStatus kvmKmeCountEventsEx(kmeFileHandle h, int64 *eventCount)
uint32_t uint32
Definition: kvmlib.h:112
int16_t int16
Definition: kvmlib.h:109
uint32 lioMajor
Definition: kvmlib.h:341
int64_t int64
Definition: kvmlib.h:113
kvmStatus kvmDeviceSetRTC(kvmHandle h, uint32 t)
End of file found.
Definition: kvmlib.h:200
int32 type
The type of trigger TRIGVAR_TYPE_xxx.
Definition: kvmlib.h:329
A trigger message.
Definition: kvmlib.h:328
kvmStatus kvmKmfGetDbaseFile(kvmHandle h, char *path, char *filenamebuf, size_t buflen)
Disk is write protected.
Definition: kvmlib.h:225
User abort.
Definition: kvmlib.h:222
kvmStatus kvmKmfValidate(kvmHandle h)
uint32 id
The message identifier.
Definition: kvmlib.h:308
uint32 trigMask
Bitmask with all active triggers.
Definition: kvmlib.h:332
uint32 fwMajor
Definition: kvmlib.h:343
int32_t int32
Definition: kvmlib.h:111
kmeFileHandle kvmKmeOpenFile(const char *filename, kvmStatus *status, int32 fileType)
Device occupied.
Definition: kvmlib.h:221
Error while reading log file.
Definition: kvmlib.h:202
int64_t int64
Definition: kvlclib.h:106
kvmStatus kvmDeviceMountKmfEx(kvmHandle h, int *ldfMajor, int *ldfMinor)
kvmStatus kvmLogFileMountEx(kvmHandle h, uint32 fileIndx, int64 *eventCount)
kvmStatus kvmLogFileDismount(kvmHandle h)
kvmLogTriggerEx trig
A trigger message.
Definition: kvmlib.h:374
Not implemented.
Definition: kvmlib.h:213
kvmStatus kvmKmfWriteConfig(kvmHandle h, void *buf, size_t buflen)
File system corrupt.
Definition: kvmlib.h:211
kvmStatus kvmLogFileReadEvent(kvmHandle h, kvmLogEventEx *e)
Queue is full.
Definition: kvmlib.h:203
Error writing log file.
Definition: kvmlib.h:199
uint32 channel
The device channel on which the message arrived, 0,1,...
Definition: kvmlib.h:310
int64 timeStamp
The timestamp in units of 1 nanosecond.
Definition: kvmlib.h:321
kvmStatus kvmKmeReadEvent(kmeFileHandle h, kvmLogEventEx *e)
Generic error.
Definition: kvmlib.h:194
int32 preTrigger
Pretrigger time in milliseconds.
Definition: kvmlib.h:330
kvmStatus kvmLogFileGetType(kvmHandle h, uint32 fileIndx, int32 *logFileType)
kvmStatus kvmLogFileGetCreatorSerial(kvmHandle h, uint32 *serialNumber)
kmeFileHandle kvmKmeCreateFile(const char *filename, kvmStatus *status, int32 fileType)
kvmStatus kvmGetErrorText(kvmStatus error, char *buf, size_t len)
kvmStatus kvmKmeWriteEvent(kmeFileHandle h, kvmLogEventEx *e)
kvmLogRtcClockEx rtc
An RTC message.
Definition: kvmlib.h:373
Can&#39;t find/open log file.
Definition: kvmlib.h:196
uint32 eanLo
Definition: kvmlib.h:348
Disk full (directory).
Definition: kvmlib.h:208