#ifndef CABLETESTENGINE_H #define CABLETESTENGINE_H #include "Cable.h" #include #include "InputConnector.h" #include "OutputConnector.h" #include #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; CAutomatedTestReport *mAutoTestReportHandle; CTestReport *mTestReportHandle; void CableTestEngineStateMachine(int Event); public slots: void SMTimerExpired(); }; #endif // CABLETESTENGINE_H