//**************************************************************************** // Copyright (C) 2007 // Nissan North America // All Rights Reserved. Proprietary and Confidential. //============================================================================ /* prevent multiple inclusions */ #ifndef __DbcParser__ #define __DbcParser__ /* includes *****************************************************************/ #include #include #include "CanMessage.h" #include "CanSignal.h" /* defines ******************************************************************/ /* macros *******************************************************************/ /* structs & typedefs *******************************************************/ // based on .dbc data typedef struct _DbcFilter { // signal information char Name[32]; // Signal name regex_t preg; // address range u_int32_t CanAddrLo; // 29 bits u_int32_t CanAddrHi; // data conversion u_char StartBit; // 0..63 u_char NumBits; // 1..32 int found; } DbcFilter; /* c class definitions ******************************************************/ // // Uses the Peak Systems CAN Linux driver and Nissan CAN data // class DbcParser { // public data public: std::vector MsgFilters; // message filter std::vector SigFilters; // signal filter std::vector Messages; std::vector Signals; // private data private: // static data // private methods DbcFilter *AddFilter( char *name, u_int32_t addr1, u_int32_t addr2 ); // public methods public: // constructors DbcParser(); // destructor virtual ~DbcParser(); // virtual functions // public methods int AddMsgFilter( char *name, u_int32_t addr1, u_int32_t addr2 ); int AddSigFilter( char *name, u_int32_t addr1, u_int32_t addr2 ); int AddMessage( char *name, u_int32_t addr, u_int32_t size, char *module ); int AddSignal( char *name, char *units, u_int32_t addr, char start, char num, char endian, char sign, float scale, float offset ); int LoadDatabase( const char *file ); // static methods // private methods private: }; #endif