SMACC2
smacc2_event_generator_library
eg_conditional_generator
src
eg_conditional_generator
eg_conditional_generator.cpp
Go to the documentation of this file.
1
// Copyright 2021 RobosoftAI Inc.
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
#include <
eg_conditional_generator/eg_conditional_generator.hpp
>
16
17
namespace
smacc2
18
{
19
namespace
event_generators
20
{
21
EgConditionalGenerator::EgConditionalGenerator
(
22
ConditionalGeneratorMode
mode, std::function<
bool
()> updatePredicate)
23
: mode_(mode), updatePredicate_(updatePredicate)
24
{
25
}
26
27
EgConditionalGenerator::~EgConditionalGenerator
() {}
28
29
void
EgConditionalGenerator::checkPredicateAndPost
()
30
{
31
if
(this->
updatePredicate_
())
32
{
33
this->
postEventTrue
();
34
}
35
else
36
{
37
this->
postEventFalse
();
38
}
39
}
40
41
void
EgConditionalGenerator::onEntry
()
42
{
43
if
(
mode_
==
ConditionalGeneratorMode::ONE_SHOT
)
44
{
45
this->
checkPredicateAndPost
();
46
}
47
}
48
49
void
EgConditionalGenerator::update
()
50
{
51
if
(
mode_
==
ConditionalGeneratorMode::ON_UPDATE
)
52
{
53
this->
checkPredicateAndPost
();
54
}
55
}
56
57
void
EgConditionalGenerator::setPredicateFunction
(std::function<
bool
()> updatePredicate)
58
{
59
updatePredicate_
= updatePredicate;
60
}
61
62
}
// namespace event_generators
63
}
// namespace smacc2
smacc2::event_generators::EgConditionalGenerator::~EgConditionalGenerator
virtual ~EgConditionalGenerator()
Definition:
eg_conditional_generator.cpp:27
smacc2::event_generators::EgConditionalGenerator::setPredicateFunction
void setPredicateFunction(std::function< bool()> updatePredicate)
Definition:
eg_conditional_generator.cpp:57
smacc2::event_generators::EgConditionalGenerator::updatePredicate_
std::function< bool()> updatePredicate_
Definition:
eg_conditional_generator.hpp:69
smacc2::event_generators::EgConditionalGenerator::postEventTrue
std::function< void()> postEventTrue
Definition:
eg_conditional_generator.hpp:67
smacc2::event_generators::EgConditionalGenerator::checkPredicateAndPost
void checkPredicateAndPost()
Definition:
eg_conditional_generator.cpp:29
smacc2::event_generators::EgConditionalGenerator::onEntry
void onEntry() override
Definition:
eg_conditional_generator.cpp:41
smacc2::event_generators::EgConditionalGenerator::EgConditionalGenerator
EgConditionalGenerator(ConditionalGeneratorMode mode, std::function< bool()> updatePredicate=nullptr)
Definition:
eg_conditional_generator.cpp:21
smacc2::event_generators::EgConditionalGenerator::mode_
ConditionalGeneratorMode mode_
Definition:
eg_conditional_generator.hpp:61
smacc2::event_generators::EgConditionalGenerator::update
virtual void update() override
Definition:
eg_conditional_generator.cpp:49
smacc2::event_generators::EgConditionalGenerator::postEventFalse
std::function< void()> postEventFalse
Definition:
eg_conditional_generator.hpp:68
eg_conditional_generator.hpp
smacc2::event_generators::ConditionalGeneratorMode
ConditionalGeneratorMode
Definition:
eg_conditional_generator.hpp:38
smacc2::event_generators::ConditionalGeneratorMode::ON_UPDATE
@ ON_UPDATE
smacc2::event_generators::ConditionalGeneratorMode::ONE_SHOT
@ ONE_SHOT
smacc2
Definition:
cp_topic_publisher.hpp:28
Generated by
1.9.4