INTRODUCTION
Overview
Download and Install
Quick Start
Documentation
Publications

NONFRAMEWORK CODE
Driver Interfaces
Drivers
Libraries
Utilities

FRAMEWORK CODE
Interfaces
Components
Libraries
Utilities

Full Software Listings

DEVELOPER
Tutorials
Examples
Dev Guide
Dashboard

PEOPLE
Contributors
Users

SourceForge.net Logo
Project
Download
Mailing lists

 

         

replayclock.h

00001 /*
00002  * Orca-Robotics Project: Components for robotics 
00003  *               http://orca-robotics.sf.net/
00004  * Copyright (c) 2004-2009 Alex Brooks, Alexei Makarenko, Tobias Kaupp
00005  *
00006  * This copy of Orca is licensed to you under the terms described in
00007  * the LICENSE file included in this distribution.
00008  *
00009  */
00010 
00011 #ifndef REPLAY_CLOCK_H
00012 #define REPLAY_CLOCK_H
00013 
00014 #include <IceUtil/Time.h>
00015 
00016 namespace logplayer
00017 {
00018 
00019 //
00020 // ReplayClock is used to make sure the log gets played with the correct timing
00021 // (possibly not real-time).
00022 //
00023 // The timing could also be controlled by just looking at time deltas between items,
00024 // but that would drift.  This provides some kind of absolute reference.
00025 //
00026 // We keep track of two things:
00027 //  1. real time since the start of continuous playback, and
00028 //  2. log time since the start of continuous playback.
00029 //
00030 class ReplayClock
00031 {
00032 public:
00033     // Throws an error string if replayRate is set to zero.
00034     ReplayClock( double replayRate=1.0 );
00035 
00036     void setReplayRate( double replayRate );
00037 
00038     // When we start continuous replay, use this call to tell the clock the
00039     // time (in log-space) of the first item.
00040     void setContinuousReplayStartTime( const IceUtil::Time &timeFirstLogItem );
00041 
00042     // Give it the time in log-land till the next item, it returns the
00043     // time we should wait in the real world.
00044     // Note: setContinuousReplayStartTime should have been called already.
00045     IceUtil::Time realTimeTillNextItem( const IceUtil::Time &logTimeTillNextItem );
00046 
00047 private:
00048 
00049     double replayRate_;
00050     IceUtil::Time logStartTime_;
00051     IceUtil::Time replayStartTime_;
00052 };
00053 
00054 } // namespace
00055 
00056 #endif
 

Webmaster: Tobias Kaupp (tobasco at users.sourceforge.net)


Generated for Orca Robotics by  doxygen 1.4.5