real_clock.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ACADO Toolkit.
3  *
4  * ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization.
5  * Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau,
6  * Milan Vukov, Rien Quirynen, KU Leuven.
7  * Developed within the Optimization in Engineering Center (OPTEC)
8  * under supervision of Moritz Diehl. All rights reserved.
9  *
10  * ACADO Toolkit is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU Lesser General Public
12  * License as published by the Free Software Foundation; either
13  * version 3 of the License, or (at your option) any later version.
14  *
15  * ACADO Toolkit is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  * Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public
21  * License along with ACADO Toolkit; if not, write to the Free Software
22  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23  *
24  */
25 
26 
35 
36 
37 
39 
40 
41 
43 {
44  lastTimeInstant = 0.0;
45 }
46 
47 
49 {
51 }
52 
53 
55 {
56 }
57 
58 
60 {
61  if( this != &rhs )
62  {
63  Clock::operator=( rhs );
64 
66  }
67 
68  return *this;
69 }
70 
71 
73 {
74  return new RealClock( *this );
75 }
76 
77 
79 {
80  if ( status != CS_STOPPED )
82 
84 
85  if ( lastTimeInstant < 0.0 )
87 
89 
90  return SUCCESSFUL_RETURN;
91 }
92 
93 
94 returnValue RealClock::step( double _timeShift
95  )
96 {
97  returnValue returnvalue = stop( );
98  if ( returnvalue != SUCCESSFUL_RETURN )
99  return returnvalue;
100 
101  elapsedTime += _timeShift;
102 
103  return start( );
104 }
105 
106 
108 {
109  if ( status == CS_NOT_INITIALIZED )
111 
112  if ( status == CS_STOPPED )
113  return SUCCESSFUL_RETURN;
114 
115  // actually stop the clock
116  double currentTimeInstant = acadoGetTime( );
117 
118  if ( currentTimeInstant < 0.0 )
119  return ACADOERROR( RET_NO_SYSTEM_TIME );
120 
121  elapsedTime += currentTimeInstant - lastTimeInstant;
122 
123  status = CS_STOPPED;
124 
125  return SUCCESSFUL_RETURN;
126 }
127 
128 
129 
131 
132 
133 /*
134  * end of file
135  */
virtual returnValue step(double _timeShift)
Definition: real_clock.cpp:94
Base class for all kind of time measurements.
Definition: clock.hpp:53
Allows real time measurements based on the system&#39;s clock.
Definition: real_clock.hpp:53
Allows to pass back messages to the calling function.
double elapsedTime
Definition: clock.hpp:163
double acadoGetTime()
#define CLOSE_NAMESPACE_ACADO
virtual Clock * clone() const
Definition: real_clock.cpp:72
double lastTimeInstant
Definition: real_clock.hpp:123
RealClock & operator=(const RealClock &rhs)
Definition: real_clock.cpp:59
void rhs(const real_t *x, real_t *f)
virtual returnValue start()
Definition: real_clock.cpp:78
virtual ~RealClock()
Definition: real_clock.cpp:54
virtual returnValue stop()
Definition: real_clock.cpp:107
#define BEGIN_NAMESPACE_ACADO
ClockStatus status
Definition: clock.hpp:164
Clock & operator=(const Clock &rhs)
Definition: clock.cpp:63
#define ACADOERROR(retval)


acado
Author(s): Milan Vukov, Rien Quirynen
autogenerated on Mon Jun 10 2019 12:35:02