--[[
---------------------------------------------------------------------------
Remote Train Control Program for Windows

© Copyright 2021 by Mark DiVecchio

	This file is part of Remote Train Control.

	Remote Train Control is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	Remote Train Control is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with Remote Train Control.  If not, see <http://www.gnu.org/licenses/>.

 Home Page : http://www.silogic.com/trains/RTC_Running.html
---------------------------------------------------------------------------]]
-- Semicolons are not required in Lua code
title = "Read Engines Test"
require([[defines]]);
require([[functions]]);
--
-- This tests the timing between "I0" and "Ixxx" commands
-- It showed the need to wait a short time (100 ms?) between them.
-- The problem manifested itself when WTIU #1 changed to WTIU #2. 
-- When WTIU was power cycled, it returned to being #1 which to me
-- indicated a memory corruption issue in the WTIU.

local Terminate = false;
--[[---------------------------------------------------------------------------------------]]
function setup(Engine, TIU)
	print("setup() Running");
	-- run the Read Function multiple times
	for Iter = 1, 50 do
		if (Terminate) then goto E1; end;
		Count = ReadEngines();
		print("Loop #" .. Iter .. " Read Engines = " .. Count);
		if (Terminate) then goto E1; end;
		Sleep(0.01);	-- short sleep needed to keep the UI responsive - here 10 ms
		end;
	::E1::
	return true;		-- false=setup failed, true=setup succeeded
	end
--[[---------------------------------------------------------------------------------------]]
function cleanup(Engine, TIU)
	-- this function is called once when the user presses the [STOP] button or the Stop() function is called
	print("cleanup() Running");
	Terminate = true;
	return true;		-- false=cleanup failed, true=cleanup succeeded
	end
--[[---------------------------------------------------------------------------------------]]

function TerminateButton()
	print("Terminate Request");
	Terminate = true;
	return true;
end
Function01Name, Function01Label = TerminateButton, "Terminate";
--[[---------------------------------------------------------------------------------------]]
