Initial commit of files
This commit is contained in:
87
include/libcan++/DbcParser.h
Normal file
87
include/libcan++/DbcParser.h
Normal file
@ -0,0 +1,87 @@
|
||||
//****************************************************************************
|
||||
// Copyright (C) 2007
|
||||
// Nissan North America
|
||||
// All Rights Reserved. Proprietary and Confidential.
|
||||
//============================================================================
|
||||
|
||||
/* prevent multiple inclusions */
|
||||
#ifndef __DbcParser__
|
||||
#define __DbcParser__
|
||||
|
||||
/* includes *****************************************************************/
|
||||
|
||||
#include <regex.h>
|
||||
#include <vector>
|
||||
|
||||
#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<DbcFilter *> MsgFilters; // message filter
|
||||
std::vector<DbcFilter *> SigFilters; // signal filter
|
||||
std::vector<CanMessage *> Messages;
|
||||
std::vector<CanSignal *> 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
|
||||
Reference in New Issue
Block a user