Fix unittest IO synchronization.
This commit is contained in:
@ -6,9 +6,7 @@ import collections
|
||||
from dataclasses import dataclass, field
|
||||
import math
|
||||
import os
|
||||
import queue
|
||||
import re
|
||||
import threading
|
||||
import time
|
||||
import asyncio
|
||||
from pybambu import BambuClient, commands
|
||||
@ -478,27 +476,6 @@ class BambuVirtualPrinter:
|
||||
else:
|
||||
return False
|
||||
|
||||
def _writeSdFile(self, filename: str) -> None:
|
||||
self.sendIO(f"Writing to file: {filename}")
|
||||
|
||||
def _finishSdFile(self):
|
||||
# FIXME: maybe remove or move to remote SD card
|
||||
try:
|
||||
self._writingToSdHandle.close()
|
||||
except Exception:
|
||||
pass
|
||||
finally:
|
||||
self._writingToSdHandle = None
|
||||
self._writingToSd = False
|
||||
self._selectedSdFile = None
|
||||
# Most printers don't have RTC and set some ancient date
|
||||
# by default. Emulate that using 2000-01-01 01:00:00
|
||||
# (taken from prusa firmware behaviour)
|
||||
st = os.stat(self._writingToSdFile)
|
||||
os.utime(self._writingToSdFile, (st.st_atime, 946684800))
|
||||
self._writingToSdFile = None
|
||||
self.sendIO("Done saving file")
|
||||
|
||||
def close(self):
|
||||
if self.bambu_client.connected:
|
||||
self.bambu_client.disconnect()
|
||||
|
@ -44,6 +44,7 @@ class PrinterSerialIO(threading.Thread, BufferedIOBase):
|
||||
|
||||
self.input_bytes = CharCountingQueue(self._rx_buffer_size, name="RxBuffer")
|
||||
self.output_bytes = queue.Queue()
|
||||
self._error_detected: Exception | None = None
|
||||
|
||||
def _init_logger(self, log_handler):
|
||||
log = logging.getLogger("octoprint.plugins.bambu_printer.BambuPrinter.serial")
|
||||
@ -63,7 +64,6 @@ class PrinterSerialIO(threading.Thread, BufferedIOBase):
|
||||
try:
|
||||
data = self.input_bytes.get(block=True, timeout=0.01)
|
||||
data = to_bytes(data, encoding="ascii", errors="replace")
|
||||
self.input_bytes.task_done()
|
||||
|
||||
buffer += data
|
||||
line, buffer = self._read_next_line(buffer)
|
||||
@ -71,8 +71,12 @@ class PrinterSerialIO(threading.Thread, BufferedIOBase):
|
||||
self._received_lines += 1
|
||||
self._process_input_gcode_line(line)
|
||||
line, buffer = self._read_next_line(buffer)
|
||||
self.input_bytes.task_done()
|
||||
except queue.Empty:
|
||||
continue
|
||||
except Exception as e:
|
||||
self._error_detected = e
|
||||
break
|
||||
|
||||
self._log.debug("Closing IO read loop")
|
||||
|
||||
@ -92,6 +96,8 @@ class PrinterSerialIO(threading.Thread, BufferedIOBase):
|
||||
|
||||
def flush(self):
|
||||
self.input_bytes.join()
|
||||
if self._error_detected is not None:
|
||||
raise self._error_detected
|
||||
|
||||
def write(self, data: bytes) -> int:
|
||||
data = to_bytes(data, errors="replace")
|
||||
|
@ -80,18 +80,12 @@ class RemoteSDCardFileList:
|
||||
def _get_existing_files_info(self):
|
||||
ftp = self._connect_ftps_server()
|
||||
|
||||
all_files_info: list[FileInfo] = []
|
||||
file_list = []
|
||||
file_list.extend(ftp.list_files("", ".3mf") or [])
|
||||
file_list.extend(ftp.list_files("cache/", ".3mf") or [])
|
||||
|
||||
existing_files = []
|
||||
|
||||
filelist = ftp.list_files("", ".3mf") or []
|
||||
all_files_info.extend(self._scan_ftp_file_list(ftp, filelist, existing_files))
|
||||
|
||||
filelist_cache = ftp.list_files("cache/", ".3mf") or []
|
||||
all_files_info.extend(
|
||||
self._scan_ftp_file_list(ftp, filelist_cache, existing_files)
|
||||
)
|
||||
|
||||
return all_files_info
|
||||
return list(self._scan_ftp_file_list(ftp, file_list, existing_files))
|
||||
|
||||
def _connect_ftps_server(self):
|
||||
host = self._settings.get(["host"])
|
||||
|
Reference in New Issue
Block a user