From 88c053bdb4e225711493223181540b662ac2a5ad Mon Sep 17 00:00:00 2001
From: Adam Wujek <dev_public@wujek.eu>
Date: Fri, 15 Mar 2024 14:47:49 +0100
Subject: [PATCH] userspace/tools/wr_mon: add key command to refresh or freeze
 the output

Signed-off-by: Adam Wujek <dev_public@wujek.eu>
---
 userspace/tools/wr_mon.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/userspace/tools/wr_mon.c b/userspace/tools/wr_mon.c
index a2b1fd862..eee380cda 100644
--- a/userspace/tools/wr_mon.c
+++ b/userspace/tools/wr_mon.c
@@ -1351,7 +1351,7 @@ void show_all(void)
 		term_clear();
 		term_pcprintf(1, 1, C_BLUE, "WR Switch Sync Monitor ");
 		term_cprintf(C_WHITE, "%s", __GIT_VER__);
-		term_cprintf(C_BLUE, " [q = quit, t = toggle servo, c = extra ppsi params]\n\n");
+		term_cprintf(C_BLUE, " [q=quit,r=refresh,f=freeze,t=toggle servo,c=extra ppsi params]\n\n");
 	}
 
 	hal_alive = (hal_head->pid && (kill(hal_head->pid, 0) == 0))
@@ -1403,6 +1403,7 @@ int main(int argc, char *argv[])
 {
 	int opt;
 	int usecolor = 1;
+	int gui_freeze = 0; /* freeze the GUI */
 
 	/* try a pps_gen based approach */
 	uint64_t last_seconds = 0;
@@ -1488,9 +1489,22 @@ int main(int argc, char *argv[])
 				last_seconds = 0;
 				break;
 
+			case 'f':
+				gui_freeze = !gui_freeze;
+				if (gui_freeze) {
+					term_cprintf(C_RED, "GUI Frozen!\n");
+					fflush(stdout);
+				}
+				last_seconds = 0;
+				break;
+
 			case 'q':
 				goto quit;
 
+			case 'r': /* force refresh */
+				last_seconds = 0;
+				break;
+
 			case 't' :
 				toggle_tracking();
 				/* Force refresh */
@@ -1500,7 +1514,7 @@ int main(int argc, char *argv[])
 		}
 
 		shw_pps_gen_read_time(&seconds, &nanoseconds);
-		if (seconds != last_seconds) {
+		if (!gui_freeze && seconds != last_seconds) {
 			read_servo();
 			read_gm_info();
 			read_hal();
-- 
GitLab