From fd052518b3ec4b173b99b79f81c32bd50c03728b Mon Sep 17 00:00:00 2001
From: Tommy Persson <tommmy.persson@liu.se>
Date: Fri, 19 Mar 2021 16:36:56 +0100
Subject: [PATCH] Work on gpu agent.

---
 src/codegen_json_bson/__init__.py | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/codegen_json_bson/__init__.py b/src/codegen_json_bson/__init__.py
index 75dabd8..8a6ce62 100644
--- a/src/codegen_json_bson/__init__.py
+++ b/src/codegen_json_bson/__init__.py
@@ -437,7 +437,9 @@ def field_assignment_get_json_value(field, ty, fieldtype, name):
     if ty == "bytes":
         res = ""
         res += f'// {ty} {field} {fieldtype} {name}\n'
-        if name == "CVLImage" or name == "CompressedImage":
+        if name == "CompressedImage":
+            res += f'  res["{field}"] = macaron::Base64::Encode(msg.{field});\n'
+        if name == "CVLImage":
             res += "  Json::Value binobj;\n"
             res += f'  binobj["__bin__"] = macaron::Base64::Encode(msg.{field});\n'
             res += f'  res["{field}"] = binobj;'
@@ -471,7 +473,7 @@ def field_assignment_parse_json_value(field, ty, fieldtype, name):
         return f'msg.{field} = ros::Duration(m["{field}"].asDouble());'
     if ty == "bytes":
         res = f'// {ty} {field} - {fieldtype} - {name}\n'
-        if name == "CVLImage" or name == "CompressedImage":
+        if name == "CVLImage":
             res += "  std::string out;\n"
             res += f'  std::string res = macaron::Base64::Decode(m["{field}"]["__bin__"].asString(), out);\n'
             res += "  if (res != \"\") {\n"
@@ -481,6 +483,16 @@ def field_assignment_parse_json_value(field, ty, fieldtype, name):
             res += "  for (unsigned int i=0; i<out.size(); i++) {\n"
             res += f'    msg.{field}.push_back(out[i]);\n'
             res += "  }"
+        if name == "CompressedImage":
+            res += "  std::string out;\n"
+            res += f'  std::string res = macaron::Base64::Decode(m["{field}"].asString(), out);\n'
+            res += "  if (res != \"\") {\n"
+            res += "    ROS_ERROR(\"FAILED TO DECODE CVL IMAGE Base64 Data: %s\", res.c_str());\n"
+            res += "    return false;\n"
+            res += "  }\n"
+            res += "  for (unsigned int i=0; i<out.size(); i++) {\n"
+            res += f'    msg.{field}.push_back(out[i]);\n'
+            res += "  }"
         return res
     listprefix = ""
     gen_for_list = True
-- 
GitLab