CableTestBench/Sources/CableTestBench.cpp
2019-05-08 14:17:31 -04:00

242 lines
6.2 KiB
C++

#include "CableTestBench.h"
#include <QDateTime>
#include "CableTestBenchDefs.h"
CCableTestBench::CCableTestBench(QObject *parent) :
QObject(parent),
mActualCable(CConnectorDefs::UNKNOWN_CONNECTOR_TYPE,&mIOInterface)
{
w = new MainWindow(0,this);
}
CCableTestBench::~CCableTestBench()
{
delete w;
//mIOInterface.CloseIOModules();
}
int CCableTestBench::Start()
{
// w->showMaximized();
w->show();
mMainPageHandle = w->mMainPage;
mVisualInspPageHandle = w->mVisualInspPage;
mCableTestPageHandle = w->mCableTestPage;
mCableTestEngine.InitCableTestEngine(this);
mIOInterface.OpenIOModules();
mCableTestPageHandle->mGuiRefreshTimer.start();
return 1;
}
CCable * CCableTestBench::GetActualCable()
{
return &mActualCable;
}
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.mOutputConnector.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 = true;
mVisualInspPageHandle->FillVisualInspectionResultReport(mCableTestReport.GetInspectionResult());
if(mCableTestReport.GetInspectionResult()->IsVisualInspectionResultComplete() == true)
{
VisualInspectionDone = true;
}
//todo, use the options flag to bypass visual inspection
VisualInspectionDone = true;
ConnectorSelected = mActualCable.IsCableDefined();
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();
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;
}