06.08.2013 Views

JAVA-BASED REAL-TIME PROGRAMMING

JAVA-BASED REAL-TIME PROGRAMMING

JAVA-BASED REAL-TIME PROGRAMMING

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Simulation startup excerpt<br />

4.7. Exercise 5 - Mailbox and lab 3 preparation<br />

The simulator main method is located in the Wash class. The simulator<br />

basically instantiates a simulation object, registers a ButtonListener that calls<br />

the WashingController upon keypresses, and starts a simulation thread.<br />

package done;<br />

import todo.WashingController;<br />

public class Wash {<br />

public static void main(String[] args)<br />

// ...<br />

// Create a washing machine simulation and a controller<br />

AbstractWashingMachine theMachine<br />

= new WashingMachineSimulation(theSpeed , freakShowProbability);<br />

// ...<br />

theMachine.setButtonListener(new WashingController(theMachine , theSpeed));<br />

theMachine.start();<br />

// ...<br />

}<br />

}<br />

WashingController<br />

The WashingController is implemented by you in the todo folder. Note that<br />

a reference to the hardware access interface is provided for you in the WashingController<br />

constructor.<br />

package todo;<br />

import se.lth.cs.realtime.*;<br />

import se.lth.cs.realtime.event.*;<br />

import done.*;<br />

public class WashingController implements ButtonListener {<br />

}<br />

public WashingController(AbstractWashingMachine theMachine , double theSpeed) {<br />

// Create and start your controller threads here<br />

}<br />

public void processButton(int theButton) {<br />

// Handle button presses (0, 1, 2, or 3). A button press<br />

// corresponds to starting a new washing program. What should<br />

// happen if there is already a running washing program?<br />

}<br />

Washing program<br />

Each washing program is implemented as a transactional thread, i.e. the<br />

thread starts up, accomplishes its task, and dies when done. The Washing-<br />

Program class acts as a superclass to your washing programs and handles<br />

InterruptedException so you do not need to. It also stores references to your<br />

controllers (temp, water, spin) so you can access them as myXController in<br />

127

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!