Kvaser CANLIB: kvaDBlib.h Source File

kvaDBlib.h

Go to the documentation of this file.
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 // Database flags
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