#include "stdafx.h" #include "CArmWorkflowManager.h" #include "IExamHandler.h" #include "ExamHandlerManager.h" #include "..\\ExamHandlerNameDef.h" #include "PositionManager.h" using namespace DIOS::Dev::Detail::MachineryECOM; CArmWorkflowManager *CArmWorkflowManager::m_instance = nullptr; const std::string EXAMMODE_CBCT = "CBCT"; CArmWorkflowManager::CArmWorkflowManager() { } CArmWorkflowManager::~CArmWorkflowManager() { } CArmWorkflowManager *CArmWorkflowManager::Instance() { if (m_instance == nullptr) { m_instance = new CArmWorkflowManager(); } return m_instance; } int CArmWorkflowManager::ChangeExamMode(const std::string &examKey, const std::string &examType) { auto ret = EXM_ERROR; if (/*EXAMMODE_CBCT*/EXAMMODE_TOMO == examType || EXAMMODE_CBCT == examType) { if(gbusinessLog) gbusinessLog->Info("[SelectExamMode]->[{$}]", examKey.c_str()); IExamHandler *handler = ExamHandlerManager::Instance()->ChangeCurrentHandler(CBCT_EXAMHANDLER); if (handler && handler->OnSelectExamMode(examKey.c_str()) >= RET_STATUS::RET_SUCCEED) { ret = EXM_TOMO; } } else { IExamHandler *handler = ExamHandlerManager::Instance()->ChangeCurrentHandler(CARM_GENERAL_EXAMHANDLER); if (handler && handler->OnSelectExamMode(examKey.c_str()) >= RET_STATUS::RET_SUCCEED) { ret = EXM_TOMO; } } return ret; } int CArmWorkflowManager::ChangeWorkstation(const std::string& workstaion) { return 0; } int CArmWorkflowManager::ChangeToResetMode() { IExamHandler *handler = ExamHandlerManager::Instance()->ChangeCurrentHandler(CARM_RESETHANDLER); if (handler) { handler->OnSelectExamMode("RESET"); } return 0; } IExamHandler *CArmWorkflowManager::GetCurrentWorkFlowHandler() { auto handler = ExamHandlerManager::Instance()->GetCurrentHandler(); //if (!PositionManager::Instance()->IsSystemReady()) //{ // handler = ExamHandlerManager::Instance()->GetHandler(CARM_RESETHANDLER); // if (handler) // { // handler->OnSelectExamMode("RESET"); // return handler; // } //} return handler; } void CArmWorkflowManager::EnterSystemReset() { IExamHandler *handler = (IExamHandler *)ExamHandlerManager::Instance()->GetHandler(CARM_RESETHANDLER); if (handler) { handler->OnSelectExamMode("RESET"); handler->OnReset(MECH_ALL); } } void CArmWorkflowManager::ExitSystemReset() { IExamHandler *handler = (IExamHandler *)ExamHandlerManager::Instance()->GetHandler(CARM_RESETHANDLER); if (handler) { handler->OnSelectExamMode("RESET"); handler->OnStopMech(); } } void CArmWorkflowManager::EnterSystemResetSwing() { IExamHandler *handler = (IExamHandler *)ExamHandlerManager::Instance()->GetHandler(CARM_RESETHANDLER); if (handler) { handler->OnSelectExamMode("RESET"); handler->OnReset(TOMO_TUBE_ANGLE); } } void CArmWorkflowManager::ExitSystemResetSwing() { IExamHandler *handler = (IExamHandler *)ExamHandlerManager::Instance()->GetHandler(CARM_RESETHANDLER); if (handler) { handler->OnSelectExamMode("RESET"); handler->OnStopMech(); } } void CArmWorkflowManager::EnterSystemResetCircular() { IExamHandler *handler = (IExamHandler *)ExamHandlerManager::Instance()->GetHandler(CARM_RESETHANDLER); if (handler) { handler->OnSelectExamMode("RESET"); handler->OnReset(TOMO_TUBE_HEIGHT); } } void CArmWorkflowManager::ExitSystemResetCircular() { IExamHandler *handler = (IExamHandler *)ExamHandlerManager::Instance()->GetHandler(CARM_RESETHANDLER); if (handler) { handler->OnSelectExamMode("RESET"); handler->OnStopMech(); } } void CArmWorkflowManager::SwitchScanning(DOF_MECH mech) { IExamHandler *handler = nullptr; handler = (IExamHandler *)ExamHandlerManager::Instance()->GetHandler(CARM_RESETHANDLER); if (handler) { handler->OnScanningSwitch(mech); } handler = (IExamHandler *)ExamHandlerManager::Instance()->GetHandler(CBCT_EXAMHANDLER); if (handler) { handler->OnScanningSwitch(mech); } handler = (IExamHandler *)ExamHandlerManager::Instance()->GetHandler(CARM_GENERAL_EXAMHANDLER); if (handler) { handler->OnScanningSwitch(mech); } }