343 lines
8.8 KiB
C++
343 lines
8.8 KiB
C++
#include "CableTestBench.h"
|
|
#include <QDateTime>
|
|
#include "CableTestBenchDefs.h"
|
|
#include <QFileInfo>
|
|
#include <QProcess>
|
|
#include "TestBenchVersion.h"
|
|
#include <QMessageBox>
|
|
|
|
CCableTestBench::CCableTestBench(QObject *parent) :
|
|
QObject(parent),
|
|
mActualCable(CConnectorDefs::UNKNOWN_CONNECTOR_TYPE,&mIOInterface)
|
|
{
|
|
w = new MainWindow(0,this);
|
|
w->setWindowTitle(QString("Cablotron %1").arg(TEST_BENCH_VERSION));
|
|
}
|
|
|
|
CCableTestBench::~CCableTestBench()
|
|
{
|
|
delete w;
|
|
//mIOInterface.CloseIOModules();
|
|
}
|
|
|
|
int CCableTestBench::Start()
|
|
{
|
|
// w->showMaximized();
|
|
w->show();
|
|
|
|
mMainPageHandle = w->mMainPage;
|
|
mVisualInspPageHandle = w->mVisualInspPage;
|
|
mCableTestPageHandle = w->mCableTestPage;
|
|
mOptionsPageHandle = w->mOptionsPage;
|
|
|
|
if(mTestBenchOptions.LoadSettingFromFile() == RET_OK)
|
|
{
|
|
mOptionsPageHandle->SetCurrentOptions(&mTestBenchOptions);
|
|
}
|
|
{
|
|
mOptionsPageHandle->GetCurrentOptions(&mTestBenchOptions);
|
|
}
|
|
|
|
mCableTestEngine.InitCableTestEngine(this,&mTestBenchOptions);
|
|
|
|
if(mIOInterface.OpenIOModules(mTestBenchOptions.mIOModuleIPAddress) == RET_ERROR)
|
|
{
|
|
mCableTestReport.AddLogEntry("Impossible de communiquer avec le module d'I/O.\nVérifier la connexion ou l'adresse IP.");
|
|
QMessageBox::critical(0,"Erreur de connexion","Impossible de communiquer avec le module d'I/O.\nVérifier la connexion ou l'adresse IP.");
|
|
}
|
|
|
|
mCableTestPageHandle->mGuiRefreshTimer.start();
|
|
connect(&mCableTestReport,SIGNAL(NewTestLogEntry(QString)),mCableTestPageHandle,SLOT(AddTestLogEntry(QString)));
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
}
|
|
|
|
CCable * CCableTestBench::GetActualCable()
|
|
{
|
|
return &mActualCable;
|
|
}
|
|
|
|
CTestReport *CCableTestBench::GetTestReportHandle()
|
|
{
|
|
return &mCableTestReport;
|
|
}
|
|
|
|
quint8 CCableTestBench::DecToBCDByte(const quint8 byte)
|
|
{
|
|
quint8 out = 0;
|
|
|
|
out = ((byte/10) << 4) + (byte%10);
|
|
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
quint16 CCableTestBench::DecToBCDWord(const quint16 word)
|
|
{
|
|
quint16 out = 0;
|
|
quint16 temp = 0;
|
|
|
|
out = word % 10;
|
|
temp = (((word /10) % 10) << 4);
|
|
out += temp;
|
|
temp = (((word / 100) % 10) << 8);
|
|
out += temp;
|
|
temp = (((word / 1000) % 10) << 12);
|
|
out += temp;
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
int CCableTestBench::ExecVisualInspectionRequest()
|
|
{
|
|
qDebug("Exec Visual Inspection clicked");
|
|
|
|
// mCableTestPageHandle->SetVisualInspectionDone(true);
|
|
w->ShowInspectVisuellePage();
|
|
return RET_OK;
|
|
}
|
|
|
|
CCable* CCableTestBench::SetSelectedConnector(CConnectorDefs::eConnectorType ConType)
|
|
{
|
|
if(mActualCable.DefineCableByInputConnector(ConType) == RET_ERROR)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
CheckIfReadyForTesting();
|
|
|
|
return &mActualCable;
|
|
}
|
|
|
|
int CCableTestBench::VisualInspectionQuitRequest()
|
|
{
|
|
mVisualInspPageHandle->FillVisualInspectionResultReport(mCableTestReport.GetInspectionResult());
|
|
if(mCableTestReport.GetInspectionResult()->IsVisualInspectionResultComplete() == true)
|
|
{
|
|
mCableTestPageHandle->SetVisualInspectionDone(true);
|
|
}
|
|
else
|
|
{
|
|
mCableTestPageHandle->SetVisualInspectionDone(false);
|
|
}
|
|
|
|
w->ShowCableTestPage();
|
|
|
|
CheckIfReadyForTesting();
|
|
|
|
return RET_OK;
|
|
}
|
|
|
|
int CCableTestBench::StartPauseAutomaticTestRequest()
|
|
{
|
|
if(mCableTestEngine.GetTestEngineCurrentMode() == CCableTestEngine::CABLE_TEST_STBY_MODE)
|
|
{
|
|
mCableTestPageHandle->FillReportCableParametersData(mCableTestReport.GetReportCableParameters());
|
|
mCableTestReport.GetReportCableParameters()->SetCableType(CConnectorDefs::GetConnectorDescription(mActualCable.GetInputConnector()->GetConnectorType()),
|
|
CConnectorDefs::GetConnectorDescription(mActualCable.GetOutputConnector()->GetConnectorType()));
|
|
mCableTestReport.GetAutomatedTestReport()->SetPinCount(mActualCable.GetOutputConnector()->GetPinCount());
|
|
|
|
mCableTestEngine.StartAutomatedTest();
|
|
return RET_OK;
|
|
}
|
|
if(mCableTestEngine.GetTestEngineCurrentMode() == CCableTestEngine::CABLE_AUTO_TEST_RUNNING_MODE)
|
|
{
|
|
mCableTestEngine.PauseAutomatedTest();
|
|
return RET_OK;
|
|
}
|
|
if(mCableTestEngine.GetTestEngineCurrentMode() == CCableTestEngine::CABLE_AUTO_TEST_PAUSED_MODE)
|
|
{
|
|
mCableTestEngine.ResumeAutomatedTest();
|
|
return RET_OK;
|
|
}
|
|
else //Button shouldn't be used in manual mode...
|
|
{
|
|
return RET_ERROR;
|
|
}
|
|
|
|
return RET_OK;
|
|
}
|
|
|
|
int CCableTestBench::StartStopManualTestRequest()
|
|
{
|
|
if(mCableTestEngine.GetTestEngineCurrentMode() == CCableTestEngine::CABLE_TEST_STBY_MODE)
|
|
{
|
|
mCableTestEngine.StartManualTest();
|
|
return RET_OK;
|
|
}
|
|
if(mCableTestEngine.GetTestEngineCurrentMode() == CCableTestEngine::CABLE_TEST_MANUAL_MODE)
|
|
{
|
|
mCableTestEngine.StopManualTest();
|
|
return RET_OK;
|
|
}
|
|
else //Button shouldn't be used in Automatic mode...
|
|
{
|
|
return RET_ERROR;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
int CCableTestBench::NewCableRequest()
|
|
{
|
|
mActualCable.DefineCableByInputConnector(CConnectorDefs::UNKNOWN_CONNECTOR_TYPE);
|
|
mVisualInspPageHandle->ResetForm();
|
|
mCableTestPageHandle->ResetCable();
|
|
mCableTestPageHandle->DisableStartTestBtn();
|
|
mCableTestReport.CreateNewTestReport();
|
|
|
|
return RET_OK;
|
|
}
|
|
|
|
int CCableTestBench::CheckIfReadyForTesting()
|
|
{
|
|
bool VisualInspectionDone = false, ConnectorSelected = false, CableConfigured = false;
|
|
|
|
mVisualInspPageHandle->FillVisualInspectionResultReport(mCableTestReport.GetInspectionResult());
|
|
if(mCableTestReport.GetInspectionResult()->IsVisualInspectionResultComplete() == true)
|
|
{
|
|
VisualInspectionDone = true;
|
|
}
|
|
if(mTestBenchOptions.mIgnoreVisualInspection)
|
|
{
|
|
VisualInspectionDone = true;
|
|
}
|
|
|
|
|
|
if(mCableTestPageHandle->IsCableConfigured())
|
|
{
|
|
CableConfigured = true;
|
|
mCableTestPageHandle->SetCableConfigureStep(true);
|
|
}
|
|
else
|
|
{
|
|
mCableTestPageHandle->SetCableConfigureStep(false);
|
|
}
|
|
|
|
ConnectorSelected = mActualCable.IsCableDefined();
|
|
if(ConnectorSelected)
|
|
{
|
|
mCableTestPageHandle->SetConnectorSelStep();
|
|
}
|
|
else
|
|
{
|
|
mCableTestPageHandle->SetConnectorSelStep(false);
|
|
}
|
|
|
|
if(VisualInspectionDone && ConnectorSelected && CableConfigured)
|
|
{
|
|
mCableTestPageHandle->EnableStartTestBtn();
|
|
}
|
|
else
|
|
{
|
|
mCableTestPageHandle->DisableStartTestBtn();
|
|
}
|
|
|
|
return RET_OK;
|
|
}
|
|
|
|
int CCableTestBench::CableEngineModeChanged(CCableTestEngine::eCableTestEngineMode Mode)
|
|
{
|
|
switch(Mode)
|
|
{
|
|
case CCableTestEngine::CABLE_TEST_STBY_MODE:
|
|
{
|
|
mCableTestPageHandle->CableTestEnded();
|
|
if(mCableTestReport.IsAutoTestReportReady())
|
|
{
|
|
SaveReportRequest();
|
|
mCableTestPageHandle->EnableOpenReportBtn();
|
|
if(mCableTestReport.GetGlobalAutoTestResult() == true)
|
|
{
|
|
mCableTestPageHandle->SetAutoTestResult("Succès!",Qt::darkGreen);
|
|
}
|
|
else
|
|
{
|
|
mCableTestPageHandle->SetAutoTestResult("Échec",Qt::red);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case CCableTestEngine::CABLE_AUTO_TEST_RUNNING_MODE:
|
|
{
|
|
mCableTestPageHandle->CableAutomaticTestStarted();
|
|
break;
|
|
}
|
|
case CCableTestEngine::CABLE_AUTO_TEST_PAUSED_MODE:
|
|
{
|
|
mCableTestPageHandle->CableAutomaticTestPaused();
|
|
break;
|
|
}
|
|
case CCableTestEngine::CABLE_TEST_MANUAL_MODE:
|
|
{
|
|
mCableTestPageHandle->CableManualTestStarted();
|
|
break;
|
|
}
|
|
}
|
|
|
|
return RET_OK;
|
|
}
|
|
|
|
int CCableTestBench::ResetAutomaticTestRequest()
|
|
{
|
|
return mCableTestEngine.StopAutomatedTest();
|
|
|
|
}
|
|
|
|
int CCableTestBench::ManualPinToggleRequest(int ConnectorPinNbr)
|
|
{
|
|
return mCableTestEngine.ManualPinToggle(ConnectorPinNbr);
|
|
}
|
|
|
|
int CCableTestBench::RefreshConnectorsStateRequest()
|
|
{
|
|
mCableTestPageHandle->SetInputConnectorState(mActualCable.GetInputConnector()->GetInputPinsStates());
|
|
mCableTestPageHandle->SetOutputConnectorState(mActualCable.GetOutputConnector()->GetOutputPinsStates());
|
|
return RET_OK;
|
|
}
|
|
|
|
int CCableTestBench::SaveReportRequest()
|
|
{
|
|
return mCableTestReport.SaveReportToFile(&mTestBenchOptions);
|
|
}
|
|
|
|
int CCableTestBench::OpenReportRequest()
|
|
{
|
|
QString ReportFile = mCableTestReport.GetLastReportFileName();
|
|
if(ReportFile.isEmpty())
|
|
{
|
|
return RET_ERROR;
|
|
}
|
|
|
|
QFileInfo FileInfo(ReportFile);
|
|
QString Command =FileInfo.absoluteFilePath();
|
|
Command.prepend("notepad.exe ");
|
|
|
|
|
|
QProcess *process = new QProcess;
|
|
process->start(Command);
|
|
|
|
return RET_OK;
|
|
}
|
|
|
|
int CCableTestBench::CableConfigChanged()
|
|
{
|
|
CheckIfReadyForTesting();
|
|
return RET_OK;
|
|
}
|
|
|
|
int CCableTestBench::TestBenchOptionsChanged()
|
|
{
|
|
mOptionsPageHandle->GetCurrentOptions(&mTestBenchOptions);
|
|
mTestBenchOptions.SaveSettingsToFile();
|
|
|
|
|
|
|
|
return RET_OK;
|
|
}
|