class Timer

Diese Klasse koordiniert das Timing zwischen den Komponenten Effectors, Sensors und Deliberator

Public

Bereiche vor Unterbrechung schützen
void lock()
Es wird ein geschuetzter Bereich gestartet
void unlock()
Ein geschuetzter Bereich wird beendet
Fehlerklassen
class TimerException: public Exception
Generelle Timerfehler-Klasse
Normaler Betrieb
void run()
Aktiviert den Timer
void schedule()
Uebernimmt das Scheduling zwischen den Sensors-, den Effectors- und dem Deliberatorobjekt
void mainLoop()
void stop()
Stopt den Timer
unsigned long time()
Gibt die aktuelle Timer-Zeit in Millisekunden zurueck
int soccerServerSimStep()
Liefert den aktuellen Zeittakt des SoccerServers
Timer erzeugen und entfernen
Timer( Sensors *sensors, Effectors *effectors, Deliberator *deliberator )
Erzeugt einen neuen Timer
~Timer()
Beendet den Timer

Private Fields

bool haveToDecideNew
Indiz für den Scheduler, ob der Deliberator aktiviert werden soll
bool haveToSee
Indiz für den Scheduler, ob die Sensoren auf neue Informationen überprüft werden sollen
bool haveToSendMainAction
Indiz für die Effectors , ob sie eine neue MainAction senden sollen
bool haveToSendSubAction
Indiz für die Effectors , ob sie eine neue SubAction senden sollen
bool isLocked
Variable, die ansagt, dass der gegenwaertige Prozess nicht unterbrochen werden soll
Deliberator* theDeliberator
Zeiger auf das Deliberator-Objekt
Effectors* theEffectors
Zeiger auf das Effector-Objekt
int theInternTimeStep
Interner Zeittakt des Timers in Nanno-Sekunden
long theLastSentMainActionSoccerServerTime
Zeittakt des SoccerServers zu dem zuletzt eine MainAction gesendet wurde
Sensors* theSensors
Zeiger auf das Sensorik-Objekt
int theSentMainStep
Aller wieviel Schritte ein Main-Kommando gesendet wird
int theSentSubStep
Aller wieviel Schritte ein Sub-Kommando gesendet wird
long theSoccerServerSimStep
Zeittakt des SoccerServers
long theTimeCounter
Hier wird die Zeit in x ms-Schritten gezaehlt
long theTimeSinceLastSentMainAction
Zeitschritte, die seit senden der letzten MainAction vergangen ist
long theTimeSinceLastSentSubAction
Zeitschritte, die seit senden der letzten SubAction vergangen ist

Private Methods

long timeSinceLastSentMainAction()
Zeit, die seit senden der letzten MainAction vergangen ist
long timeSinceLastSentSubAction()
Zeit, die seit senden der letzten SubAction vergangen ist

Documentation

Diese Klasse koordiniert das Timing zwischen den Komponenten Effectors, Sensors und Deliberator. Sie kann die gegenwaertige Abarbeitung unterbrechen und die Abarbeitung an eine der drei Komponenten uebergeben. Nach Abarbeitung dieser Komponenten wird dann die unterbrochene Routine fortgesetzt.

Quelltext

