From 66a7215a4bf9f35533703593ed84a50d2f97b7fe Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Tue, 21 Nov 2023 16:11:18 +0100
Subject: [PATCH] Include status in conversions

---
 .../skills/core/SkillStatusUpdate.cpp         | 35 ++++++++++++++-----
 1 file changed, 27 insertions(+), 8 deletions(-)

diff --git a/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.cpp b/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.cpp
index 986aab1bc..599126041 100644
--- a/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.cpp
+++ b/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.cpp
@@ -315,6 +315,16 @@ namespace armarx
             return ret;
         }
 
+        template <class BoT, class DtoT>
+        static void
+        setResultFromIce(BoT& bo, const DtoT& dto)
+        {
+            if (dto.result)
+            {
+                bo.result = aron::make_dict(dto.result);
+            }
+        }
+
         TerminatedSkillStatusUpdate
         TerminatedSkillStatusUpdate::FromIce(const manager::dto::SkillStatusUpdate& update)
         {
@@ -323,6 +333,7 @@ namespace armarx
                  .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
                  .callbackInterface = update.callbackInterface}};
             skills::fromIce(update.status, ret.status);
+            setResultFromIce(ret, update);
             return ret;
         }
 
@@ -335,17 +346,20 @@ namespace armarx
                  .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
                  .callbackInterface = update.callbackInterface}};
             skills::fromIce(update.status, ret.status);
+            setResultFromIce(ret, update);
             return ret;
         }
 
         SkillStatusUpdate
         SkillStatusUpdate::FromIce(const manager::dto::SkillStatusUpdate& update)
         {
-            SkillStatusUpdate ret{
-                {.executionId = skills::SkillExecutionID::FromIce(update.executionId),
-                 .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
-                 .callbackInterface = update.callbackInterface}};
+            SkillStatusUpdate ret{{
+                .executionId = skills::SkillExecutionID::FromIce(update.executionId),
+                .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
+                .callbackInterface = update.callbackInterface,
+            }};
             skills::fromIce(update.status, ret.status);
+            setResultFromIce(ret, update);
             return ret;
         }
 
@@ -353,11 +367,13 @@ namespace armarx
         SkillStatusUpdate::FromIce(const provider::dto::SkillStatusUpdate& update,
                                    const std::optional<skills::ProviderID>& providerId)
         {
-            SkillStatusUpdate ret{
-                {.executionId = skills::SkillExecutionID::FromIce(update.executionId, providerId),
-                 .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
-                 .callbackInterface = update.callbackInterface}};
+            SkillStatusUpdate ret{{
+                .executionId = skills::SkillExecutionID::FromIce(update.executionId, providerId),
+                .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
+                .callbackInterface = update.callbackInterface,
+            }};
             skills::fromIce(update.status, ret.status);
+            setResultFromIce(ret, update);
             return ret;
         }
 
@@ -369,6 +385,7 @@ namespace armarx
                  .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
                  .callbackInterface = update.callbackInterface}};
             skills::fromIce(update.status, ret.status);
+            setResultFromIce(ret, update);
             return ret;
         }
 
@@ -382,7 +399,9 @@ namespace armarx
                  .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
                  .callbackInterface = update.callbackInterface}};
             skills::fromIce(update.status, ret.status);
+            setResultFromIce(ret, update);
             return ret;
         }
+
     } // namespace skills
 } // namespace armarx
-- 
GitLab