From 85939afd0b5716353368dacfdeac57c0e77c15d2 Mon Sep 17 00:00:00 2001
From: Sergi Hernandez Juan <shernand@iri.upc.edu>
Date: Tue, 16 May 2023 11:12:31 +0200
Subject: [PATCH] Added two actions: one to generate a success state and the
 other one to generate a failure state.

---
 include/iri_bt_basic_nodes.h |  2 ++
 src/iri_bt_basic_nodes.cpp   | 13 ++++++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/include/iri_bt_basic_nodes.h b/include/iri_bt_basic_nodes.h
index 10bd101..fc056ca 100644
--- a/include/iri_bt_basic_nodes.h
+++ b/include/iri_bt_basic_nodes.h
@@ -37,6 +37,8 @@ class IriBTBasicNodes
       *
       */
     BT::NodeStatus RUNNING(void);
+    BT::NodeStatus FAILURE(void);
+    BT::NodeStatus SUCCESS(void);
     BT::NodeStatus is_variable_true(BT::TreeNode& self);
     BT::NodeStatus is_variable_false(BT::TreeNode& self);
     BT::NodeStatus transform_pose(BT::TreeNode& self);
diff --git a/src/iri_bt_basic_nodes.cpp b/src/iri_bt_basic_nodes.cpp
index ecf9ca1..c1c91e9 100644
--- a/src/iri_bt_basic_nodes.cpp
+++ b/src/iri_bt_basic_nodes.cpp
@@ -18,6 +18,8 @@ void IriBTBasicNodes::init(IriBehaviorTreeFactory &factory)
   factory.registerSimpleCondition("is_variable_false", std::bind(&IriBTBasicNodes::is_variable_false, this, std::placeholders::_1),check_variable_ports);
 
   factory.registerIriAsyncAction("RUNNING",  std::bind(&IriBTBasicNodes::RUNNING, this));
+  factory.registerIriAsyncAction("FAILURE",  std::bind(&IriBTBasicNodes::FAILURE, this));
+  factory.registerIriAsyncAction("SUCCESS",  std::bind(&IriBTBasicNodes::SUCCESS, this));
   factory.registerSimpleAction("transform_pose", std::bind(&IriBTBasicNodes::transform_pose, this, std::placeholders::_1),transform_pose_ports);
   factory.registerSimpleAction("compute_distance", std::bind(&IriBTBasicNodes::compute_distance, this, std::placeholders::_1),compute_distance_ports);
   factory.registerSimpleAction("compare_bigger", std::bind(&IriBTBasicNodes::compare_bigger, this, std::placeholders::_1),compare_ports);
@@ -162,6 +164,15 @@ BT::NodeStatus IriBTBasicNodes::compare_smaller(BT::TreeNode& self)
 
 BT::NodeStatus IriBTBasicNodes::RUNNING()
 {
-    return BT::NodeStatus::RUNNING;
+  return BT::NodeStatus::RUNNING;
 }
 
+BT::NodeStatus IriBTBasicNodes::FAILURE()
+{
+  return BT::NodeStatus::FAILURE;
+}
+
+BT::NodeStatus IriBTBasicNodes::SUCCESS()
+{
+  return BT::NodeStatus::SUCCESS;
+}
-- 
GitLab