MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / DeviceSimulator

Class DeviceSimulator

tests/utils/device_simulator.py:18–279  ·  view source on GitHub ↗

Simulates a device sending telemetry data. Uses TCP or UDP to send data that Serial Studio can receive via the network driver.

Source from the content-addressed store, hash-verified

16
17
18class DeviceSimulator:
19 """
20 Simulates a device sending telemetry data.
21
22 Uses TCP or UDP to send data that Serial Studio can receive via
23 the network driver.
24 """
25
26 def __init__(
27 self,
28 host: str = "127.0.0.1",
29 port: int = 9000,
30 protocol: str = "tcp",
31 ):
32 """
33 Initialize device simulator.
34
35 Args:
36 host: Host to bind to (127.0.0.1 for localhost)
37 port: Port to listen on
38 protocol: "tcp" or "udp"
39 """
40 self.host = host
41 self.port = port
42 self.protocol = protocol.lower()
43
44 self._socket: Optional[socket.socket] = None
45 self._thread: Optional[threading.Thread] = None
46 self._running = False
47 self._client_socket: Optional[socket.socket] = None
48
49 def start(self) -> None:
50 """Start the simulator server."""
51 if self._running:
52 return
53
54 if self.protocol == "tcp":
55 self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
56 self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
57 self._socket.bind((self.host, self.port))
58 self._socket.listen(1)
59 self._socket.settimeout(1.0)
60 else:
61 self._socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
62 self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
63 self._socket.bind((self.host, self.port))
64 self._socket.settimeout(1.0)
65
66 self._running = True
67 self._thread = threading.Thread(target=self._server_loop, daemon=True)
68 self._thread.start()
69
70 def stop(self) -> None:
71 """Stop the simulator server."""
72 self._running = False
73
74 if self._client_socket:
75 try:

Callers 4

device_simulatorFunction · 0.90
device_simulatorFunction · 0.90
create_json_deviceMethod · 0.85
create_csv_deviceMethod · 0.85

Calls

no outgoing calls

Tested by 1

device_simulatorFunction · 0.72