Fix refactoring artifacts. Add initial unittests.
This commit is contained in:
@ -56,6 +56,7 @@ class BambuVirtualPrinter:
|
||||
printer_profile_manager,
|
||||
data_folder,
|
||||
serial_log_handler=None,
|
||||
read_timeout=5.0,
|
||||
faked_baudrate=115200,
|
||||
):
|
||||
self._log = logging.getLogger("octoprint.plugins.bambu_printer.BambuPrinter")
|
||||
@ -68,7 +69,7 @@ class BambuVirtualPrinter:
|
||||
self._serial_io = PrinterSerialIO(
|
||||
self._process_gcode_serial_command,
|
||||
serial_log_handler,
|
||||
read_timeout=5.0,
|
||||
read_timeout=read_timeout,
|
||||
write_timeout=10.0,
|
||||
)
|
||||
|
||||
@ -107,6 +108,10 @@ class BambuVirtualPrinter:
|
||||
def is_running(self):
|
||||
return self._running
|
||||
|
||||
@property
|
||||
def current_state(self):
|
||||
return self._current_state
|
||||
|
||||
@property
|
||||
def current_print_job(self):
|
||||
if isinstance(self._current_state, PrintingState):
|
||||
@ -148,7 +153,7 @@ class BambuVirtualPrinter:
|
||||
|
||||
if print_job.gcode_state == "RUNNING":
|
||||
self.change_state(self._state_printing)
|
||||
self._state_printing.set_print_job_info(print_job)
|
||||
self._state_printing.update_print_job_info()
|
||||
if print_job.gcode_state == "PAUSE":
|
||||
self.change_state(self._state_paused)
|
||||
if print_job.gcode_state == "FINISH" or print_job.gcode_state == "FAILED":
|
||||
|
@ -17,7 +17,7 @@ from .ftpsclient import IoTFTPSClient
|
||||
class FileInfo:
|
||||
dosname: str
|
||||
path: Path
|
||||
size: int | None
|
||||
size: int
|
||||
timestamp: str
|
||||
|
||||
@property
|
||||
@ -63,7 +63,7 @@ class RemoteSDCardFileList:
|
||||
return FileInfo(
|
||||
dosname,
|
||||
file_path,
|
||||
file_size,
|
||||
file_size if file_size is not None else 0,
|
||||
unix_timestamp_to_m20_timestamp(int(filedate)),
|
||||
)
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
|
@ -1,8 +1,14 @@
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from octoprint_bambu_printer.printer.bambu_virtual_printer import (
|
||||
BambuVirtualPrinter,
|
||||
)
|
||||
|
||||
import threading
|
||||
|
||||
from octoprint.util import RepeatedTimer
|
||||
|
||||
from octoprint_bambu_printer.printer.bambu_virtual_printer import BambuVirtualPrinter
|
||||
from octoprint_bambu_printer.printer.states.a_printer_state import APrinterState
|
||||
|
||||
|
||||
|
@ -1,12 +1,19 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import time
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from octoprint_bambu_printer.printer.bambu_virtual_printer import (
|
||||
BambuVirtualPrinter,
|
||||
)
|
||||
|
||||
import threading
|
||||
|
||||
import pybambu
|
||||
import pybambu.models
|
||||
import pybambu.commands
|
||||
|
||||
from octoprint_bambu_printer.printer.bambu_virtual_printer import BambuVirtualPrinter
|
||||
from octoprint_bambu_printer.printer.print_job import PrintJob
|
||||
from octoprint_bambu_printer.printer.states.a_printer_state import APrinterState
|
||||
|
||||
@ -40,7 +47,8 @@ class PrintingState(APrinterState):
|
||||
)
|
||||
self._sd_printing_thread.start()
|
||||
|
||||
def set_print_job_info(self, print_job_info):
|
||||
def update_print_job_info(self):
|
||||
print_job_info = self._printer.bambu_client.get_device().print_job
|
||||
filename: str = print_job_info.get("subtask_name")
|
||||
project_file_info = self._printer.file_system.search_by_stem(
|
||||
filename, [".3mf", ".gcode.3mf"]
|
||||
@ -56,7 +64,7 @@ class PrintingState(APrinterState):
|
||||
# fuzzy math here to get print percentage to match BambuStudio
|
||||
progress = print_job_info.get("print_percentage")
|
||||
self._print_job = PrintJob(project_file_info, 0)
|
||||
self._print_job.progress =
|
||||
self._print_job.progress = progress
|
||||
|
||||
def start_new_print(self, from_printer: bool = False):
|
||||
if self._printer.file_system.selected_file is not None:
|
||||
@ -93,24 +101,27 @@ class PrintingState(APrinterState):
|
||||
else f"file:///sdcard/{selected_file}"
|
||||
),
|
||||
"timelapse": self._printer._settings.get_boolean(["timelapse"]),
|
||||
"bed_leveling": self._printer._settings.get_boolean(["bed_leveling"]),
|
||||
"bed_leveling": self._printer._settings.get_boolean(
|
||||
["bed_leveling"]
|
||||
),
|
||||
"flow_cali": self._printer._settings.get_boolean(["flow_cali"]),
|
||||
"vibration_cali": self._printer._settings.get_boolean(
|
||||
["vibration_cali"]
|
||||
),
|
||||
"layer_inspect": self._printer._settings.get_boolean(["layer_inspect"]),
|
||||
"layer_inspect": self._printer._settings.get_boolean(
|
||||
["layer_inspect"]
|
||||
),
|
||||
"use_ams": self._printer._settings.get_boolean(["use_ams"]),
|
||||
}
|
||||
}
|
||||
self._printer.bambu_client.publish(print_command)
|
||||
|
||||
while self._selectedSdFilePos < self._selectedSdFileSize:
|
||||
if self._killed or not self._sdPrinting:
|
||||
while self._print_job.file_position < self._print_job.file_info.size:
|
||||
if self._printer.is_running:
|
||||
break
|
||||
|
||||
# if we are paused, wait for resuming
|
||||
self._sdPrintingSemaphore.wait()
|
||||
self._reportSdStatus()
|
||||
self._printingLock.wait()
|
||||
self._printer.report_print_job_status()
|
||||
time.sleep(3)
|
||||
self._log.debug(f"SD File Print: {self._selectedSdFile}")
|
||||
except AttributeError:
|
||||
|
Reference in New Issue
Block a user