2626import copy
2727from ctypes import Structure , create_string_buffer
2828import logging
29- import queue
3029import socket
3130from collections .abc import Callable
32- from enum import IntEnum , Flag , IntFlag
33- from typing import Optional , Type
31+ from enum import IntEnum , IntFlag
32+ from typing import Optional
3433import struct
3534import threading
3635import time
@@ -244,7 +243,7 @@ class LNCRate:
244243 def GetLNCRate (key ) -> int :
245244 try :
246245 return LNCRate .lnc_rates [key ]
247- except KeyError as e :
246+ except KeyError :
248247 print ("Error with LNC rate key." )
249248 return 0
250249
@@ -286,9 +285,7 @@ def __init__(self, params: Params, **kwargs):
286285 self ._monitor_state ["time" ] = 1
287286
288287 # Placeholders for IO
289- self ._pkt_handler_thread = None
290288 self ._sender_queue = None
291- self ._receiver_queue = None
292289 self ._io_thread = None
293290
294291 self ._register_basic_callbacks ()
@@ -317,6 +314,10 @@ def __init__(self, params: Params, **kwargs):
317314 self ._params .inst_port ,
318315 )
319316
317+ # Start the packet handler thread. We don't expect it to receive any packets until `.connect()` is called.
318+ self ._pkt_handler_thread = PacketHandlerThread (self )
319+ self ._pkt_handler_thread .start ()
320+
320321 @property
321322 def device_addr (self ) -> tuple [str , int ]:
322323 return self ._device_addr
@@ -1121,7 +1122,7 @@ def set_transport(
11211122 event = self ._config_events ["sysrep" ]
11221123 logger .debug (f"Attempting to set transport to { transport .upper ()} " )
11231124 if not self ._send_packet (pkt , event = event , timeout = timeout ):
1124- logger .warning (f "Did not receive SYSREPTRANSPORT in expected timeout." )
1125+ logger .warning ("Did not receive SYSREPTRANSPORT in expected timeout." )
11251126
11261127 def get_transport (self , force_refresh = False ) -> int :
11271128 if force_refresh :
@@ -1136,18 +1137,13 @@ def reset(self) -> int:
11361137
11371138 # region IO
11381139 def connect (self , startup_sequence : bool = True ) -> int :
1139- self ._receiver_queue = queue .SimpleQueue ()
1140-
1141- self ._pkt_handler_thread = PacketHandlerThread (self ._receiver_queue , self )
11421140 self ._io_thread = CerebusDatagramThread (
1143- self ._receiver_queue ,
1141+ self ._pkt_handler_thread . receiver_queue ,
11441142 self ._local_addr ,
11451143 self ._device_addr ,
11461144 self ._params .protocol ,
11471145 self ._params .recv_bufsize ,
11481146 )
1149-
1150- self ._pkt_handler_thread .start ()
11511147 self ._io_thread .start ()
11521148 # _io_thread.start() returns immediately but takes a few moments until its send_q is created.
11531149 time .sleep (0.5 )
@@ -1185,9 +1181,6 @@ def disconnect(self):
11851181 self ._io_thread .join ()
11861182 self ._pkt_handler_thread .join ()
11871183
1188- del self ._receiver_queue
1189- self ._receiver_queue = None
1190-
11911184 logger .info ("Disconnected successfully." )
11921185
11931186 def _startup_sequence (self ) -> CBError :
@@ -1254,7 +1247,7 @@ def _send_packet(
12541247 if event is not None :
12551248 res = event .wait (timeout = timeout )
12561249 if not res :
1257- logger .debug (f "timeout expired waiting for event" )
1250+ logger .debug ("timeout expired waiting for event" )
12581251 return False
12591252 return True
12601253
0 commit comments