OpenRTM
1.0.0
Main Page
Namespaces
Classes
Files
File List
File Members
tmp
binarydeb
ros-indigo-openrtm-aist-1.1.0
src
lib
coil
include
coil
PeriodicTask.h
Go to the documentation of this file.
1
// -*- C++ -*-
20
#ifndef COIL_PERIODICTASK_H
21
#define COIL_PERIODICTASK_H
22
23
#include <map>
24
#include <string>
25
#include <vector>
26
#include <algorithm>
27
28
#include <
coil/Mutex.h
>
29
#include <
coil/Guard.h
>
30
#include <
coil/Condition.h
>
31
#include <
coil/TimeValue.h
>
32
#include <
coil/TimeMeasure.h
>
33
#include <
coil/PeriodicTaskBase.h
>
34
35
namespace
coil
36
{
61
class
PeriodicTask
62
:
public
coil::PeriodicTaskBase
63
{
64
public
:
65
typedef
coil::Guard<coil::Mutex>
Guard
;
66
82
PeriodicTask
();
83
99
virtual
~PeriodicTask
();
100
123
virtual
void
activate
();
124
138
virtual
void
finalize
();
139
153
virtual
int
suspend
(
void
);
154
168
virtual
int
resume
(
void
);
169
183
virtual
void
signal
();
184
198
virtual
bool
setTask
(
TaskFuncBase
* func,
bool
delete_in_dtor =
true
);
199
217
template
<
class
O,
class
F>
218
bool
setTask
(O* obj, F fun)
219
{
220
return
this->
setTask
(
new
TaskFunc<O, F>
(obj, fun));
221
}
222
236
virtual
void
setPeriod
(
double
period);
237
251
virtual
void
setPeriod
(
TimeValue
& period);
252
260
virtual
void
executionMeasure
(
bool
value);
261
269
virtual
void
executionMeasureCount
(
int
n);
270
278
virtual
void
periodicMeasure
(
bool
value);
279
287
virtual
void
periodicMeasureCount
(
int
n);
288
296
virtual
TimeMeasure::Statistics
getExecStat
();
297
305
virtual
TimeMeasure::Statistics
getPeriodStat
();
306
307
protected
:
315
virtual
int
svc
();
316
324
virtual
void
sleep
();
325
333
virtual
void
updateExecStat
();
334
342
virtual
void
updatePeriodStat
();
343
344
protected
:
352
coil::TimeValue
m_period
;
353
361
bool
m_nowait
;
362
370
TaskFuncBase
*
m_func
;
371
379
bool
m_deleteInDtor
;
380
390
class
alive_t
391
{
392
public
:
393
alive_t
(
bool
val) :
value
(val) {}
394
bool
value
;
395
coil::Mutex
mutex
;
396
};
397
405
alive_t
m_alive
;
406
414
struct
suspend_t
415
{
416
suspend_t
(
bool
sus) :
suspend
(sus),
mutex
(),
cond
(
mutex
) {}
417
bool
suspend
;
418
coil::Mutex
mutex
;
419
coil::Condition<coil::Mutex>
cond
;
420
};
421
429
suspend_t
m_suspend
;
430
438
struct
statistics_t
439
{
440
coil::TimeMeasure::Statistics
stat
;
441
coil::Mutex
mutex
;
442
};
443
451
bool
m_execMeasure
;
452
460
unsigned
int
m_execCount
;
461
469
unsigned
int
m_execCountMax
;
470
478
statistics_t
m_execStat
;
479
487
coil::TimeMeasure
m_execTime
;
488
496
bool
m_periodMeasure
;
497
505
unsigned
int
m_periodCount
;
506
514
unsigned
int
m_periodCountMax
;
515
523
statistics_t
m_periodStat
;
524
532
coil::TimeMeasure
m_periodTime
;
533
534
};
535
536
};
// namespace coil
537
538
#endif // COIL_PERIODICTASK_H
Generated on Sun Mar 12 2017 16:20:46 for OpenRTM by
1.8.4