|
@@ -1,6 +1,8 @@
|
|
|
#include "mainwindow.h"
|
|
|
#include "ui_mainwindow.h"
|
|
|
|
|
|
+#include <iostream>
|
|
|
+
|
|
|
extern std::string gstrxmlpath;
|
|
|
|
|
|
|
|
@@ -10,6 +12,10 @@ extern iv::Ivlog * ivlog;
|
|
|
static bool gbupdate = false;
|
|
|
static std::string gstrivsyspath;
|
|
|
|
|
|
+static iv::Switch::settingsCmd gsettingcmd;
|
|
|
+static bool gbupdatesetting = false;
|
|
|
+QMutex gMutexSetting;
|
|
|
+
|
|
|
|
|
|
|
|
|
void ListenChange(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
|
|
@@ -23,6 +29,24 @@ void ListenChange(const char * strdata,const unsigned int nSize,const unsigned i
|
|
|
|
|
|
}
|
|
|
|
|
|
+void ListenSysSwitch(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
|
|
|
+{
|
|
|
+ iv::Switch::settingsCmd x;
|
|
|
+ if(!x.ParseFromArray(strdata,nSize))
|
|
|
+ {
|
|
|
+ std::cout<<"ListenSysSwitch Parse error."<<std::endl;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ gMutexSetting.lock();
|
|
|
+ gsettingcmd.CopyFrom(x);
|
|
|
+ gbupdatesetting = true;
|
|
|
+ gMutexSetting.unlock();
|
|
|
+ (void)&index;
|
|
|
+ (void)dt;
|
|
|
+ (void)strmemname;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
MainWindow::MainWindow(QWidget *parent) :
|
|
|
QMainWindow(parent),
|
|
@@ -89,9 +113,14 @@ MainWindow::MainWindow(QWidget *parent) :
|
|
|
mpivexit = iv::ivexit::RegIVExitCmd();
|
|
|
|
|
|
mpa = iv::modulecomm::RegisterRecv("ivsyschange",ListenChange);
|
|
|
+ mpaswitch = iv::modulecomm::RegisterRecv("sys_switch",ListenSysSwitch);
|
|
|
QTimer * timerchange = new QTimer(this);
|
|
|
connect(timerchange,SIGNAL(timeout()),this,SLOT(onTimerChangeXML()));
|
|
|
timerchange->start(100);
|
|
|
+
|
|
|
+ QTimer * timerswitch = new QTimer(this);
|
|
|
+ connect(timerswitch,SIGNAL(timeout()),this,SLOT(onTimerSysSwitch()));
|
|
|
+ timerswitch->start(50);
|
|
|
}
|
|
|
|
|
|
MainWindow::~MainWindow()
|
|
@@ -239,4 +268,79 @@ void MainWindow::ChangeXML(std::string strxmlpath)
|
|
|
// pLabel->setGeometry(30,30,100,30);
|
|
|
}
|
|
|
|
|
|
+void MainWindow::ProcdataAnalysisCmd(const iv::Switch::dataAnalysisCmd *pdataAnalysisCmd)
|
|
|
+{
|
|
|
+ if(pdataAnalysisCmd->mwrdataanalysismodule())
|
|
|
+ {
|
|
|
+ mPM->StartProc("driver_can_nvidia_agx");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ mPM->StopProc("driver_can_nvidia_agx");
|
|
|
+ }
|
|
|
+ if(pdataAnalysisCmd->lidardataanalysismodule())
|
|
|
+ {
|
|
|
+ mPM->StartProc("driver_lidar_vlp32c");
|
|
|
+ mPM->StartProc("driver_lidar_vlp16","-s vlp16_left.yaml -n driver_lidar_vlp32_l");
|
|
|
+ mPM->StartProc("driver_lidar_vlp16","-s vlp16_right.yaml -n driver_lidar_vlp32_r");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ mPM->StopProc("driver_lidar_vlp32c");
|
|
|
+ mPM->StopProc("driver_lidar_vlp16","-s vlp16_left.yaml -n driver_lidar_vlp32_l");
|
|
|
+ mPM->StopProc("driver_lidar_vlp16","-s vlp16_right.yaml -n driver_lidar_vlp32_r");
|
|
|
+ }
|
|
|
+ if(pdataAnalysisCmd->gpsimudataanalysismodule())
|
|
|
+ {
|
|
|
+ mPM->StartProc("detection_state_delphi_ins500d");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ mPM->StartProc("detection_state_delphi_ins500d");
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void MainWindow::ProcperceptualFusion(const iv::Switch::perceptualFusion *pperceptualFusion)
|
|
|
+{
|
|
|
+ if(pperceptualFusion->spaceregistrationmodule())
|
|
|
+ {
|
|
|
+ mPM->StartProc("driver_lidar_merge");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ mPM->StopProc("driver_lidar_merge");
|
|
|
+ }
|
|
|
+ if(pperceptualFusion->fusionpositioningmodule())
|
|
|
+ {
|
|
|
+ mPM->StartProc("detection_ndt_matching_gpu_multi");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ mPM->StopProc("detection_ndt_matching_gpu_multi");
|
|
|
+ }
|
|
|
+ if(pperceptualFusion->lidarandmayconstructmodule())
|
|
|
+ {
|
|
|
+ mPM->StartProc("adcndtmultimapping");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ mPM->StopProc("adcndtmultimapping");
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void MainWindow::onTimerSysSwitch()
|
|
|
+{
|
|
|
+ if(gbupdatesetting == false)return;
|
|
|
+ iv::Switch::settingsCmd pswitch;
|
|
|
+
|
|
|
+ gMutexSetting.lock();
|
|
|
+ pswitch.CopyFrom(gsettingcmd);
|
|
|
+ gbupdatesetting = false;
|
|
|
+ gMutexSetting.unlock();
|
|
|
+
|
|
|
+ iv::Switch::fucSetControlCmd xcmd = pswitch.fucsetcontrol();
|
|
|
+ ProcdataAnalysisCmd(&xcmd.dataanalysis());
|
|
|
+ ProcperceptualFusion(&xcmd.perceptualfusion());
|
|
|
+}
|
|
|
+
|
|
|
|