diff --git a/src/main/jastadd/backend/Configuration.jadd b/src/main/jastadd/backend/Configuration.jadd new file mode 100644 index 0000000000000000000000000000000000000000..711ba2511d1e0c8535007cacccac99872128e58f --- /dev/null +++ b/src/main/jastadd/backend/Configuration.jadd @@ -0,0 +1,4 @@ +aspect Configuration { + public static boolean ASTNode.loggingEnabledForReads = false; + public static boolean ASTNode.loggingEnabledForWrites = false; +} diff --git a/src/main/jastadd/backend/Generation.jadd b/src/main/jastadd/backend/Generation.jadd index e827c68c947baf50b43bf8abfc2651dfc7bced2c..7a134eceef421988a9de954ffa86c3778a891069 100644 --- a/src/main/jastadd/backend/Generation.jadd +++ b/src/main/jastadd/backend/Generation.jadd @@ -162,6 +162,11 @@ aspect AspectGeneration { .append(connectMethod()).append("(String topic) {\n"); sb.append(ind(2)).append(mqttUpdaterAttribute()).append("().newConnection(topic, message -> {\n"); String lastResult = generateMappingApplication(sb, 3, "message"); + if (loggingEnabledForReads) { + sb.append(ind(3)).append("System.out.println(\"[Read] \" + topic + \" -> ") + .append(getToken().getName()).append(" = \" + ").append(lastResult) + .append(");\n"); + } sb.append(ind(3)).append("set").append(getToken().getName()).append("(").append(lastResult).append(");\n"); sb.append(ind(2)).append("});\n"); sb.append(ind(1)).append("}\n\n"); @@ -198,6 +203,10 @@ aspect AspectGeneration { // write method sb.append(ind(1)).append("protected void ").append(parentTypeName).append(".") .append(writeMethod()).append("() {\n"); + if (loggingEnabledForWrites) { + sb.append(ind(2)).append("System.out.println(\"[Write] ").append(getToken().getName()) + .append(" = \" + ").append(lastValue()).append(" + \" -> ").append(writeTopic()).append("\");\n"); + } // _mqttUpdater().publish(${writeTopic()}, ${lastValue()}); sb.append(ind(2)).append(mqttUpdaterAttribute()).append("().publish(") .append(writeTopic()).append(", ").append(lastValue()).append(");\n"); diff --git a/src/main/java/org/jastadd/ros2rag/compiler/Compiler.java b/src/main/java/org/jastadd/ros2rag/compiler/Compiler.java index af1076eb7ff423f9e6e4e2ac7715bb8668332d2a..ad4298dbd873ca42b66d85793685b78c91f01e4d 100644 --- a/src/main/java/org/jastadd/ros2rag/compiler/Compiler.java +++ b/src/main/java/org/jastadd/ros2rag/compiler/Compiler.java @@ -25,6 +25,8 @@ public class Compiler { private StringOption optionInputRos2Rag; private FlagOption optionHelp; private FlagOption optionVerbose; + private FlagOption optionLogReads; + private FlagOption optionLogWrites; private ArrayList<Option<?>> options; private CommandLine commandLine; @@ -143,7 +145,9 @@ public class Compiler { optionRootNode = addOption(new StringOption("rootNode", "root node in the base grammar.")); optionInputRos2Rag = addOption(new StringOption("inputRos2Rag", "ros2rag definition file.")); optionHelp = addOption(new FlagOption("help", "Print usage and exit.")); - optionVerbose = addOption(new FlagOption("verbose", "Print more messages.")); + optionVerbose = addOption(new FlagOption("verbose", "Print more messages while compiling.")); + optionLogReads = addOption(new FlagOption("logReads", "Enable logging for every read.")); + optionLogWrites = addOption(new FlagOption("logWrites", "Enable logging for every write.")); } private <OptionType extends Option<?>> OptionType addOption(OptionType option) { @@ -179,6 +183,8 @@ public class Compiler { } ros2Rag.treeResolveAll(); ros2Rag.additionalRelations().forEach(inputGrammar::addDeclaration); + ASTNode.loggingEnabledForReads = optionLogReads.isSet(); + ASTNode.loggingEnabledForWrites = optionLogWrites.isSet(); return ros2Rag; }