diff --git a/bambu/src/main/java/com/tfyre/bambu/printer/BambuPrinter.java b/bambu/src/main/java/com/tfyre/bambu/printer/BambuPrinter.java index 20b6408..5b0c772 100644 --- a/bambu/src/main/java/com/tfyre/bambu/printer/BambuPrinter.java +++ b/bambu/src/main/java/com/tfyre/bambu/printer/BambuPrinter.java @@ -40,6 +40,8 @@ public interface BambuPrinter { void commandFullStatus(final boolean force); + void commandDone(); + void commandClearPrinterError(); void commandLight(BambuConst.LightMode lightMode); diff --git a/bambu/src/main/java/com/tfyre/bambu/printer/BambuPrinterImpl.java b/bambu/src/main/java/com/tfyre/bambu/printer/BambuPrinterImpl.java index 17b3ded..d2f62d0 100644 --- a/bambu/src/main/java/com/tfyre/bambu/printer/BambuPrinterImpl.java +++ b/bambu/src/main/java/com/tfyre/bambu/printer/BambuPrinterImpl.java @@ -368,6 +368,19 @@ public void commandSystemReboot() { toJson(message).ifPresent(this::sendData); } + @Override + public void commandDone() { + logUser("%s: commandDone".formatted(name)); + final BambuMessage message = BambuMessage.newBuilder() + .setPrint( + com.tfyre.bambu.model.Print.newBuilder() + .setSequenceId("%d".formatted(counter.incrementAndGet())) + .setCommand("done") + ) + .build(); + toJson(message).ifPresent(this::sendData); + } + @Override public void commandFilamentUnload() { logUser("%s: commandFilamentUnload".formatted(name)); diff --git a/bambu/src/main/java/com/tfyre/bambu/view/dashboard/DashboardPrinter.java b/bambu/src/main/java/com/tfyre/bambu/view/dashboard/DashboardPrinter.java index 775f17a..b8de6cb 100644 --- a/bambu/src/main/java/com/tfyre/bambu/view/dashboard/DashboardPrinter.java +++ b/bambu/src/main/java/com/tfyre/bambu/view/dashboard/DashboardPrinter.java @@ -408,6 +408,7 @@ private Div buildName() { newButton("Show SD Card", VaadinIcon.ARCHIVE, l -> UI.getCurrent().navigate(SdCardView.class, printer.getName())), newButton("Request full status", VaadinIcon.REFRESH, l -> printer.commandFullStatus(true)), newButton("Clear Print Error", VaadinIcon.WARNING, l -> printer.commandClearPrinterError()), + newButton("Send Done", VaadinIcon.ENTER, l -> printer.commandDone()), newButton("Resume Print", VaadinIcon.PLAY, l -> doConfirm(BambuConst.CommandControl.RESUME)), newButton("Pause Print", VaadinIcon.PAUSE, l -> doConfirm(BambuConst.CommandControl.PAUSE)), newButton("Stop Print", VaadinIcon.STOP, l -> doConfirm(BambuConst.CommandControl.STOP))