[Header | [Implementierung]

CVS Informationen zum Interface

  **************************************************
  *
  * Aktueller Stand
  *
  *   $RCSfile: Timer.h,v $
  *   $Revision: 1.17 $
  *   $Date: 1998/08/14 13:21:27 $
  *   $Author: myritz $ 
  *
  **************************************************
  
Fehlerklassen

class TimerException: public Exception
Generelle Timerfehler-Klasse

Timer erzeugen und entfernen

Timer( Sensors *sensors, Effectors *effectors, Deliberator *deliberator )
Erzeugt einen neuen Timer. Dieser ist noch nicht aktiv.Er wird erst aktiv, wenn er mit run() gestartet wird.
Parameters:
sensors - Zeiger auf das Sensorik-Objekt.
effectors - Zeiger auf das Effector-Objekt.
deliberator - Zeiger auf das Deliberator-Objekt.

~Timer()
Beendet den Timer. Dieser Aufruf stoppt erst den Timer und beendet ihn dann ganz.

Normaler Betrieb

void run()
Aktiviert den Timer. Die Methode schedule wird als Schedulemethode aktiviert. Diese wird dann alle 12.5 ms aktiviert.
Throws:
TimerException, wenn ein interner Signalfehler auftritt.

void schedule()
Uebernimmt das Scheduling zwischen den Sensors-, den Effectors- und dem Deliberatorobjekt. Diese Methode wird nach Aufruf von run() alle 12.5 ms durch das UNIX-Signal SIGALRM aktiviert.

void mainLoop()

void stop()
Stopt den Timer. Der Timer wird wieder abgestellt.

unsigned long time()
Gibt die aktuelle Timer-Zeit in Millisekunden zurueck. Nach Aufruf von run() wird mit Zaehlen begonnen. Beim Anstoss des Spieles wird die Timer-Zeit wieder auf 0 zurueckgesetzt. In der zweiten Halbzeit passt sie sich selbständig an die Zeit des Servers an. Ansonsten laeuft sie autonom weiter.

int soccerServerSimStep()
Liefert den aktuellen Zeittakt des SoccerServers

Bereiche vor Unterbrechung schützen

void lock()
Es wird ein geschuetzter Bereich gestartet. Alle Befehle bis zum naechsten unlock() werden ohne Unterbrechung ausgefuehrt. Der Signalhandler wird fuer diesen Zeitraum abgestellt.
Throws:
TimerException, wenn ein Lock versucht wurde, obwohl bereits ein Lock gesetzt ist.

void unlock()
Ein geschuetzter Bereich wird beendet. Danach kann die aufrufende Routine wieder vom Timer unterbrochen werden.
Throws:
TimerException, wenn versucht wurde, einen Lock zu entfernen, obwohl gar kein Lock gesetzt war.

long timeSinceLastSentSubAction()
Zeit, die seit senden der letzten SubAction vergangen ist

long timeSinceLastSentMainAction()
Zeit, die seit senden der letzten MainAction vergangen ist

long theTimeCounter
Hier wird die Zeit in x ms-Schritten gezaehlt

long theTimeSinceLastSentMainAction
Zeitschritte, die seit senden der letzten MainAction vergangen ist

long theTimeSinceLastSentSubAction
Zeitschritte, die seit senden der letzten SubAction vergangen ist

long theSoccerServerSimStep
Zeittakt des SoccerServers

long theLastSentMainActionSoccerServerTime
Zeittakt des SoccerServers zu dem zuletzt eine MainAction gesendet wurde

bool isLocked
Variable, die ansagt, dass der gegenwaertige Prozess nicht unterbrochen werden soll. Wird von lock() und unlock() veraendert.

bool haveToSee
Indiz für den Scheduler, ob die Sensoren auf neue Informationen überprüft werden sollen

bool haveToSendMainAction
Indiz für die Effectors , ob sie eine neue MainAction senden sollen

bool haveToSendSubAction
Indiz für die Effectors , ob sie eine neue SubAction senden sollen

bool haveToDecideNew
Indiz für den Scheduler, ob der Deliberator aktiviert werden soll

int theInternTimeStep
Interner Zeittakt des Timers in Nanno-Sekunden

int theSentSubStep
Aller wieviel Schritte ein Sub-Kommando gesendet wird

int theSentMainStep
Aller wieviel Schritte ein Main-Kommando gesendet wird

Sensors* theSensors
Zeiger auf das Sensorik-Objekt

Effectors* theEffectors
Zeiger auf das Effector-Objekt

Deliberator* theDeliberator
Zeiger auf das Deliberator-Objekt


This class has no child classes.

alphabetic index hierarchy of classes


Hauptseite

Einleitung | Architektur | Dynamische Zusammenhänge | Referenzhandbuch | FAQ | Anhang A | Anhang B

generated by doc++