| 258 | if _probe_nmea(dev): |
| 259 | return dev |
| 260 | |
| 261 | return None |
| 262 | |
| 263 | |
| 264 | class GPSManager: |
| 265 | """Manages a GPS source (gpsd socket or direct NMEA serial), providing real-time position data.""" |
| 266 | |
| 267 | def __init__(self, port=None, baudrate=9600, exclude_ports=None, |
| 268 | state_file=None): |
| 269 | self.port = port |
| 270 | self.baudrate = baudrate |
| 271 | self._exclude_ports = set(exclude_ports or []) |
| 272 | self._serial = None |
| 273 | self._gpsd_sock = None |
| 274 | self._use_gpsd = False |
| 275 | self._running = False |
| 276 | self._thread = None |
| 277 | self._lock = threading.Lock() |