File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -23,9 +23,16 @@ def __init__(self, port: Optional[str] = None):
2323 self .logger = logging .getLogger (__name__ )
2424
2525 def open (self , port : Optional [str ] = None ) -> None :
26+ """
27+ Simulate opening the connection.
28+
29+ Args:
30+ port (str, optional): The port to connect to. Updates the handler's port if provided.
31+ """
32+ if port :
33+ self .port = port
2634 self .connected = True
2735 self .logger .info (f"MockHandler connected on { self .port } " )
28-
2936 def close (self ) -> None :
3037 self .connected = False
3138 self .read_buffer .clear ()
@@ -52,6 +59,17 @@ def read(self, size: int = 1) -> bytes:
5259 if not self .connected :
5360 raise RuntimeError ("Attempted to read from closed MockHandler." )
5461
62+ if len (self .read_buffer ) < size :
63+ self .logger .warning (f"MockHandler: Requested { size } bytes, but only { len (self .read_buffer )} available." )
64+ # Return all currently available bytes and clear the buffer (partial read)
65+ data = self .read_buffer [:]
66+ self .read_buffer .clear ()
67+ return bytes (data )
68+
69+ data = self .read_buffer [:size ]
70+ self .read_buffer = self .read_buffer [size :]
71+ return bytes (data )
72+
5573 if len (self .read_buffer ) < size :
5674 self .logger .warning (f"MockHandler: Requested { size } bytes, but only { len (self .read_buffer )} available." )
5775 # Return what we have, then empty bytes
Original file line number Diff line number Diff line change @@ -35,7 +35,17 @@ class ScienceLab:
3535 """
3636
3737 def __init__ (self , device : ConnectionHandler | None = None , mock : bool = False ):
38+ """
39+ Initialize the ScienceLab interface.
40+
41+ :param device: The connection handler (real hardware).
42+ :param mock: If True, use the MockHandler for simulation.
43+ :raises ValueError: If both 'device' and 'mock=True' are provided.
44+ """
3845 if mock :
46+ if device is not None :
47+ raise ValueError ("Cannot initialize ScienceLab with both a physical device and mock=True." )
48+
3949 self .device = MockHandler ()
4050 self .device .open ()
4151 self .firmware = "MOCK_FW_1.0" # Fake firmware version
You can’t perform that action at this time.
0 commit comments