00001
00019 #ifndef KVADBLIB_H
00020 #define KVADBLIB_H
00021
00028 #if !defined(WIN32)
00029 #define WINAPI
00030 #endif
00031
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035
00036
00047 typedef enum {
00048 kvaDbOK = 0,
00049 kvaDbErr_Fail = -1,
00050 kvaDbErr_NoDatabase = -2,
00051 kvaDbErr_Param = -3,
00052 kvaDbErr_NoMsg = -4,
00053 kvaDbErr_NoSignal = -5,
00054 kvaDbErr_Internal = -6,
00055 kvaDbErr_DbFileOpen = -7,
00056 kvaDbErr_DatabaseInternal = -8,
00057 kvaDbErr_NoNode = -9,
00058 kvaDbErr_NoAttrib = -10,
00059 kvaDbErr_OnlyOneAllowed = -11,
00060 } KvaDbStatus;
00072 #define KVADB_MESSAGE_EXT 0x80000000 ///< Message is an extended CAN message
00073 #define KVADB_MESSAGE_J1939 0x00000001 ///< Message uses J1939 protocol
00074 #define KVADB_MESSAGE_WAKEUP 0x00000002 ///< Message is a wake-up frame, Id/msg/dlc are undefined
00075
00084 typedef enum {
00085 kvaDb_Intel = 0,
00086 kvaDb_Motorola = 1,
00087 } KvaDbSignalEncoding;
00096 typedef enum {
00097 kvaDb_Invalid,
00098 kvaDb_Signed,
00099 kvaDb_Unsigned,
00100 kvaDb_Float,
00101 kvaDb_Double
00102 } KvaDbSignalType;
00112 typedef enum {
00113 kvaDb_AttributeInvalid = 0,
00114 kvaDb_AttributeInteger = 1,
00115 kvaDb_AttributeFloat = 3,
00116 kvaDb_AttributeEnumeration = 4,
00117 kvaDb_AttributeString = 5,
00118 } KvaDbAttributeType;
00128 typedef enum {
00129 kvaDb_AttributeOwnerInvalid = 0,
00130 kvaDb_AttributeOwnerDb = 1,
00131 kvaDb_AttributeOwnerMessage = 2,
00132 kvaDb_AttributeOwnerNode = 3,
00133 kvaDb_AttributeOwnerSignal = 4,
00134 kvaDb_AttributeOwnerEnv = 5,
00135 } KvaDbAttributeOwner;
00145 typedef enum {
00146 kvaDb_ProtocolCan = 0,
00147 kvaDb_ProtocolVan = 1,
00148 kvaDb_ProtocolLin = 2,
00149 kvaDb_ProtocolMOST = 3,
00150 kvaDb_ProtocolFlexRay = 4,
00151 kvaDb_ProtocolBEAN = 5,
00152 kvaDb_ProtocolEthernet = 6,
00153 kvaDb_ProtocolAFDX = 7,
00154 kvaDb_ProtocolJ1708 = 8,
00155 kvaDb_ProtocolCanFD = 9,
00156 kvaDb_ProtocolUnknown = 10,
00157 } KvaDbProtocolType;
00168 typedef struct {
00169 unsigned int maxMessageDlc;
00170 unsigned int maxSignalLength;
00171 } KvaDbProtocolProperties;
00172
00173
00174
00182 #define KVADB_DATABASE_J1939 0x0001 ///< The database uses the J1939 protocol
00183
00184 typedef void* KvaDbHnd;
00185 typedef void* KvaDbMessageHnd;
00186 typedef void* KvaDbSignalHnd;
00187 typedef void* KvaDbNodeHnd;
00188 typedef void* KvaDbAttributeHnd;
00189 typedef void* KvaDbAttributeDefHnd;
00190 typedef void* KvaDbEnumValueHnd;
00191
00198 #define KVADB_MUX_SIGNAL -2 ///< Multiplex mode value of a multiplexer signal
00199 #define KVADB_MUX_INDEPENDENT -1 ///< Miltiplex mode value of an independent signal
00200
00212 KvaDbStatus WINAPI kvaDbOpen(KvaDbHnd *dh);
00213
00227 KvaDbStatus WINAPI kvaDbAddFile(KvaDbHnd dh, const char *filename);
00228
00243 KvaDbStatus WINAPI kvaDbSetDummyFileName(KvaDbHnd dh, const char *filename);
00244
00269 KvaDbStatus WINAPI kvaDbCreate(KvaDbHnd dh, const char *localName, const char *filename);
00270
00281 KvaDbStatus WINAPI kvaDbClose(KvaDbHnd dh);
00282
00294 KvaDbStatus WINAPI kvaDbWriteFile(KvaDbHnd dh, char* filename);
00295
00307 KvaDbStatus WINAPI kvaDbReadFile(KvaDbHnd dh, char* filename);
00308
00322 KvaDbStatus WINAPI kvaDbGetFlags(KvaDbHnd dh, unsigned int *flags);
00323
00336 KvaDbStatus WINAPI kvaDbGetProtocol(KvaDbHnd dh, KvaDbProtocolType *prot);
00337
00338
00350 KvaDbStatus WINAPI kvaDbGetProtocolProperties(KvaDbProtocolType prot, KvaDbProtocolProperties *prop);
00351
00352
00364 KvaDbStatus WINAPI kvaDbGetFirstMsg(KvaDbHnd dh, KvaDbMessageHnd *mh);
00365
00378 KvaDbStatus WINAPI kvaDbGetNextMsg(KvaDbHnd dh, KvaDbMessageHnd *mh);
00379
00392 KvaDbStatus WINAPI kvaDbGetMsgById(KvaDbHnd dh,
00393 unsigned int id,
00394 KvaDbMessageHnd *mh);
00395
00408 KvaDbStatus WINAPI kvaDbGetMsgByName(KvaDbHnd dh,
00409 const char *msg_name,
00410 KvaDbMessageHnd *mh);
00411
00424 KvaDbStatus WINAPI kvaDbGetMsgName(KvaDbMessageHnd mh, char *buf, size_t buflen);
00425
00439 KvaDbStatus WINAPI kvaDbGetMsgQualifiedName(KvaDbMessageHnd mh, char *buf, size_t buflen);
00440
00453 KvaDbStatus WINAPI kvaDbGetMsgComment(KvaDbMessageHnd mh, char *buf, size_t buflen);
00454
00470 KvaDbStatus WINAPI kvaDbGetMsgId(KvaDbMessageHnd mh,
00471 unsigned int *id,
00472 unsigned int *flags);
00473
00485 KvaDbStatus WINAPI kvaDbGetMsgDlc(KvaDbMessageHnd mh, int *dlc);
00486
00498 KvaDbStatus WINAPI kvaDbGetMsgSendNode(KvaDbMessageHnd mh, KvaDbNodeHnd *nh);
00499
00511 KvaDbStatus WINAPI kvaDbAddMsg(KvaDbHnd dh, KvaDbMessageHnd *mh);
00512
00524 KvaDbStatus WINAPI kvaDbDeleteMsg(KvaDbHnd dh, KvaDbMessageHnd mh);
00525
00539 KvaDbStatus WINAPI kvaDbSetFlags(KvaDbHnd dh, unsigned int flags);
00540
00547 KvaDbStatus WINAPI kvaDbSetProtocol(KvaDbHnd dh, KvaDbProtocolType prot);
00548
00560 KvaDbStatus WINAPI kvaDbSetMsgName(KvaDbMessageHnd mh, char *buf);
00561
00573 KvaDbStatus WINAPI kvaDbSetMsgComment(KvaDbMessageHnd mh, char *buf);
00574
00590 KvaDbStatus WINAPI kvaDbSetMsgId(KvaDbMessageHnd mh, unsigned int id, unsigned int flags);
00591
00603 KvaDbStatus WINAPI kvaDbSetMsgDlc(KvaDbMessageHnd mh, int dlc);
00604
00616 KvaDbStatus WINAPI kvaDbSetMsgSendNode(KvaDbMessageHnd mh, KvaDbNodeHnd nh);
00617
00627 KvaDbStatus WINAPI kvaDbGetMsgMux(KvaDbMessageHnd mh, KvaDbSignalHnd *shh);
00628
00640 KvaDbStatus WINAPI kvaDbGetFirstSignal(KvaDbMessageHnd mh, KvaDbSignalHnd *sh);
00641
00654 KvaDbStatus WINAPI kvaDbGetNextSignal(KvaDbMessageHnd mh, KvaDbSignalHnd *sh);
00655
00668 KvaDbStatus WINAPI kvaDbGetSignalByName(KvaDbMessageHnd mh, char *buf, KvaDbSignalHnd *sh);
00669
00681 KvaDbStatus WINAPI kvaDbSetSignalMode(KvaDbSignalHnd sh, int mux);
00682
00695 KvaDbStatus WINAPI kvaDbGetSignalMode(KvaDbSignalHnd sh, int *mux);
00696
00710 KvaDbStatus WINAPI kvaDbGetSignalValueFloat(KvaDbSignalHnd sh, double *f, void *data, size_t len);
00711
00725 KvaDbStatus WINAPI kvaDbGetSignalValueInteger(KvaDbSignalHnd sh, int *f, void *data, size_t len);
00726
00741 KvaDbStatus WINAPI kvaDbGetSignalValueEnum(KvaDbSignalHnd sh, char *buf, size_t buflen, void *data, size_t len);
00742
00743
00756 KvaDbStatus WINAPI kvaDbGetSignalValueLimits(KvaDbSignalHnd sh, double *minval, double *maxval);
00757
00770 KvaDbStatus WINAPI kvaDbGetSignalValueScaling(KvaDbSignalHnd sh, double *factor, double *offset);
00771
00784 KvaDbStatus WINAPI kvaDbGetSignalValueSize(KvaDbSignalHnd sh, int *startbit, int *length);
00785
00798 KvaDbStatus WINAPI kvaDbGetSignalName(KvaDbSignalHnd sh, char *buf, size_t buflen);
00799
00814 KvaDbStatus WINAPI kvaDbGetSignalQualifiedName(KvaDbSignalHnd sh, char *buf, size_t buflen);
00815
00828 KvaDbStatus WINAPI kvaDbGetSignalComment(KvaDbSignalHnd sh, char *buf, size_t buflen);
00829
00842 KvaDbStatus WINAPI kvaDbGetSignalUnit(KvaDbSignalHnd sh, char *buf, size_t buflen);
00843
00855 KvaDbStatus WINAPI kvaDbGetSignalEncoding(KvaDbSignalHnd sh, KvaDbSignalEncoding *e);
00856
00868 KvaDbStatus WINAPI kvaDbGetSignalRepresentationType(KvaDbSignalHnd sh, KvaDbSignalType *t);
00869
00884 KvaDbStatus WINAPI kvaDbGetSignalPresentationType(KvaDbSignalHnd sh, KvaDbSignalType *t);
00885
00897 KvaDbStatus WINAPI kvaDbAddSignal(KvaDbMessageHnd mh, KvaDbSignalHnd *sh);
00898
00910 KvaDbStatus WINAPI kvaDbDeleteSignal(KvaDbMessageHnd mh, KvaDbSignalHnd sh);
00911
00924 KvaDbStatus WINAPI kvaDbSetSignalValueLimits(KvaDbSignalHnd sh,
00925 double minval,
00926 double maxval);
00927
00940 KvaDbStatus WINAPI kvaDbSetSignalValueScaling(KvaDbSignalHnd sh,
00941 double factor,
00942 double offset);
00943
00956 KvaDbStatus WINAPI kvaDbSetSignalValueSize(KvaDbSignalHnd sh,
00957 int startbit,
00958 int length);
00959
00971 KvaDbStatus WINAPI kvaDbSetSignalName(KvaDbSignalHnd sh, char *buf);
00972
00984 KvaDbStatus WINAPI kvaDbSetSignalComment(KvaDbSignalHnd sh, char *buf);
00985
00997 KvaDbStatus WINAPI kvaDbSetSignalUnit(KvaDbSignalHnd sh, char *buf);
00998
01010 KvaDbStatus WINAPI kvaDbSetSignalEncoding(KvaDbSignalHnd sh, KvaDbSignalEncoding e);
01011
01023 KvaDbStatus WINAPI kvaDbSetSignalRepresentationType(KvaDbSignalHnd sh, KvaDbSignalType t);
01024
01036 KvaDbStatus WINAPI kvaDbGetFirstNode(KvaDbHnd dh, KvaDbNodeHnd *nh);
01037
01049 KvaDbStatus WINAPI kvaDbGetNextNode(KvaDbHnd dh, KvaDbNodeHnd *nh);
01050
01063 KvaDbStatus WINAPI kvaDbGetNodeByName(KvaDbHnd dh, const char *node_name, KvaDbNodeHnd *nh);
01064
01077 KvaDbStatus WINAPI kvaDbGetNodeAttributeIntByName(KvaDbNodeHnd nh, const char *attrName, int *val);
01078
01088 KvaDbStatus WINAPI kvaDbAddNode(KvaDbHnd dh, KvaDbNodeHnd *nh);
01089
01099 KvaDbStatus WINAPI kvaDbDeleteNode(KvaDbHnd dh, KvaDbNodeHnd nh);
01100
01110 KvaDbStatus WINAPI kvaDbSetNodeName(KvaDbNodeHnd nh, char *buf);
01111
01122 KvaDbStatus WINAPI kvaDbGetNodeName(KvaDbNodeHnd nh, char *buf, size_t buflen);
01123
01133 KvaDbStatus WINAPI kvaDbSetNodeComment(KvaDbNodeHnd nh, char *buf);
01134
01144 KvaDbStatus WINAPI kvaDbAddReceiveNodeToSignal(KvaDbSignalHnd sh, KvaDbNodeHnd nh);
01145
01155 KvaDbStatus WINAPI kvaDbRemoveReceiveNodeFromSignal(KvaDbSignalHnd sh, KvaDbNodeHnd nh);
01156
01167 KvaDbStatus WINAPI kvaDbSignalContainsReceiveNode(KvaDbSignalHnd sh, KvaDbNodeHnd nh);
01168
01169
01183 KvaDbStatus WINAPI kvaDbStoreSignalValuePhys(KvaDbSignalHnd sh, unsigned char *can_data, int dlc, double value);
01184
01198 KvaDbStatus WINAPI kvaDbStoreSignalValueRaw(KvaDbSignalHnd sh, unsigned char *can_data, int dlc, int value);
01199
01211 KvaDbStatus WINAPI kvaDbGetFirstAttributeDefinition(KvaDbHnd dh, KvaDbAttributeDefHnd *adh);
01212
01223 KvaDbStatus WINAPI kvaDbGetAttributeDefinitionByName(KvaDbHnd dh, const char *attrName, KvaDbAttributeDefHnd *adh);
01224
01236 KvaDbStatus WINAPI kvaDbGetNextAttributeDefinition(KvaDbAttributeDefHnd adh, KvaDbAttributeDefHnd *nadh);
01237
01249 KvaDbStatus WINAPI kvaDbGetAttributeDefinitionType(KvaDbAttributeDefHnd adh, KvaDbAttributeType *at);
01250
01262 KvaDbStatus WINAPI kvaDbGetAttributeDefinitionOwner(KvaDbAttributeDefHnd adh, KvaDbAttributeOwner *ao);
01263
01276 KvaDbStatus WINAPI kvaDbGetAttributeDefinitionName(KvaDbAttributeDefHnd adh, char *buf, size_t buflen);
01277
01289 KvaDbStatus WINAPI kvaDbGetAttributeDefinitionInt(KvaDbAttributeDefHnd adh, int *def, int *min, int *max);
01290
01302 KvaDbStatus WINAPI kvaDbGetAttributeDefinitionFloat(KvaDbAttributeDefHnd adh, float *def, float *min, float *max);
01303
01314 KvaDbStatus WINAPI kvaDbGetAttributeDefinitionString(KvaDbAttributeDefHnd adh, char *buf, size_t buflen);
01315
01325 KvaDbStatus WINAPI kvaDbGetAttributeDefinitionEnumeration(KvaDbAttributeDefHnd adh, int *def);
01326
01336 KvaDbStatus WINAPI kvaDbAddAttributeDefinition(KvaDbHnd dh, KvaDbAttributeDefHnd *adh);
01337
01347 KvaDbStatus WINAPI kvaDbSetAttributeDefinitionName(KvaDbAttributeDefHnd adh, const char *adName);
01348
01358 KvaDbStatus WINAPI kvaDbSetAttributeDefinitionType(KvaDbAttributeDefHnd adh, KvaDbAttributeType adType);
01359
01369 KvaDbStatus WINAPI kvaDbSetAttributeDefinitionOwner(KvaDbAttributeDefHnd adh, KvaDbAttributeOwner adOwner);
01370
01381 KvaDbStatus WINAPI kvaDbAddAttributeDefinitionEnum(KvaDbAttributeDefHnd adh, const char* eName, int eValue);
01382
01392 KvaDbStatus WINAPI kvaDbSetAttributeDefinitionEnumDefault(KvaDbAttributeDefHnd adh, int dValue);
01393
01405 KvaDbStatus WINAPI kvaDbSetAttributeDefinitionInt(KvaDbAttributeDefHnd adh, int def, int min, int max);
01406
01418 KvaDbStatus WINAPI kvaDbSetAttributeDefinitionFloat(KvaDbAttributeDefHnd adh, float def, float min, float max);
01419
01429 KvaDbStatus WINAPI kvaDbSetAttributeDefinitionString(KvaDbAttributeDefHnd adh, const char *buf);
01430
01443 KvaDbStatus WINAPI kvaDbAddMsgAttribute(KvaDbMessageHnd mh, KvaDbAttributeDefHnd adh, KvaDbAttributeHnd *ah);
01444
01456 KvaDbStatus WINAPI kvaDbDeleteMsgAttribute(KvaDbMessageHnd mh, KvaDbAttributeHnd ah);
01457
01470 KvaDbStatus WINAPI kvaDbAddSignalAttribute(KvaDbSignalHnd sh, KvaDbAttributeDefHnd adh, KvaDbAttributeHnd *ah);
01471
01483 KvaDbStatus WINAPI kvaDbGetFirstEnumValue(KvaDbSignalHnd sh, KvaDbEnumValueHnd *eh);
01484
01497 KvaDbStatus WINAPI kvaDbGetNextEnumValue(KvaDbSignalHnd sh, KvaDbEnumValueHnd *eh);
01498
01512 KvaDbStatus WINAPI kvaDbGetEnumValue(KvaDbEnumValueHnd eh, int *val, char *buf, size_t buflen);
01513
01526 KvaDbStatus WINAPI kvaDbAddEnumValue(KvaDbSignalHnd sh, int val, const char* name);
01527
01539 KvaDbStatus WINAPI kvaDbDeleteEnumValue(KvaDbSignalHnd sh, KvaDbEnumValueHnd eh);
01540
01552 KvaDbStatus WINAPI kvaDbDeleteSignalAttribute(KvaDbSignalHnd sh, KvaDbAttributeHnd ah);
01553
01566 KvaDbStatus WINAPI kvaDbAddNodeAttribute(KvaDbNodeHnd nh, KvaDbAttributeDefHnd adh, KvaDbAttributeHnd *ah);
01567
01579 KvaDbStatus WINAPI kvaDbDeleteNodeAttribute(KvaDbNodeHnd nh, KvaDbAttributeHnd ah);
01580
01592 KvaDbStatus WINAPI kvaDbGetFirstMsgAttribute(KvaDbMessageHnd mh, KvaDbAttributeHnd *ah);
01593
01604 KvaDbStatus WINAPI kvaDbGetMsgAttributeByName(KvaDbMessageHnd mh, const char *attrName, KvaDbAttributeHnd *ah);
01605
01617 KvaDbStatus WINAPI kvaDbGetFirstSignalAttribute(KvaDbSignalHnd sh, KvaDbAttributeHnd *ah);
01618
01629 KvaDbStatus WINAPI kvaDbGetSignalAttributeByName(KvaDbSignalHnd sh, const char *attrName, KvaDbAttributeHnd *ah);
01630
01642 KvaDbStatus WINAPI kvaDbGetFirstNodeAttribute(KvaDbNodeHnd nh, KvaDbAttributeHnd *ah);
01643
01654 KvaDbStatus WINAPI kvaDbGetNodeAttributeByName(KvaDbNodeHnd nh, const char *attrName, KvaDbAttributeHnd *ah);
01655
01669 KvaDbStatus WINAPI kvaDbGetNextAttribute(KvaDbAttributeHnd ah, KvaDbAttributeHnd *nah);
01670
01682 KvaDbStatus WINAPI kvaDbGetAttributeType(KvaDbAttributeHnd ah, KvaDbAttributeType *at);
01683
01696 KvaDbStatus WINAPI kvaDbGetAttributeName(KvaDbAttributeHnd adh, char *buf, size_t buflen);
01697
01709 KvaDbStatus WINAPI kvaDbSetAttributeValueInt(KvaDbAttributeHnd ah, int val);
01710
01722 KvaDbStatus WINAPI kvaDbGetAttributeValueInt(KvaDbAttributeHnd ah, int *val);
01723
01735 KvaDbStatus WINAPI kvaDbSetAttributeValueFloat(KvaDbAttributeHnd ah, float val);
01736
01748 KvaDbStatus WINAPI kvaDbGetAttributeValueFloat(KvaDbAttributeHnd ah, float *val);
01749
01762 KvaDbStatus WINAPI kvaDbSetAttributeValueString(KvaDbAttributeHnd ah, const char *buf, int buflen);
01763
01776 KvaDbStatus WINAPI kvaDbGetAttributeValueString(KvaDbAttributeHnd ah, char *buf, size_t buflen);
01777
01789 KvaDbStatus WINAPI kvaDbSetAttributeValueEnumeration(KvaDbAttributeHnd ah, int val);
01790
01802 KvaDbStatus WINAPI kvaDbGetAttributeValueEnumeration(KvaDbAttributeHnd ah, int *val);
01803
01804
01817 KvaDbStatus WINAPI kvaDbMsgDlcToBytes(KvaDbProtocolType prot, unsigned int dlc, unsigned int *numBytes);
01818
01831 KvaDbStatus WINAPI kvaDbBytesToMsgDlc(KvaDbProtocolType prot, unsigned int numBytes, unsigned int *dlc);
01832
01833
01834 #ifdef __cplusplus
01835 }
01836 #endif
01837
01840 #endif //KVADBLIB_H