orca-robotics


INTRODUCTION
Overview
Download and Install
Quick Start
Documentation
Publications

REPOSITORY
Interfaces
Components
Libraries
Utilities
Software Map

DEVELOPER
Tutorials
Examples
Dev Guide
Dashboard
Wiki
login/pass: orca/orca

PEOPLE
Contributors
Users

SourceForge.net Logo
Project
Download
Mailing lists

 

         

replayers.h

00001 #ifndef ORCALOGFACTORY_REPLAYERS_H
00002 #define ORCALOGFACTORY_REPLAYERS_H
00003 
00004 #include <orcalog/orcalog.h>
00005 #include <orcalogfactory/logreaders.h>
00006 
00007 #include <orcaifaceimpl/camera.h>
00008 #include <orcaifaceimpl/drivebicycle.h>
00009 #include <orcaifaceimpl/gps.h>
00010 #include <orcaifaceimpl/laserscanner2d.h>
00011 #include <orcaifaceimpl/localise2d.h>
00012 #include <orcaifaceimpl/localise3d.h>
00013 #include <orcaifaceimpl/odometry2d.h>
00014 #include <orcaifaceimpl/odometry3d.h>
00015 #include <orcaifaceimpl/power.h>
00016 #include <orcaifaceimpl/wifi.h>
00017 
00018 namespace orcalogfactory {
00019 
00020 // fwd declarations (ignore, they're defined below)
00021 template<class LogReaderType,
00022          class IfaceImplType>
00023 class DefaultIfaceImplSetup;
00024 template<class LogReaderType,
00025          class IfaceImplType,
00026          class DescriptionType>
00027 class DescriptionIfaceImplSetup;
00028 
00029 
00031 
00032 
00033 //
00034 // Generic Replayer.  The last template argument is a class whose constructor
00035 // will set up the IfaceImpl (including reading a description if necessary).
00036 //
00037 template< class IfaceImplType,
00038           class LogReaderType,
00039           class DataType,
00040           class IfaceImplSetup=DefaultIfaceImplSetup<LogReaderType,IfaceImplType> >
00041 class GenericReplayer : public orcalog::Replayer
00042 {
00043 public:
00044 
00045     GenericReplayer( const orcalog::LogReaderInfo &logReaderInfo )
00046         : logReader_( logReaderInfo )
00047         {}
00048     virtual ~GenericReplayer() {}
00049 
00050     void init()
00051         {
00052             logReader_.init();
00053             IfaceImplSetup( logReader_, iface_ );
00054             iface_->initInterface();
00055         }
00056 
00057     void replayData( int index )
00058         {
00059             logReader_.setLogIndex( index );
00060             logReader_.read( data_ );
00061             iface_->localSetAndSend( data_ );
00062         }
00063 
00064     std::string toString() const { return logReader_.toString(); }
00065 
00066 protected:
00067 
00068     IceUtil::Handle<IfaceImplType> iface_;
00069     LogReaderType                  logReader_;
00070     DataType                       data_;
00071 
00072 };
00073 
00074 //
00075 // Useful defaults for setting up the IfaceImpl:
00076 //
00077 
00078 //
00079 // This default will set up the IfaceImpl with no description required.
00080 //
00081 template<class LogReaderType,
00082          class IfaceImplType>
00083 class DefaultIfaceImplSetup {
00084 public:
00085     DefaultIfaceImplSetup( LogReaderType                  &logReader,
00086                            IceUtil::Handle<IfaceImplType> &iface )
00087         {
00088             iface = new IfaceImplType( logReader.logReaderInfo().context,
00089                                        logReader.logReaderInfo().interfaceName );
00090         }
00091 };
00092 //
00093 // This version works when all that needs to happen is that a description
00094 // needs to be read in.
00095 //
00096 template<class LogReaderType,
00097          class IfaceImplType,
00098          class DescriptionType>
00099 class DescriptionIfaceImplSetup {
00100 public:
00101     DescriptionIfaceImplSetup( LogReaderType                  &logReader,
00102                                IceUtil::Handle<IfaceImplType> &iface )
00103         {
00104             DescriptionType descr;
00105             logReader.read( descr );
00106             iface = new IfaceImplType( descr,
00107                                        logReader.logReaderInfo().context,
00108                                        logReader.logReaderInfo().interfaceName );
00109         }
00110 };
00111 
00114 
00115 typedef GenericReplayer< orcaifaceimpl::CameraImpl,
00116                          CameraLogReader,
00117                          orca::ImageDataPtr,
00118                          DescriptionIfaceImplSetup<CameraLogReader,
00119                                                    orcaifaceimpl::CameraImpl,
00120                                                    orca::CameraDescriptionPtr> >       CameraReplayer;
00121 
00123 
00124 typedef GenericReplayer< orcaifaceimpl::DriveBicycleImpl,
00125                          DriveBicycleLogReader,
00126                          orca::DriveBicycleData,
00127                          DescriptionIfaceImplSetup<DriveBicycleLogReader,
00128                                                    orcaifaceimpl::DriveBicycleImpl,
00129                                                    orca::VehicleDescription> >       DriveBicycleReplayer;
00130 
00132 
00133 typedef GenericReplayer< orcaifaceimpl::GpsImpl,
00134                          GpsLogReader,
00135                          orca::GpsData,
00136                          DescriptionIfaceImplSetup<GpsLogReader,
00137                                                    orcaifaceimpl::GpsImpl,
00138                                                    orca::GpsDescription> >       GpsReplayer;
00139 
00141 
00142 typedef GenericReplayer< orcaifaceimpl::LaserScanner2dImpl,
00143                          LaserScanner2dLogReader,
00144                          orca::LaserScanner2dDataPtr,
00145                          DescriptionIfaceImplSetup<LaserScanner2dLogReader,
00146                                                   orcaifaceimpl::LaserScanner2dImpl,
00147                                                   orca::RangeScanner2dDescription> > LaserScanner2dReplayer;
00148 
00150 
00151 typedef GenericReplayer< orcaifaceimpl::Localise2dImpl,
00152                          Localise2dLogReader,
00153                          orca::Localise2dData,
00154                          DescriptionIfaceImplSetup<Localise2dLogReader,
00155                                                   orcaifaceimpl::Localise2dImpl,
00156                                                   orca::VehicleGeometryDescriptionPtr> >    Localise2dReplayer;
00157 
00159 
00160 typedef GenericReplayer< orcaifaceimpl::Localise3dImpl,
00161                          Localise3dLogReader,
00162                          orca::Localise3dData,
00163                          DescriptionIfaceImplSetup<Localise3dLogReader,
00164                                                   orcaifaceimpl::Localise3dImpl,
00165                                                   orca::VehicleGeometryDescriptionPtr> >    Localise3dReplayer;
00166 
00168 
00169 typedef GenericReplayer< orcaifaceimpl::Odometry2dImpl,
00170                          Odometry2dLogReader,
00171                          orca::Odometry2dData,
00172                          DescriptionIfaceImplSetup<Odometry2dLogReader,
00173                                                   orcaifaceimpl::Odometry2dImpl,
00174                                                   orca::VehicleDescription> >    Odometry2dReplayer;
00175 
00177 
00178 typedef GenericReplayer< orcaifaceimpl::Odometry3dImpl,
00179                          Odometry3dLogReader,
00180                          orca::Odometry3dData,
00181                          DescriptionIfaceImplSetup<Odometry3dLogReader,
00182                                                   orcaifaceimpl::Odometry3dImpl,
00183                                                   orca::VehicleDescription> >    Odometry3dReplayer;
00184 
00186 
00187 typedef GenericReplayer<orcaifaceimpl::PowerImpl,
00188                         PowerLogReader,
00189                         orca::PowerData> PowerReplayer;
00190 
00192 
00193 typedef GenericReplayer<orcaifaceimpl::WifiImpl,
00194                         WifiLogReader,
00195                         orca::WifiData> WifiReplayer;
00196 
00197 }
00198 
00199 #endif
00200 
00201 
00202 
00203 
00204 // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
00205 // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
00206 //
00207 // AlexB: A slightly different approach that I tried and left lying around
00208 //        just in case.
00209 //
00210 
00211 // template<class IfaceImplType,
00212 //          class LogReaderType,
00213 //          class DataType>
00214 // class GenericReplayer : public orcalog::Replayer
00215 // {
00216 // public:
00217 
00218 //     GenericReplayer( const orcalog::LogReaderInfo &logReaderInfo )
00219 //         : logReader_( logReaderInfo )
00220 //         {}
00221 //     virtual ~GenericReplayer() {}
00222 
00223 //     void init()
00224 //         {
00225 //             logReader_.init();
00226 //             setupIface();
00227 //             iface_->initInterface();
00228 //         }
00229 
00230 //     void replayData( int index )
00231 //         {
00232 //             logReader_.setLogIndex( index );
00233 //             logReader_.read( data_ );
00234 //             iface_->localSetAndSend( data_ );
00235 //         }
00236 
00237 //     std::string toString() const { return logReader_.toString(); }
00238 
00239 // protected:
00240 
00241 //     // Derived classes should overload.
00242 //     virtual void setupIface()=0;
00243 
00244 //     IceUtil::Handle<IfaceImplType> iface_;
00245 //     LogReaderType                  logReader_;
00246 //     DataType                       data_;
00247 
00248 // };
00249 
00250 // //////////////////////////////////////////////////////////////////////
00251 // //////////////////////////////////////////////////////////////////////
00252 // //////////////////////////////////////////////////////////////////////
00253 
00254 // class LaserScanner2dReplayer : public GenericReplayer<orcaifaceimpl::LaserScanner2dImpl,
00255 //                                                       LaserScanner2dLogReader,
00256 //                                                       orca::LaserScanner2dDataPtr>
00257 // {
00258 // public:
00259 
00260 //     LaserScanner2dReplayer( const orcalog::LogReaderInfo &logReaderInfo )
00261 //         : GenericReplayer<orcaifaceimpl::LaserScanner2dImpl,
00262 //                           LaserScanner2dLogReader,
00263 //                           orca::LaserScanner2dDataPtr>( logReaderInfo )
00264 //         {}
00265 
00266 // private:
00267 
00268 //     virtual void setupIface()
00269 //         {
00270 //             orca::RangeScanner2dDescription descr;
00271 //             logReader_.read( descr );
00272 //             iface_ = new orcaifaceimpl::LaserScanner2dImpl( descr,
00273 //                                                             logReader_.logReaderInfo().context,
00274 //                                                             logReader_.logReaderInfo().interfaceName );
00275 //         }
00276 // };
00277 
00278 // //////////////////////////////////////////////////////////////////////
00279 
00280 // class PowerReplayer : public GenericReplayer<orcaifaceimpl::PowerImpl,
00281 //                                              PowerLogReader,
00282 //                                              orca::PowerData>
00283 // {
00284 // public:
00285 
00286 //     PowerReplayer( const orcalog::LogReaderInfo &logReaderInfo )
00287 //         : GenericReplayer<orcaifaceimpl::PowerImpl,
00288 //                           PowerLogReader,
00289 //                           orca::PowerData>( logReaderInfo )
00290 //         {}
00291 
00292 // private:
00293 
00294 //     virtual void setupIface()
00295 //         {
00296 //             iface_ = new orcaifaceimpl::PowerImpl( logReader_.logReaderInfo().context,
00297 //                                                    logReader_.logReaderInfo().interfaceName );
00298 //         }
00299 // };
00300 
00301 // // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
00302 // // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
00303 // // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
00304 
 

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


Generated for Orca Robotics by  doxygen 1.4.5