00001
00019 #ifndef KVADBLIB_H
00020 #define KVADBLIB_H
00021
00028 #ifdef __cplusplus
00029 extern "C" {
00030 #endif
00031
00032
00043 typedef enum {
00044 kvaDbOK = 0,
00045 kvaDbErr_Fail = -1,
00046 kvaDbErr_NoDatabase = -2,
00047 kvaDbErr_Param = -3,
00048 kvaDbErr_NoMsg = -4,
00049 kvaDbErr_NoSignal = -5,
00050 kvaDbErr_Internal = -6,
00051 kvaDbErr_DbFileOpen = -7,
00052 kvaDbErr_DatabaseInternal = -8,
00053 kvaDbErr_NoNode = -9,
00054 kvaDbErr_NoAttrib = -10,
00055 kvaDbErr_OnlyOneAllowed = -11,
00056 } KvaDbStatus;
00068 #define KVADB_MESSAGE_EXT 0x80000000 ///< Message is an extended CAN message
00069 #define KVADB_MESSAGE_J1939 0x00000001 ///< Message uses J1939 protocol
00070 #define KVADB_MESSAGE_WAKEUP 0x00000002 ///< Message is a wake-up frame, Id/msg/dlc are undefined
00071
00080 typedef enum {
00081 kvaDb_Intel = 0,
00082 kvaDb_Motorola = 1,
00083 } KvaDbSignalEncoding;
00092 typedef enum {
00093 kvaDb_Invalid,
00094 kvaDb_Signed,
00095 kvaDb_Unsigned,
00096 kvaDb_Float,
00097 kvaDb_Double
00098 } KvaDbSignalType;
00108 typedef enum {
00109 kvaDb_AttributeInvalid = 0,
00110 kvaDb_AttributeInteger = 1,
00111 kvaDb_AttributeFloat = 3,
00112 kvaDb_AttributeEnumeration = 4,
00113 kvaDb_AttributeString = 5,
00114 } KvaDbAttributeType;
00124 typedef enum {
00125 kvaDb_AttributeOwnerInvalid = 0,
00126 kvaDb_AttributeOwnerDb = 1,
00127 kvaDb_AttributeOwnerMessage = 2,
00128 kvaDb_AttributeOwnerNode = 3,
00129 kvaDb_AttributeOwnerSignal = 4,
00130 kvaDb_AttributeOwnerEnv = 5,
00131 } KvaDbAttributeOwner;
00141 typedef enum {
00142 kvaDb_ProtocolCan = 0,
00143 kvaDb_ProtocolVan = 1,
00144 kvaDb_ProtocolLin = 2,
00145 kvaDb_ProtocolMOST = 3,
00146 kvaDb_ProtocolFlexRay = 4,
00147 kvaDb_ProtocolBEAN = 5,
00148 kvaDb_ProtocolEthernet = 6,
00149 kvaDb_ProtocolAFDX = 7,
00150 kvaDb_ProtocolJ1708 = 8,
00151 kvaDb_ProtocolCanFD = 9,
00152 kvaDb_ProtocolUnknown = 10,
00153 } KvaDbProtocolType;
00164 typedef struct {
00165 unsigned int maxMessageDlc;
00166 unsigned int maxSignalLength;
00167 } KvaDbProtocolProperties;
00168
00169
00170
00178 #define KVADB_DATABASE_J1939 0x0001 ///< The database uses the J1939 protocol
00179
00180 typedef void* KvaDbHnd;
00181 typedef void* KvaDbMessageHnd;
00182 typedef void* KvaDbSignalHnd;
00183 typedef void* KvaDbNodeHnd;
00184 typedef void* KvaDbAttributeHnd;
00185 typedef void* KvaDbAttributeDefHnd;
00186 typedef void* KvaDbEnumValueHnd;
00187
00194 #define KVADB_MUX_SIGNAL -2 ///< Multiplex mode value of a multiplexer signal
00195 #define KVADB_MUX_INDEPENDENT -1 ///< Miltiplex mode value of an independent signal
00196
00208 KvaDbStatus WINAPI kvaDbOpen(KvaDbHnd *dh);
00209
00223 KvaDbStatus WINAPI kvaDbAddFile(KvaDbHnd dh, const char *filename);
00224
00239 KvaDbStatus WINAPI kvaDbSetDummyFileName(KvaDbHnd dh, const char *filename);
00240
00263 KvaDbStatus WINAPI kvaDbCreate(KvaDbHnd dh, const char *localName, const char *filename);
00264
00275 KvaDbStatus WINAPI kvaDbClose(KvaDbHnd dh);
00276
00288 KvaDbStatus WINAPI kvaDbWriteFile(KvaDbHnd dh, char* filename);
00289
00301 KvaDbStatus WINAPI kvaDbReadFile(KvaDbHnd dh, char* filename);
00302
00316 KvaDbStatus WINAPI kvaDbGetFlags(KvaDbHnd dh, unsigned int *flags);
00317
00330 KvaDbStatus WINAPI kvaDbGetProtocol(KvaDbHnd dh, KvaDbProtocolType *prot);
00331
00332
00344 KvaDbStatus WINAPI kvaDbGetProtocolProperties(KvaDbProtocolType prot, KvaDbProtocolProperties *prop);
00345
00346
00358 KvaDbStatus WINAPI kvaDbGetFirstMsg(KvaDbHnd dh, KvaDbMessageHnd *mh);
00359
00372 KvaDbStatus WINAPI kvaDbGetNextMsg(KvaDbHnd dh, KvaDbMessageHnd *mh);
00373
00386 KvaDbStatus WINAPI kvaDbGetMsgById(KvaDbHnd dh,
00387 unsigned int id,
00388 KvaDbMessageHnd *mh);
00389
00402 KvaDbStatus WINAPI kvaDbGetMsgByName(KvaDbHnd dh,
00403 const char *msg_name,
00404 KvaDbMessageHnd *mh);
00405
00418 KvaDbStatus WINAPI kvaDbGetMsgName(KvaDbMessageHnd mh, char *buf, size_t buflen);
00419
00433 KvaDbStatus WINAPI kvaDbGetMsgQualifiedName(KvaDbMessageHnd mh, char *buf, size_t buflen);
00434
00447 KvaDbStatus WINAPI kvaDbGetMsgComment(KvaDbMessageHnd mh, char *buf, size_t buflen);
00448
00464 KvaDbStatus WINAPI kvaDbGetMsgId(KvaDbMessageHnd mh,
00465 unsigned int *id,
00466 unsigned int *flags);
00467
00479 KvaDbStatus WINAPI kvaDbGetMsgDlc(KvaDbMessageHnd mh, int *dlc);
00480
00492 KvaDbStatus WINAPI kvaDbGetMsgSendNode(KvaDbMessageHnd mh, KvaDbNodeHnd *nh);
00493
00505 KvaDbStatus WINAPI kvaDbAddMsg(KvaDbHnd dh, KvaDbMessageHnd *mh);
00506
00518 KvaDbStatus WINAPI kvaDbDeleteMsg(KvaDbHnd dh, KvaDbMessageHnd mh);
00519
00533 KvaDbStatus WINAPI kvaDbSetFlags(KvaDbHnd dh, unsigned int flags);
00534
00541 KvaDbStatus WINAPI kvaDbSetProtocol(KvaDbHnd dh, KvaDbProtocolType prot);
00542
00554 KvaDbStatus WINAPI kvaDbSetMsgName(KvaDbMessageHnd mh, char *buf);
00555
00567 KvaDbStatus WINAPI kvaDbSetMsgComment(KvaDbMessageHnd mh, char *buf);
00568
00584 KvaDbStatus WINAPI kvaDbSetMsgId(KvaDbMessageHnd mh, unsigned int id, unsigned int flags);
00585
00597 KvaDbStatus WINAPI kvaDbSetMsgDlc(KvaDbMessageHnd mh, int dlc);
00598
00610 KvaDbStatus WINAPI kvaDbSetMsgSendNode(KvaDbMessageHnd mh, KvaDbNodeHnd nh);
00611
00621 KvaDbStatus WINAPI kvaDbGetMsgMux(KvaDbMessageHnd mh, KvaDbSignalHnd *shh);
00622
00634 KvaDbStatus WINAPI kvaDbGetFirstSignal(KvaDbMessageHnd mh, KvaDbSignalHnd *sh);
00635
00648 KvaDbStatus WINAPI kvaDbGetNextSignal(KvaDbMessageHnd mh, KvaDbSignalHnd *sh);
00649
00662 KvaDbStatus WINAPI kvaDbGetSignalByName(KvaDbMessageHnd mh, char *buf, KvaDbSignalHnd *sh);
00663
00675 KvaDbStatus WINAPI kvaDbSetSignalMode(KvaDbSignalHnd sh, int mux);
00676
00689 KvaDbStatus WINAPI kvaDbGetSignalMode(KvaDbSignalHnd sh, int *mux);
00690
00704 KvaDbStatus WINAPI kvaDbGetSignalValueFloat(KvaDbSignalHnd sh, double *f, void *data, size_t len);
00705
00719 KvaDbStatus WINAPI kvaDbGetSignalValueInteger(KvaDbSignalHnd sh, int *f, void *data, size_t len);
00720
00735 KvaDbStatus WINAPI kvaDbGetSignalValueEnum(KvaDbSignalHnd sh, char *buf, size_t buflen, void *data, size_t len);
00736
00737
00750 KvaDbStatus WINAPI kvaDbGetSignalValueLimits(KvaDbSignalHnd sh, double *minval, double *maxval);
00751
00764 KvaDbStatus WINAPI kvaDbGetSignalValueScaling(KvaDbSignalHnd sh, double *factor, double *offset);
00765
00778 KvaDbStatus WINAPI kvaDbGetSignalValueSize(KvaDbSignalHnd sh, int *startbit, int *length);
00779
00792 KvaDbStatus WINAPI kvaDbGetSignalName(KvaDbSignalHnd sh, char *buf, size_t buflen);
00793
00808 KvaDbStatus WINAPI kvaDbGetSignalQualifiedName(KvaDbSignalHnd sh, char *buf, size_t buflen);
00809
00822 KvaDbStatus WINAPI kvaDbGetSignalComment(KvaDbSignalHnd sh, char *buf, size_t buflen);
00823
00836 KvaDbStatus WINAPI kvaDbGetSignalUnit(KvaDbSignalHnd sh, char *buf, size_t buflen);
00837
00849 KvaDbStatus WINAPI kvaDbGetSignalEncoding(KvaDbSignalHnd sh, KvaDbSignalEncoding *e);
00850
00862 KvaDbStatus WINAPI kvaDbGetSignalRepresentationType(KvaDbSignalHnd sh, KvaDbSignalType *t);
00863
00878 KvaDbStatus WINAPI kvaDbGetSignalPresentationType(KvaDbSignalHnd sh, KvaDbSignalType *t);
00879
00891 KvaDbStatus WINAPI kvaDbAddSignal(KvaDbMessageHnd mh, KvaDbSignalHnd *sh);
00892
00904 KvaDbStatus WINAPI kvaDbDeleteSignal(KvaDbMessageHnd mh, KvaDbSignalHnd sh);
00905
00918 KvaDbStatus WINAPI kvaDbSetSignalValueLimits(KvaDbSignalHnd sh,
00919 double minval,
00920 double maxval);
00921
00934 KvaDbStatus WINAPI kvaDbSetSignalValueScaling(KvaDbSignalHnd sh,
00935 double factor,
00936 double offset);
00937
00950 KvaDbStatus WINAPI kvaDbSetSignalValueSize(KvaDbSignalHnd sh,
00951 int startbit,
00952 int length);
00953
00965 KvaDbStatus WINAPI kvaDbSetSignalName(KvaDbSignalHnd sh, char *buf);
00966
00978 KvaDbStatus WINAPI kvaDbSetSignalComment(KvaDbSignalHnd sh, char *buf);
00979
00991 KvaDbStatus WINAPI kvaDbSetSignalUnit(KvaDbSignalHnd sh, char *buf);
00992
01004 KvaDbStatus WINAPI kvaDbSetSignalEncoding(KvaDbSignalHnd sh, KvaDbSignalEncoding e);
01005
01017 KvaDbStatus WINAPI kvaDbSetSignalRepresentationType(KvaDbSignalHnd sh, KvaDbSignalType t);
01018
01030 KvaDbStatus WINAPI kvaDbGetFirstNode(KvaDbHnd dh, KvaDbNodeHnd *nh);
01031
01043 KvaDbStatus WINAPI kvaDbGetNextNode(KvaDbHnd dh, KvaDbNodeHnd *nh);
01044
01057 KvaDbStatus WINAPI kvaDbGetNodeByName(KvaDbHnd dh, const char *node_name, KvaDbNodeHnd *nh);
01058
01071 KvaDbStatus WINAPI kvaDbGetNodeAttributeIntByName(KvaDbNodeHnd nh, const char *attrName, int *val);
01072
01082 KvaDbStatus WINAPI kvaDbAddNode(KvaDbHnd dh, KvaDbNodeHnd *nh);
01083
01093 KvaDbStatus WINAPI kvaDbDeleteNode(KvaDbHnd dh, KvaDbNodeHnd nh);
01094
01104 KvaDbStatus WINAPI kvaDbSetNodeName(KvaDbNodeHnd nh, char *buf);
01105
01116 KvaDbStatus WINAPI kvaDbGetNodeName(KvaDbNodeHnd nh, char *buf, size_t buflen);
01117
01127 KvaDbStatus WINAPI kvaDbSetNodeComment(KvaDbNodeHnd nh, char *buf);
01128
01138 KvaDbStatus WINAPI kvaDbAddReceiveNodeToSignal(KvaDbSignalHnd sh, KvaDbNodeHnd nh);
01139
01149 KvaDbStatus WINAPI kvaDbRemoveReceiveNodeFromSignal(KvaDbSignalHnd sh, KvaDbNodeHnd nh);
01150
01161 KvaDbStatus WINAPI kvaDbSignalContainsReceiveNode(KvaDbSignalHnd sh, KvaDbNodeHnd nh);
01162
01163
01177 KvaDbStatus WINAPI kvaDbStoreSignalValuePhys(KvaDbSignalHnd sh, unsigned char *can_data, int dlc, double value);
01178
01192 KvaDbStatus WINAPI kvaDbStoreSignalValueRaw(KvaDbSignalHnd sh, unsigned char *can_data, int dlc, int value);
01193
01205 KvaDbStatus WINAPI kvaDbGetFirstAttributeDefinition(KvaDbHnd dh, KvaDbAttributeDefHnd *adh);
01206
01217 KvaDbStatus WINAPI kvaDbGetAttributeDefinitionByName(KvaDbHnd dh, const char *attrName, KvaDbAttributeDefHnd *adh);
01218
01230 KvaDbStatus WINAPI kvaDbGetNextAttributeDefinition(KvaDbAttributeDefHnd adh, KvaDbAttributeDefHnd *nadh);
01231
01243 KvaDbStatus WINAPI kvaDbGetAttributeDefinitionType(KvaDbAttributeDefHnd adh, KvaDbAttributeType *at);
01244
01256 KvaDbStatus WINAPI kvaDbGetAttributeDefinitionOwner(KvaDbAttributeDefHnd adh, KvaDbAttributeOwner *ao);
01257
01270 KvaDbStatus WINAPI kvaDbGetAttributeDefinitionName(KvaDbAttributeDefHnd adh, char *buf, size_t buflen);
01271
01283 KvaDbStatus WINAPI kvaDbGetAttributeDefinitionInt(KvaDbAttributeDefHnd adh, int *def, int *min, int *max);
01284
01296 KvaDbStatus WINAPI kvaDbGetAttributeDefinitionFloat(KvaDbAttributeDefHnd adh, float *def, float *min, float *max);
01297
01308 KvaDbStatus WINAPI kvaDbGetAttributeDefinitionString(KvaDbAttributeDefHnd adh, char *buf, size_t buflen);
01309
01319 KvaDbStatus WINAPI kvaDbGetAttributeDefinitionEnumeration(KvaDbAttributeDefHnd adh, int *def);
01320
01330 KvaDbStatus WINAPI kvaDbAddAttributeDefinition(KvaDbHnd dh, KvaDbAttributeDefHnd *adh);
01331
01341 KvaDbStatus WINAPI kvaDbSetAttributeDefinitionName(KvaDbAttributeDefHnd adh, const char *adName);
01342
01352 KvaDbStatus WINAPI kvaDbSetAttributeDefinitionType(KvaDbAttributeDefHnd adh, KvaDbAttributeType adType);
01353
01363 KvaDbStatus WINAPI kvaDbSetAttributeDefinitionOwner(KvaDbAttributeDefHnd adh, KvaDbAttributeOwner adOwner);
01364
01375 KvaDbStatus WINAPI kvaDbAddAttributeDefinitionEnum(KvaDbAttributeDefHnd adh, const char* eName, int eValue);
01376
01386 KvaDbStatus WINAPI kvaDbSetAttributeDefinitionEnumDefault(KvaDbAttributeDefHnd adh, int dValue);
01387
01399 KvaDbStatus WINAPI kvaDbSetAttributeDefinitionInt(KvaDbAttributeDefHnd adh, int def, int min, int max);
01400
01412 KvaDbStatus WINAPI kvaDbSetAttributeDefinitionFloat(KvaDbAttributeDefHnd adh, float def, float min, float max);
01413
01423 KvaDbStatus WINAPI kvaDbSetAttributeDefinitionString(KvaDbAttributeDefHnd adh, const char *buf);
01424
01437 KvaDbStatus WINAPI kvaDbAddMsgAttribute(KvaDbMessageHnd mh, KvaDbAttributeDefHnd adh, KvaDbAttributeHnd *ah);
01438
01450 KvaDbStatus WINAPI kvaDbDeleteMsgAttribute(KvaDbMessageHnd mh, KvaDbAttributeHnd ah);
01451
01464 KvaDbStatus WINAPI kvaDbAddSignalAttribute(KvaDbSignalHnd sh, KvaDbAttributeDefHnd adh, KvaDbAttributeHnd *ah);
01465
01477 KvaDbStatus WINAPI kvaDbGetFirstEnumValue(KvaDbSignalHnd sh, KvaDbEnumValueHnd *eh);
01478
01491 KvaDbStatus WINAPI kvaDbGetNextEnumValue(KvaDbSignalHnd sh, KvaDbEnumValueHnd *eh);
01492
01506 KvaDbStatus WINAPI kvaDbGetEnumValue(KvaDbEnumValueHnd eh, int *val, char *buf, size_t buflen);
01507
01520 KvaDbStatus WINAPI kvaDbAddEnumValue(KvaDbSignalHnd sh, int val, const char* name);
01521
01533 KvaDbStatus WINAPI kvaDbDeleteEnumValue(KvaDbSignalHnd sh, KvaDbEnumValueHnd eh);
01534
01546 KvaDbStatus WINAPI kvaDbDeleteSignalAttribute(KvaDbSignalHnd sh, KvaDbAttributeHnd ah);
01547
01560 KvaDbStatus WINAPI kvaDbAddNodeAttribute(KvaDbNodeHnd nh, KvaDbAttributeDefHnd adh, KvaDbAttributeHnd *ah);
01561
01573 KvaDbStatus WINAPI kvaDbDeleteNodeAttribute(KvaDbNodeHnd nh, KvaDbAttributeHnd ah);
01574
01586 KvaDbStatus WINAPI kvaDbGetFirstMsgAttribute(KvaDbMessageHnd mh, KvaDbAttributeHnd *ah);
01587
01598 KvaDbStatus WINAPI kvaDbGetMsgAttributeByName(KvaDbMessageHnd mh, const char *attrName, KvaDbAttributeHnd *ah);
01599
01610 KvaDbStatus WINAPI kvaDbGetMsgAttributeIntByName(KvaDbMessageHnd mh, const char *attrName, int *val);
01611
01623 KvaDbStatus WINAPI kvaDbGetFirstSignalAttribute(KvaDbSignalHnd sh, KvaDbAttributeHnd *ah);
01624
01635 KvaDbStatus WINAPI kvaDbGetSignalAttributeByName(KvaDbSignalHnd sh, const char *attrName, KvaDbAttributeHnd *ah);
01636
01648 KvaDbStatus WINAPI kvaDbGetFirstNodeAttribute(KvaDbNodeHnd nh, KvaDbAttributeHnd *ah);
01649
01660 KvaDbStatus WINAPI kvaDbGetNodeAttributeByName(KvaDbNodeHnd nh, const char *attrName, KvaDbAttributeHnd *ah);
01661
01675 KvaDbStatus WINAPI kvaDbGetNextAttribute(KvaDbAttributeHnd ah, KvaDbAttributeHnd *nah);
01676
01688 KvaDbStatus WINAPI kvaDbGetAttributeType(KvaDbAttributeHnd ah, KvaDbAttributeType *at);
01689
01702 KvaDbStatus WINAPI kvaDbGetAttributeName(KvaDbAttributeHnd adh, char *buf, size_t buflen);
01703
01715 KvaDbStatus WINAPI kvaDbSetAttributeValueInt(KvaDbAttributeHnd ah, int val);
01716
01728 KvaDbStatus WINAPI kvaDbGetAttributeValueInt(KvaDbAttributeHnd ah, int *val);
01729
01741 KvaDbStatus WINAPI kvaDbSetAttributeValueFloat(KvaDbAttributeHnd ah, float val);
01742
01754 KvaDbStatus WINAPI kvaDbGetAttributeValueFloat(KvaDbAttributeHnd ah, float *val);
01755
01768 KvaDbStatus WINAPI kvaDbSetAttributeValueString(KvaDbAttributeHnd ah, const char *buf, int buflen);
01769
01782 KvaDbStatus WINAPI kvaDbGetAttributeValueString(KvaDbAttributeHnd ah, char *buf, size_t buflen);
01783
01795 KvaDbStatus WINAPI kvaDbSetAttributeValueEnumeration(KvaDbAttributeHnd ah, int val);
01796
01808 KvaDbStatus WINAPI kvaDbGetAttributeValueEnumeration(KvaDbAttributeHnd ah, int *val);
01809
01810
01823 KvaDbStatus WINAPI kvaDbMsgDlcToBytes(KvaDbProtocolType prot, unsigned int dlc, unsigned int *numBytes);
01824
01837 KvaDbStatus WINAPI kvaDbBytesToMsgDlc(KvaDbProtocolType prot, unsigned int numBytes, unsigned int *dlc);
01838
01839
01840 #ifdef __cplusplus
01841 }
01842 #endif
01843
01846 #endif //KVADBLIB_H