cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mtsCollectorBase.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* ex: set filetype=cpp softtabstop=4 shiftwidth=4 tabstop=4 cindent expandtab: */
3 
4 /*
5 
6  Author(s): Min Yang Jung, Anton Deguet
7  Created on: 2009-02-25
8 
9  (C) Copyright 2009-2012 Johns Hopkins University (JHU), All Rights
10  Reserved.
11 
12 --- begin cisst license - do not edit ---
13 
14 This software is provided "as is" under an open source license, with
15 no warranty. The complete license can be found in license.txt and
16 http://www.cisst.org/cisst/license.txt.
17 
18 --- end cisst license ---
19 
20 */
21 
27 #ifndef _mtsCollectorBase_h
28 #define _mtsCollectorBase_h
29 
30 #include <cisstCommon/cmnUnits.h>
34 
35 #include <string>
36 #include <stdexcept>
37 
38 // Always include last
40 
49 {
50  friend class mtsCollectorBaseTest;
51 
52  //-------------------- Auxiliary class definition -----------------------//
53 public:
54  typedef enum {
58  COLLECTOR_FILE_FORMAT_UNDEFINED
59  } CollectorFileFormat;
60 
61  typedef enum {
64  COLLECTOR_FILE_FLOATING_NOTATION_SCIENTIFIC
65  } CollectorFileFloatingNotation;
66 
67  //------------------------- Protected Members ---------------------------//
68 protected:
69 
71  typedef enum {
72  COLLECTOR_STOP, // nothing happens.
73  COLLECTOR_WAIT_START, // Start(void) has been called. Wait for some time elapsed.
74  COLLECTOR_COLLECTING, // Currently collecting data
75  COLLECTOR_WAIT_STOP // Stop(void) has been called. Wait for some time elapsed.
76  } CollectorStatus;
77 
80 
82  public:
84 
87  };
88 
96 
99 
104 
107 
109  unsigned int SampleCounter;
110 
112  unsigned int SampleCounterForEvent;
113 
116 
119 
121  std::string OutputFileName;
122  std::string OutputHeaderFileName;
123 
126 
129  std::ostream * OutputStream;
130  std::ofstream * OutputFile;
131  // add header file stream
132  std::ostream * OutputHeaderStream;
133  std::ofstream * OutputHeaderFile;
134 
138 
141  std::streamsize Precision;
142 
145  std::streamsize Width;
146 
149 
152 
155  char Delimiter;
156 
159 
163 
166  void SetDelimiter(void);
167 
169  void SetOutputStreamParams(void);
170 
173 
175  inline void StartCollectionCommand(void) {
176  this->StartCollection(mtsDouble(0.0));
177  }
178  inline void StartCollectionInCommand(const mtsDouble & delayInSeconds) {
179  this->StartCollection(delayInSeconds);
180  }
181  inline void StopCollectionCommand(void) {
182  this->StopCollection(mtsDouble(0.0));
183  }
184  inline void StopCollectionInCommand(const mtsDouble & delayInSeconds) {
185  this->StopCollection(delayInSeconds);
186  }
188 
190  void Init(void);
191 
193  void Cleanup(void);
194 
196  void ClearTaskMap(void);
197 
199  virtual void Startup(void) = 0;
200 
202  void SetupControlInterface(void);
203 
204 public:
205  mtsCollectorBase(const std::string & collectorName, const CollectorFileFormat fileFormat);
206 
207  virtual ~mtsCollectorBase(void);
208 
210  virtual std::string GetDefaultOutputName(void) = 0;
211 
214  void SetOutput(const std::string & fileName, const CollectorFileFormat fileFormat);
215 
218  void SetOutput(std::ostream & outputStream, const CollectorFileFormat fileFormat);
219 
226  void SetOutput(std::ostream & outputStream);
227 
232  void SetOutputToDefault(const CollectorFileFormat fileFormat);
233 
239  void SetOutputToDefault(void);
240 
242  void CloseOutput(void);
243 
245  inline const std::string & GetOutputFileName(void) const {
246  return this->OutputFileName;
247  }
248 
251  void OpenFileIfNeeded(void);
252 
255  virtual void StartCollection(const mtsDouble & delayInSeconds) = 0;
256 
259  virtual void StopCollection(const mtsDouble & delayInSeconds) = 0;
260 
263 
266 
269 
271  void SetWorkingDirectory(const mtsStdString & directory);
272 
274  void GetWorkingDirectory(mtsStdString & placeHolder) const;
275 
278  void SetOutputStreamFloatingNotation(const CollectorFileFloatingNotation floatingNotation);
279 
282  void SetOutputStreamPrecision(const int precision);
283 
286  void SetOutputStreamWidth(const int width);
287 
290  void SetOutputStreamFill(const char fillCharacter);
291 };
292 
294 
295 #endif // _mtsCollectorBase_h
296 
#define CISST_EXPORT
Definition: cmnExportMacros.h:50
bool ConnectedFlag
Definition: mtsCollectorBase.h:103
bool FirstRunningFlag
Definition: mtsCollectorBase.h:106
CollectorFileFloatingNotation
Definition: mtsCollectorBase.h:61
mtsFunctionWrite ProgressEventTrigger
Definition: mtsCollectorBase.h:268
#define mtsComponentManager
Definition: mtsTaskManager.h:35
mtsGenericObjectProxy< double > mtsDouble
Definition: mtsGenericObjectProxy.h:730
Defines a task with a Run method trigger by signals (any queued command or event).
cmnNamedMap< SignalMapElement > SignalMapType
Definition: mtsCollectorBase.h:93
mtsFunctionWrite CollectionStoppedEventTrigger
Definition: mtsCollectorBase.h:265
SignalMapElement(void)
Definition: mtsCollectorBase.h:85
Declaration of cmnNamedMap.
bool FileOpened
Definition: mtsCollectorBase.h:151
Definition: mtsFunctionVoid.h:36
std::ofstream * OutputFile
Definition: mtsCollectorBase.h:130
mtsTask * Task
Definition: mtsCollectorBase.h:83
Definition: mtsCollectorBase.h:72
void StopCollectionCommand(void)
Definition: mtsCollectorBase.h:181
Declaration of units and unit conversion methodsThis file include the definition and implementation o...
const std::string & GetOutputFileName(void) const
Definition: mtsCollectorBase.h:245
char Delimiter
Definition: mtsCollectorBase.h:155
virtual void Startup(void)
Definition: mtsComponent.h:262
void StopCollectionInCommand(const mtsDouble &delayInSeconds)
Definition: mtsCollectorBase.h:184
Definition: mtsTaskFromSignal.h:40
Serialization utility class.This class allows to serialize objects of different types (all derived fr...
Definition: cmnSerializer.h:164
Definition: cmnNamedMap.h:54
Definition: mtsCollectorBase.h:74
std::ostream * OutputStream
Definition: mtsCollectorBase.h:129
static mtsComponentManager * ComponentManager
Definition: mtsCollectorBase.h:98
std::string OutputFileName
Definition: mtsCollectorBase.h:121
double TimeOfLastProgressEvent
Definition: mtsCollectorBase.h:118
std::string OutputHeaderFileName
Definition: mtsCollectorBase.h:122
CollectorFileFormat
Definition: mtsCollectorBase.h:54
mtsInterfaceProvided * ControlInterface
Definition: mtsCollectorBase.h:172
cmnSerializer * Serializer
Definition: mtsCollectorBase.h:162
Definition: mtsTask.h:60
Definition: mtsCollectorBase.h:73
char FillCharacter
Definition: mtsCollectorBase.h:148
std::ofstream * OutputHeaderFile
Definition: mtsCollectorBase.h:133
mtsStdString WorkingDirectoryMember
Definition: mtsCollectorBase.h:125
TaskMapType TaskMap
Definition: mtsCollectorBase.h:95
~SignalMapElement(void)
Definition: mtsCollectorBase.h:86
std::streamsize Precision
Definition: mtsCollectorBase.h:141
Definition: mtsCollectorBase.h:56
unsigned int SampleCounterForEvent
Definition: mtsCollectorBase.h:112
Definition: mtsInterfaceProvided.h:96
cmnNamedMap< SignalMapType > TaskMapType
Definition: mtsCollectorBase.h:94
std::ostream * OutputHeaderStream
Definition: mtsCollectorBase.h:132
CollectorFileFormat FileFormat
Definition: mtsCollectorBase.h:79
void StartCollectionCommand(void)
Definition: mtsCollectorBase.h:175
Definition: mtsCollectorBase.h:81
mtsFunctionVoid CollectionStartedEventTrigger
Definition: mtsCollectorBase.h:262
Rules of exporting.
Definition: mtsFunctionWrite.h:37
std::streamsize Width
Definition: mtsCollectorBase.h:145
Definition for backward compatibility.
#define CMN_DECLARE_SERVICES_INSTANTIATION(className)
Definition: cmnClassRegisterMacros.h:202
virtual void Cleanup(void)
Definition: mtsComponent.h:267
double TimeIntervalForProgressEvent
Definition: mtsCollectorBase.h:115
CollectorStatus
Definition: mtsCollectorBase.h:71
CollectorStatus Status
Definition: mtsCollectorBase.h:78
CollectorFileFloatingNotation FloatingNotation
Definition: mtsCollectorBase.h:137
void StartCollectionInCommand(const mtsDouble &delayInSeconds)
Definition: mtsCollectorBase.h:178
Definition: mtsCollectorBase.h:57
unsigned int SampleCounter
Definition: mtsCollectorBase.h:109
std::stringstream StringStreamBufferForSerialization
Definition: mtsCollectorBase.h:158
Definition: mtsCollectorBase.h:48