Skip to content

Commit 1225aa3

Browse files
danieldegrassecfriedt
authored andcommitted
scripts: rtt_helper: support dumping data in non-blocking mode
Support dumping RTT data to STDOUT and then exiting, rather than opening a blocking RTT server. This can be useful for scripting purposes. Signed-off-by: Daniel DeGrasse <[email protected]>
1 parent a2001df commit 1225aa3

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

scripts/rtt_helper.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,12 @@ def parse_args(self):
189189
default=0,
190190
help="Increase debugging verbosity (pass -dd for debug, -d for info)",
191191
)
192+
parser.add_argument(
193+
"-n",
194+
"--non-blocking",
195+
action="store_true",
196+
help="Dump rtt data in non blocking mode, rather than running interactive server",
197+
)
192198
args = parser.parse_args()
193199
if args.debug == 2:
194200
logging.basicConfig(level=logging.DEBUG)
@@ -203,8 +209,18 @@ def parse_args(self):
203209
self._rtt_port = args.rtt_port
204210
self._search_base = args.search_base
205211
self._search_range = args.search_range
212+
self._interactive = not args.non_blocking
206213

207214
def run_rtt_server(self):
215+
"""
216+
Run the RTT server, or dump data if interactive mode is off
217+
"""
218+
if self._interactive:
219+
self.run_rtt_server_interactive()
220+
else:
221+
self.dump_rtt_data()
222+
223+
def run_rtt_server_interactive(self):
208224
"""
209225
Run the RTT server with the parameters provided
210226
"""
@@ -256,3 +272,29 @@ def run_rtt_server(self):
256272

257273
# Finally, shutdown the RTT server
258274
openocd.stop_openocd_server()
275+
276+
def dump_rtt_data(self):
277+
"""
278+
Start RTT server, dump data, and exit
279+
"""
280+
openocd = OpenOCDServer(self._openocd, self._search_dir)
281+
openocd.launch_openocd_server(
282+
self._cfg,
283+
self._rtt_port,
284+
self._search_base,
285+
self._search_range,
286+
)
287+
print(f"OpenOCD server started on port {self._rtt_port}")
288+
# Start a new socket connection
289+
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
290+
sock.connect(("localhost", self._rtt_port))
291+
sock.settimeout(0.5)
292+
while True:
293+
try:
294+
data = sock.recv(2048)
295+
print(data.decode())
296+
except socket.timeout:
297+
# No data was sent within 0.5 seconds, close connection
298+
break
299+
sock.close()
300+
openocd.stop_openocd_server()

0 commit comments

Comments
 (0)