24#include <aspect/blocked_timing.h>
25#include <core/exception.h>
26#include <core/threading/thread.h>
55 blocked_timing_hook_to_start_syncpoint(wakeup_hook),
56 blocked_timing_hook_to_end_syncpoint(wakeup_hook))
59 wakeup_hook_ = wakeup_hook;
66 delete loop_listener_;
119 default:
throw Exception(
"Unknown blocked timing wakeup hook");
123const std::map<const BlockedTimingAspect::WakeupHook, const std::string>
125 {WAKEUP_HOOK_SENSOR_ACQUIRE,
"/sensors/acquire"},
126 {WAKEUP_HOOK_SENSOR_PREPARE,
"/sensors/prepare"},
127 {WAKEUP_HOOK_SENSOR_PROCESS,
"/sensors/process"},
128 {WAKEUP_HOOK_WORLDSTATE,
"/worldstate"},
129 {WAKEUP_HOOK_THINK,
"/agent"},
130 {WAKEUP_HOOK_SKILL,
"/skill"},
131 {WAKEUP_HOOK_ACT,
"/act/main"},
132 {WAKEUP_HOOK_ACT_EXEC,
"/act/exec"},
133 {WAKEUP_HOOK_POST_LOOP,
"/postloop"}};
145 }
catch (
const std::out_of_range &e) {
146 throw Exception(
"Unknown blocked timing wakeup hook. Error: %s", e.what());
160 }
catch (
const std::out_of_range &e) {
161 throw Exception(
"Unknown blocked timing wakeup hook. Error: %s", e.what());
void add_aspect(const char *name)
Add an aspect to a thread.
WakeupHook blockedTimingAspectHook() const
Get the wakeup hook.
BlockedTimingAspect(WakeupHook wakeup_hook)
Constructor.
WakeupHook
Type to define at which hook the thread is woken up.
@ WAKEUP_HOOK_SENSOR_ACQUIRE
sensor acquisition thread, acquire data from sensor
@ WAKEUP_HOOK_ACT
act thread (motor module etc.)
@ WAKEUP_HOOK_WORLDSTATE
world state thread
@ WAKEUP_HOOK_PRE_LOOP
before each loop
@ WAKEUP_HOOK_SENSOR_PREPARE
sensor data preparation thread, convert acquired data to usable format
@ WAKEUP_HOOK_THINK
think thread (agent)
@ WAKEUP_HOOK_POST_LOOP
run after loop
@ WAKEUP_HOOK_SKILL
skill thread (skill module)
@ WAKEUP_HOOK_SENSOR_PROCESS
sensor data processing thread
@ WAKEUP_HOOK_ACT_EXEC
act execution thread
static const std::map< const WakeupHook, const std::string > hook_to_syncpoint
Translation from WakeupHooks to SyncPoints.
void finalize_BlockedTimingAspect(Thread *thread)
Finalize BlockedTiming aspect.
static std::string blocked_timing_hook_to_end_syncpoint(WakeupHook hook)
Get the syncpoint identifier corresponding to the end of a wakeup hook.
static std::string blocked_timing_hook_to_start_syncpoint(WakeupHook hook)
Get the syncpoint identifier corresponding to the start of a wakeup hook.
static const char * blocked_timing_hook_to_string(WakeupHook hook)
Get string for wakeup hook.
void init_BlockedTimingAspect(Thread *thread)
Init BlockedTiming aspect.
virtual ~BlockedTimingAspect()
Virtual empty destructor.
Loop Listener of the BlockedTimingAspect.
void post_loop(Thread *thread)
The post loop function of the BlockedTimingAspect This function is called right after the loop of the...
Base class for exceptions in Fawkes.
Thread aspect to acces to SyncPoints Give this aspect to your thread to manage SyncPoints,...
Thread class encapsulation of pthreads.
void add_loop_listener(ThreadLoopListener *loop_listener)
Add loop listener.
void wakeup()
Wake up thread.
void remove_loop_listener(ThreadLoopListener *loop_listener)
Remove loop listener.
Fawkes library namespace.