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 #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 // Database flags
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