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,
226 
227 } kvmStatus;
240 #define kvm_SWINFO_KVMLIB 1
241 #define kvm_SWINFO_DRIVER 2
242 #define kvm_SWINFO_FIRMWARE 3
243 #define kvm_SWINFO_DRIVER_PRODUCT 4
244 #define kvm_SWINFO_CONFIG_VERSION_NEEDED 5
245 #define kvm_SWINFO_CPLD_VERSION 6
246 
248 #include <pshpack1.h>
249 
250 #ifndef canMSG_RTR
251 
260 # define canMSG_RTR 0x0001
261 # define canMSG_STD 0x0002
262 # define canMSG_EXT 0x0004
263 # define canMSG_ERROR_FRAME 0x0020
264 # define canMSG_TXACK 0x0040
265 # define canMSG_TXRQ 0x0080
266 # define canMSGERR_OVERRUN 0x0600
267 # define canFDMSG_EDL 0x010000
268 # define canFDMSG_FDF 0x010000
269 # define canFDMSG_BRS 0x020000
270 # define canFDMSG_ESI 0x040000
271 
272 #endif
273 
282 #define TRIGVAR_TYPE_MSG_ID 0
283 #define TRIGVAR_TYPE_MSG_DLC 1
284 #define TRIGVAR_TYPE_MSG_FLAG 2
285 #define TRIGVAR_TYPE_SIGVAL 3
286 #define TRIGVAR_TYPE_EXTERNAL 4
287 #define TRIGVAR_TYPE_TIMER 5
288 #define TRIGVAR_TYPE_DISK_FULL 6
289 #define TRIGVAR_TYPE_STARTUP 9
290 
295 typedef struct {
301  uint8 data[64];
302 } kvmLogMsgEx;
303 
307 typedef struct {
311 
312 
316 typedef struct {
323 
327 typedef struct
328 {
329  uint32 lioMajor; // Lio major version
330  uint32 lioMinor; // Lio minor version
331  uint32 fwMajor; // Firmware major version
332  uint32 fwMinor; // Firmware major version
333  uint32 fwBuild; // Firmware build version
334  uint32 serialNumber; // Serial number
335  uint32 eanHi; // EAN high bytes
336  uint32 eanLo; // EAN low bytes
338 
339 
347 #define kvmLOG_TYPE_INVALID 0
348 #define kvmLOG_TYPE_CLOCK 1
349 #define kvmLOG_TYPE_MSG 2
350 #define kvmLOG_TYPE_TRIGGER 3
351 #define kvmLOG_TYPE_VERSION 4
352 
357 typedef struct {
359  union {
364  uint8 raw[128];
365  } eventUnion;
366 } kvmLogEventEx;
367 
368 #include <poppack.h>
369 
379 void WINAPI kvmInitialize(void);
380 
393 kvmStatus WINAPI kvmGetVersion(int *major, int *minor, int *build);
394 
407 kvmStatus WINAPI kvmGetErrorText(kvmStatus error, char *buf, size_t len);
408 
426 
447  kvmStatus *status,
448  int32 deviceType);
449 
469 
491 kvmStatus WINAPI kvmDeviceMountKmfEx(kvmHandle h, int *ldfMajor, int *ldfMinor);
492 
517 kvmHandle WINAPI kvmKmfOpen(const char *filename,
518  kvmStatus *status,
519  int32 deviceType);
520 
548 kvmHandle WINAPI kvmKmfOpenEx(const char *filename,
549  kvmStatus *status,
550  int32 deviceType,
551  int *ldfMajor,
552  int *ldfMinor);
553 
568 
593  int fileSystem,
594  uint32 reserveSpace,
595  uint32 dbaseSpace);
596 
612 
632  uint32 *eventCount);
633 
645 
662  uint32 *startTime);
663 
680  uint32 *endTime);
681 
698  uint32 *serialNumber);
699 
717 
718 
733 
751 
769  uint32 *totalSectorCount,
770  uint32 *usedSectorCount);
771 
788 
803 kvmStatus WINAPI kvmDeviceGetSerialNumber(kvmHandle h, unsigned int *serial);
804 
824  int32 itemCode,
825  unsigned int *major,
826  unsigned int *minor,
827  unsigned int *build,
828  unsigned int *flags);
843 
844 
862 
880 
898  size_t buflen, size_t *actual_len);
899 
915 kvmStatus WINAPI kvmKmfWriteConfig(kvmHandle h, void *buf, size_t buflen);
916 
917 
937 kvmStatus WINAPI kvmKmfGetDbaseFile(kvmHandle h, char *path, char *filenamebuf, size_t buflen);
938 
956 kvmStatus WINAPI kvmKmfPutDbaseFile(kvmHandle h, char *filename);
957 
972 
991 kmeFileHandle WINAPI kvmKmeOpenFile (const char *filename,
992  kvmStatus *status,
993  int32 fileType);
994 
1012 kvmStatus WINAPI kvmKmeScanFileType (const char *filename,
1013  int32 *fileType);
1014 
1036 kmeFileHandle WINAPI kvmKmeCreateFile (const char *filename,
1037  kvmStatus *status,
1038  int32 fileType);
1039 
1059 
1078 
1097 
1116 
1147 #ifdef __cplusplus
1148 }
1149 #endif
1150 
1151 #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:319
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:333
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:308
#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:360
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:363
OK!
Definition: kvmlib.h:193
A RTC clock message.
Definition: kvmlib.h:307
kvmStatus kvmGetVersion(int *major, int *minor, int *build)
uint32 dlc
The length of the message.
Definition: kvmlib.h:299
int64 timeStamp
The timestamp in units of 1 nanosecond.
Definition: kvmlib.h:297
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:295
Error in supplied parameters.
Definition: kvmlib.h:195
kvmStatus kvmDeviceMountKmf(kvmHandle h)
The union of events used by kvmKmeReadEvent().
Definition: kvmlib.h:357
CRC check failed.
Definition: kvmlib.h:204
void kvmInitialize(void)
kvmStatus kvmDeviceDiskStatus(kvmHandle h, int *present)
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:327
uint32 eanHi
Definition: kvmlib.h:335
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:358
uint32 fwMinor
Definition: kvmlib.h:332
HANDLE kmeFileHandle
A handle to a KME file.
Definition: kvmlib.h:147
uint32 lioMinor
Definition: kvmlib.h:330
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:300
kvmStatus kvmDeviceGetRTC(kvmHandle h, uint32 *t)
uint32 serialNumber
Definition: kvmlib.h:334
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:321
No disk found.
Definition: kvmlib.h:201
Start time not found.
Definition: kvmlib.h:197
uint32_t uint32
Definition: kvmlib.h:112
int16_t int16
Definition: kvmlib.h:109
uint32 lioMajor
Definition: kvmlib.h:329
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:317
A trigger message.
Definition: kvmlib.h:316
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:296
uint32 trigMask
Bitmask with all active triggers.
Definition: kvmlib.h:320
uint32 fwMajor
Definition: kvmlib.h:331
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
kvmStatus kvmDeviceMountKmfEx(kvmHandle h, int *ldfMajor, int *ldfMinor)
kvmStatus kvmLogFileDismount(kvmHandle h)
kvmLogTriggerEx trig
A trigger message.
Definition: kvmlib.h:362
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:298
int64 timeStamp
The timestamp in units of 1 nanosecond.
Definition: kvmlib.h:309
kvmStatus kvmKmeReadEvent(kmeFileHandle h, kvmLogEventEx *e)
Generic error.
Definition: kvmlib.h:194
int32 preTrigger
Pretrigger time in milliseconds.
Definition: kvmlib.h:318
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:361
Can&#39;t find/open log file.
Definition: kvmlib.h:196
uint32 eanLo
Definition: kvmlib.h:336
Disk full (directory).
Definition: kvmlib.h:208