Code cleanup
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
#include "CANAnalyzer.h"
|
||||
|
||||
#include "GeneralMessagesLogDispatcher.h"
|
||||
#include "CANDatabase.h"
|
||||
#include "OtarcikCan.h"
|
||||
|
||||
|
||||
CCANAnalyzer::CCANAnalyzer(QObject *parent) : QObject(parent)
|
||||
{
|
||||
mCANDriverIF = new CPCANInterface;
|
||||
mIsCANInitialized = false;
|
||||
mDevicePtr = 0;
|
||||
mDeviceMessagesList = 0;
|
||||
mCANPollPeriod = 0;
|
||||
|
||||
mCANReadTimer = new QTimer;
|
||||
mCANReadTimer->setInterval(1000);
|
||||
mCANReadTimer->setSingleShot(true);
|
||||
connect(mCANReadTimer,SIGNAL(timeout()),this,SLOT(CANTimerExpired()));
|
||||
}
|
||||
|
||||
CCANAnalyzer::~CCANAnalyzer()
|
||||
{
|
||||
mCANDriverIF->DeInit();
|
||||
delete mCANDriverIF;
|
||||
delete mCANReadTimer;
|
||||
}
|
||||
|
||||
int CCANAnalyzer::Init(TPCANHandle CANDeviceChannel, TPCANBaudrate CANDeviceBaudrate, QList<CCANMessage *> *MsgList, unsigned int PollPeriod)
|
||||
{
|
||||
if(MsgList == 0)
|
||||
{
|
||||
return RET_GENERAL_ERROR;
|
||||
}
|
||||
if(PollPeriod < 200)
|
||||
{
|
||||
PollPeriod = 200;
|
||||
qDebug("CANAnalyzer:: Trying to init with poll period lower tan 200ms");
|
||||
}
|
||||
|
||||
|
||||
mCANDeviceChannel = CANDeviceChannel;
|
||||
mCANPollPeriod = PollPeriod;
|
||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Démarrage d'un module CAN...");
|
||||
|
||||
mDeviceMessagesList = MsgList;
|
||||
|
||||
if(mCANDriverIF->Init(mCANDeviceChannel,CANDeviceBaudrate) != RET_OK)
|
||||
{
|
||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Impossible d'initialiser le matériel CAN",true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS);
|
||||
mIsCANInitialized = false;
|
||||
return RET_GENERAL_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
mCANReadTimer->start(mCANPollPeriod);
|
||||
mIsCANInitialized = true;
|
||||
}
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
int CCANAnalyzer::ReadCAN()
|
||||
{
|
||||
// TPCANMsg CANMsg;
|
||||
// TPCANTimestamp CANTimeStamp;
|
||||
|
||||
// // We execute the "Read" function of the PCANBasic
|
||||
// TPCANStatus stsResult = CAN_Read(PcanHandle, &CANMsg, &CANTimeStamp);
|
||||
|
||||
// if (stsResult != PCAN_ERROR_QRCVEMPTY)
|
||||
// {
|
||||
// // We process the received message
|
||||
// ProcessMessageCan(CANMsg, CANTimeStamp);
|
||||
// }
|
||||
|
||||
// return stsResult;
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
void CCANAnalyzer::CANTimerExpired()
|
||||
{
|
||||
QList<CCANMessage *> NewMessagesList = mCANDriverIF->ReadCANFullBuffer(mCANDeviceChannel);
|
||||
|
||||
|
||||
for(int i = 0 ; i < NewMessagesList.size(); i++)
|
||||
{
|
||||
for(int j = 0; j < mDeviceMessagesList->size(); j++)
|
||||
{
|
||||
if(NewMessagesList.at(i)->mCANMsgID == mDeviceMessagesList->at(j)->mCANMsgID)
|
||||
{
|
||||
mDeviceMessagesList->at(j)->UpdateValue(NewMessagesList.at(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Don't leak!!
|
||||
while(!NewMessagesList.isEmpty())
|
||||
{
|
||||
delete NewMessagesList.takeFirst();
|
||||
}
|
||||
|
||||
mDevicePtr->NewMessageParsed();
|
||||
|
||||
|
||||
if(NewMessagesList.isEmpty())
|
||||
{
|
||||
mCANReadTimer->start();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
NewMessagesList.clear();
|
||||
|
||||
mCANReadTimer->start();
|
||||
|
||||
// mProgramPtr->UpdateCANViewerDataRequest(mLastMessagesList);
|
||||
}
|
||||
Reference in New Issue
Block a user