Lift Controller
===============

This is a port of Martin Schoeberl's Lift Controller [1] to C. The orignal 
version is an embedded Java program that controls a lift in a factory in Turkey. 
Benedikt Huber has ported the controller to C and Lucid [3]. It has been used in 
various research projects, including T-CREST[3] and the F-Shell test generator 
[4].

Overview
--------

The sensors of the system consist of several buttons, a load sensor (to detect 
if the lift is positioned at the load), sensors to detect bottom and top 
position, and an index sensor for the motor. The motor is controlled using two 
digital outputs, one for its direction and one to turn it off or on.

The controller itself consists of an initialization routine ctrl_init(), the 
controller step ctrl_loop(), which should be invoked every 10ms. Outside a test 
environment, ctrl_get_vals() should be called to read sensors before the 
controller runs, and ctrl_set_vals() should be called to set actuators after the 
controller ran.

The digital IO interface (9 digital inputs, 2 digital outputs and 14 LEDs are 
used) is realized as global volatile variables (simio_in, simio_out, simio_led), 
that can be modified and read by test drivers or by the runtime environment.

[1] http://www.jopdesign.com/doc/jembench.pdf
[2] https://github.com/visq/99lifts
[3] http://www.t-crest.org
[4] http://forsyte.at/software/fshell/
