From 7c1f54a47ac30378d5d371526641f72a9215a8f2 Mon Sep 17 00:00:00 2001 From: sciencewhiz Date: Thu, 28 Jan 2021 21:23:25 -0800 Subject: [PATCH] Fix InstantCommand when no subsystem (#366) Replace InstantCommand-constructor with the generic Command-constructor Add export tests for InstantCommand Fix AddRequirements comment --- .../export/cpp/Command-constructor.cpp | 2 +- .../export/cpp/InstantCommand-constructor.cpp | 19 ------------------- .../resources/export/cpp/InstantCommand.cpp | 2 +- .../resources/export/cpp/InstantCommand.h | 2 ++ src/main/resources/export/cpp/files.yaml | 2 +- src/test/java/robotbuilder/TestUtils.java | 9 +++++++++ 6 files changed, 14 insertions(+), 22 deletions(-) delete mode 100644 src/main/resources/export/cpp/InstantCommand-constructor.cpp diff --git a/src/main/resources/export/cpp/Command-constructor.cpp b/src/main/resources/export/cpp/Command-constructor.cpp index e913c2b0..05ed6200 100644 --- a/src/main/resources/export/cpp/Command-constructor.cpp +++ b/src/main/resources/export/cpp/Command-constructor.cpp @@ -23,7 +23,7 @@ #end // Use AddRequirements() here to declare subsystem dependencies - // eg. AddRequirements(Robot::chassis.get()); + // eg. AddRequirements(m_Subsystem); SetName("#class($command.name)"); #if (${command.getProperty("Requires").getValue()} != "None") AddRequirements(#variable(${command.getProperty("Requires").getValue().toLowerCase()})); diff --git a/src/main/resources/export/cpp/InstantCommand-constructor.cpp b/src/main/resources/export/cpp/InstantCommand-constructor.cpp deleted file mode 100644 index fded0c6d..00000000 --- a/src/main/resources/export/cpp/InstantCommand-constructor.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#set($command = $helper.getByName($command_name, $robot)) -#set($params = $command.getProperty("Parameters").getValue()) -#set($len = $params.size() - 2) -#set($last = $len + 1) - -#if( $params.size() > 0 ) -#class($command.name)::#class($command.name)(#if( $len >= 0 )#foreach($i in [0..$len])#param_declaration_cpp($params.get($i)), #end#end#if( $last >= 0 )#param_declaration_cpp($params.get($last))#end): InstantCommand() { -#else -#class($command.name)::#class($command.name)(#class(${command.getProperty("Requires").getValue()})* #variable(${command.getProperty("Requires").getValue().toLowerCase()})): InstantCommand() { -#end - #foreach($param in $params) -m_$param.getName() = $param.getName(); - #end - // Use AddRequirements() here to declare subsystem dependencies - // eg. AddRequirements(Robot::chassis.get()); - SetName("#class($command.name)"); - #if (${command.getProperty("Requires").getValue()} != "None") - AddRequirements(#variable(${command.getProperty("Requires").getValue().toLowerCase()})); - #end \ No newline at end of file diff --git a/src/main/resources/export/cpp/InstantCommand.cpp b/src/main/resources/export/cpp/InstantCommand.cpp index 7ef2e938..678e06a2 100644 --- a/src/main/resources/export/cpp/InstantCommand.cpp +++ b/src/main/resources/export/cpp/InstantCommand.cpp @@ -5,7 +5,7 @@ \#include "commands/#class($command.name).h" #@autogenerated_code("constructor", "") -#parse("${exporter_path}InstantCommand-constructor.cpp") +#parse("${exporter_path}Command-constructor.cpp") #end } diff --git a/src/main/resources/export/cpp/InstantCommand.h b/src/main/resources/export/cpp/InstantCommand.h index 9aa327b6..e51b8090 100644 --- a/src/main/resources/export/cpp/InstantCommand.h +++ b/src/main/resources/export/cpp/InstantCommand.h @@ -4,7 +4,9 @@ #pragma once \#include "frc2/command/InstantCommand.h" +#if (${command.getProperty("Requires").getValue()} != "None") \#include "subsystems/#class(${command.getProperty("Requires").getValue()}).h" +#end /** * diff --git a/src/main/resources/export/cpp/files.yaml b/src/main/resources/export/cpp/files.yaml index 62a3845a..595ad7d6 100644 --- a/src/main/resources/export/cpp/files.yaml +++ b/src/main/resources/export/cpp/files.yaml @@ -199,7 +199,7 @@ source: ${exporter_path}InstantCommand.cpp update: Modify modifications: - constructor: ${exporter_path}InstantCommand-constructor.cpp + constructor: ${exporter_path}Command-constructor.cpp variables: command_name: ${command.name} - !File diff --git a/src/test/java/robotbuilder/TestUtils.java b/src/test/java/robotbuilder/TestUtils.java index 7a42e746..e45dd8d2 100644 --- a/src/test/java/robotbuilder/TestUtils.java +++ b/src/test/java/robotbuilder/TestUtils.java @@ -204,6 +204,15 @@ public static RobotTree generateTestTree() { setpointCommand.getProperty("Requires").setValueAndUpdate("Wrist"); setpointCommand.getProperty("Button on SmartDashboard").setValueAndUpdate(false); + // Create instant command + RobotComponent instantCommand = new RobotComponent("Instant Command 1", "Instant Command", tree); + commands.add(instantCommand); + + // Create instant command with requires + RobotComponent instantCommand2 = new RobotComponent("Instant Command 2", "Instant Command", tree); + commands.add(instantCommand2); + instantCommand2.getProperty("Requires").setValueAndUpdate("Wrist"); + // Deal with odd references driveTrain.getProperty("Default Command").setValueAndUpdate("Tank Drive"); armUpButton.getProperty("Command").setValueAndUpdate("Arm Up");