YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
MonitorLua.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3 * SPDX-License-Identifier: BSD-3-Clause
4 */
5
6#ifndef MONITORLUA_INC
7#define MONITORLUA_INC
8
9#include <string>
10#include <string>
12#include "MonitorBinding.h"
13#include "swigluarun.h"
14#include <mutex>
15
16class MonitorTrigger;
17
18class MonitorLua : public MonitorBinding
19{
20
21public:
22 MonitorLua();
23 ~MonitorLua() override;
24
25 bool load(const yarp::os::Property& options) override;
26 bool setParams(const yarp::os::Property& params) override;
27 bool getParams(yarp::os::Property& params) override;
28
29 bool acceptData(yarp::os::Things& thing) override;
32
33 bool peerTrigged() override;
34 bool canAccept() override;
35
36 bool setAcceptConstraint(const char* constraint) override {
37 if(!constraint) {
38 return false;
39 }
40 MonitorLua::constraint = constraint;
41 trimString(MonitorLua::constraint);
42 return true;
43 }
44
45 const char* getAcceptConstraint() override {
46 return constraint.c_str();
47 }
48
49 bool hasAccept() override {
50 return bHasAcceptCallback;
51 }
52
53 bool hasUpdate() override {
54 return bHasUpdateCallback;
55 }
56
57 bool hasUpdateReply() override {
58 return bHasUpdateReplyCallback;
59 }
60
61private:
62 lua_State *L;
63 std::string constraint;
64 bool bHasAcceptCallback;
65 bool bHasUpdateCallback;
66 bool bHasUpdateReplyCallback;
67 std::recursive_mutex luaMutex;
68
69public:
71
72private:
73 bool getLocalFunction(const char *name);
74 bool registerExtraFunctions();
75 void trimString(std::string& str);
76 void searchReplace(std::string& str,
77 const std::string& oldStr, const std::string& newStr);
78 bool isKeyword(const char* str);
79
80 /* lua accessible function*/
81 static int setConstraint(lua_State* L);
82 static int getConstraint(lua_State* L);
83 static int setEvent(lua_State* L);
84 static int unsetEvent(lua_State* L);
85 static int setTrigInterval(lua_State* L);
86#if LUA_VERSION_NUM > 501
87 static const struct luaL_Reg portMonitorLib[];
88#else
89 static const struct luaL_reg portMonitorLib[];
90#endif
91
92};
93
95public:
96 MonitorTrigger(MonitorLua* monitor, double period)
97 : yarp::os::PeriodicThread(period) {
98 MonitorTrigger::monitor = monitor;
99 }
100 virtual ~MonitorTrigger() { }
101
102 // inherited from the yarp::os::RateThread
103 void run () override {
104 monitor->peerTrigged();
105 }
106
107private:
108 MonitorLua* monitor;
109};
110
111
112#endif //_MONITORLUA_INC_
MonitorTrigger(MonitorLua *monitor, double period)
Definition MonitorLua.h:96
virtual ~MonitorTrigger()
Definition MonitorLua.h:100
void run() override
Loop function.
Definition MonitorLua.h:103
An abstraction for a periodic thread.
PeriodicThread(double period, ShouldUseSystemClock useSystemClock=ShouldUseSystemClock::No, PeriodicThreadClock clockAccuracy=PeriodicThreadClock::Relative)
Constructor.
A class for storing options and configuration information.
Definition Property.h:33
Base class for generic things.
Definition Things.h:18
The main, catch-all namespace for YARP.
Definition dirs.h:16
~MonitorLua() override
MonitorLua()
Class MonitorLua.
bool getParams(yarp::os::Property &params) override
bool setParams(const yarp::os::Property &params) override
bool canAccept() override
const char * getAcceptConstraint() override
Definition MonitorLua.h:45
bool hasAccept() override
Definition MonitorLua.h:49
bool hasUpdateReply() override
Definition MonitorLua.h:57
bool acceptData(yarp::os::Things &thing) override
bool hasUpdate() override
Definition MonitorLua.h:53
yarp::os::Things & updateReply(yarp::os::Things &thing) override
bool peerTrigged() override
MonitorTrigger * trigger
Definition MonitorLua.h:70
yarp::os::Things & updateData(yarp::os::Things &thing) override
bool setAcceptConstraint(const char *constraint) override
Definition MonitorLua.h:36
bool load(const yarp::os::Property &options) override