|
@@ -1,7 +1,9 @@
|
|
|
#include "canctrl.h"
|
|
|
|
|
|
+#include <memory>
|
|
|
+
|
|
|
canctrl * gc;
|
|
|
-iv::canstate::canstate proCanSt;
|
|
|
+static iv::canstate::canstate proCanSt;
|
|
|
void Listencansend0(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
|
|
|
{
|
|
|
iv::can::canmsg msg;
|
|
@@ -94,25 +96,31 @@ void canctrl::run()
|
|
|
|
|
|
proCanSt.set_b_canstate(true);
|
|
|
int nsize = proCanSt.ByteSize();
|
|
|
- char * strdata = new char[proCanSt.ByteSize()];
|
|
|
- if(proCanSt.SerializePartialToArray(strdata,nsize))
|
|
|
+ std::shared_ptr<char > strdata_ptr= std::shared_ptr<char>(new char[nsize]);
|
|
|
+ if(proCanSt.SerializeToArray(strdata_ptr.get(),nsize))
|
|
|
{
|
|
|
- iv::modulecomm::ModuleSendMsg(mpcanState,strdata,nsize);
|
|
|
+ iv::modulecomm::ModuleSendMsg(mpcanState,strdata_ptr.get(),nsize);
|
|
|
}
|
|
|
- msleep(5);
|
|
|
+ msleep(1);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
proCanSt.set_b_canstate(false);
|
|
|
int nsize = proCanSt.ByteSize();
|
|
|
char * strdata = new char[proCanSt.ByteSize()];
|
|
|
- if(proCanSt.SerializePartialToArray(strdata,nsize))
|
|
|
+ if(proCanSt.SerializeToArray(strdata,nsize))
|
|
|
{
|
|
|
iv::modulecomm::ModuleSendMsg(mpcanState,strdata,nsize);
|
|
|
}
|
|
|
delete strdata;
|
|
|
msleep(1);
|
|
|
mpcan->mivlog->error("%s open can card fail",__func__);
|
|
|
+
|
|
|
+ if(xTime.elapsed()>1000)
|
|
|
+ {
|
|
|
+ qDebug("Not Open CANCARD exceed 1 second. so exit program.");
|
|
|
+ exit(-1);
|
|
|
+ }
|
|
|
}
|
|
|
mpcan->mfault->SetFaultState(0, 0, "ok");
|
|
|
}
|