/* Copyright (C) 2015-2020, Dirk Krause SPDX-License-Identifier: BSD-3-Clause */ /* WARNING: This file was generated by the dkct program (see http://dktools.sourceforge.net/ for details). Changes you make here will be lost if dkct is run again! You should modify the original source and run dkct on it. Original source: Dk4WxAutostartController.cpt */ /** @file Dk4WxAutostartController.cpp The Dk4WxAutostartController module. */ #line 211 "Dk4WxAutostartController.cpt" #include "dk4conf.h" #include "Dk4WxAutostartController.h" #line 219 "Dk4WxAutostartController.cpt" Dk4WxAutostartController::Dk4WxAutostartController() { iExitTime = (dk4_time_t)0UL; iState = STATE_NONE; bAutostart = false; bAutoexit = false; } void Dk4WxAutostartController::SetAutoStart(bool fl) { { wxCriticalSectionLocker lock(csProtect); bAutostart = fl; } } void Dk4WxAutostartController::SetAutoExit(bool fl) { { wxCriticalSectionLocker lock(csProtect); bAutoexit = fl; } } int Dk4WxAutostartController::GetReaction(void) { dk4_time_t timer = (dk4_time_t)0UL; int back = REACTION_IGNORE; { wxCriticalSectionLocker lock(csProtect); switch (iState) { case STATE_NONE : { if (bAutostart) { back = REACTION_START; iState = STATE_EXPECT_START; } } break; #if 0 case STATE_EXPECT_START : { } break; case STATE_PROCESSING : { } break; #endif case STATE_EXPECT_EXIT : { back = REACTION_MORE; dk4time_get(&timer); if (timer >= iExitTime) { iState = STATE_FINISHED; back = REACTION_EXIT; } } break; #if 0 case STATE_FINISHED : { } break; #endif } } return back; } void Dk4WxAutostartController::StartProcessing(void) { wxCriticalSectionLocker lock(csProtect); iState = STATE_PROCESSING; } void Dk4WxAutostartController::EndProcessing(bool success) { dk4_time_t timer = (dk4_time_t)0UL; dk4time_get(&timer); { wxCriticalSectionLocker lock(csProtect); if ((bAutostart) && (bAutoexit) && (success)) { iExitTime = timer + (dk4_time_t)2UL; iState = STATE_EXPECT_EXIT; } else { iState = STATE_FINISHED; } } }