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

95 lines
2.1 KiB
C++

#ifndef CABLETESTENGINE_H
#define CABLETESTENGINE_H
#include "Cable.h"
#include <QTimer>
#include "InputConnector.h"
#include "OutputConnector.h"
#include <QElapsedTimer>
#include "TestReport.h"
class CCableTestBench;
#define TEST_ENGINE_SM_STANDBY_TIMEOUT 300 //ms
#define TEST_ENGINE_SM_TIMEOUT 100 //ms
class CCableTestEngine : public QObject
{
Q_OBJECT
public:
enum eCableTestEngineMode
{
CABLE_TEST_STBY_MODE,
CABLE_AUTO_TEST_RUNNING_MODE,
CABLE_AUTO_TEST_PAUSED_MODE,
CABLE_TEST_MANUAL_MODE
};
CCableTestEngine();
~CCableTestEngine();
int InitCableTestEngine(CCableTestBench *ProgramHandle);
int StartAutomatedTest();
int PauseAutomatedTest();
int ResumeAutomatedTest();
int StopAutomatedTest();
int StartManualTest();
int StopManualTest();
int ManualPinToggle(int ConnectorPinNbr);
bool IsAutomaticTestRunning();
eCableTestEngineMode GetTestEngineCurrentMode();
private:
enum eCableTestState
{
CABLE_TEST_INIT_STATE,
CABLE_TEST_STBY_STATE,
CABLE_TEST_START_AUTOMATED_TEST_STATE,
CABLE_AUTO_TEST_SELF_TEST_STATE,
CABLE_AUTO_TEST_PINS_STATE,
CABLE_AUTO_TEST_PAUSE_STATE,
CABLE_AUTO_TEST_END_TEST_STATE,
CABLE_TEST_START_MANUAL_TEST_STATE,
CABLE_MANUAL_TEST_PINS_STATE,
CABLE_MANUAL_TEST_END_TEST_STATE
};
enum eCableTestSMEvents
{
CABLE_TEST_START_AUTO_TEST_SM_EVENT,
CABLE_TEST_TICK_SM_EVENT,
CABLE_TEST_PAUSE_AUTO_TEST_SM_EVENT,
CABLE_TEST_RESUME_AUTO_TEST_SM_EVENT,
CABLE_TEST_CANCEL_AUTO_TEST_SM_EVENT,
CABLE_TEST_START_MANUAL_TEST_SM_EVENT,
CABLE_TEST_EXIT_MANUAL_TEST_SM_EVENT
};
CCable *mTestCable;
int mCableTestSMState;
CCableTestBench *mProgramHandle;
CInputConnector *mTestInputConnectorHandle;
COutputConnector *mTestOutputConnectorHandle;
int mCurPinUnderTest;
int mPinHoldTime;
QTimer *mCableTestSMTimer;
QElapsedTimer mCableTestGPTimer;
void CableTestEngineStateMachine(int Event);
public slots:
void SMTimerExpired();
};
#endif // CABLETESTENGINE_H