diff --git a/captures/rcp-pin4-baseline.txt b/captures/rcp-pin4-baseline.txt new file mode 100644 index 0000000..ce05370 --- /dev/null +++ b/captures/rcp-pin4-baseline.txt @@ -0,0 +1,67 @@ +11:08:04.674 frame 006 00 00 00 00 80 DA +11:08:05.477 frame 006 00 00 00 00 80 DA +11:08:06.078 frame 006 00 00 00 00 80 DA +11:08:06.881 frame 006 00 00 00 00 80 DA +11:08:07.483 frame 006 00 00 00 00 80 DA +11:08:08.084 frame 006 00 00 00 00 80 DA +11:08:08.886 frame 006 00 00 00 00 80 DA +11:08:09.486 frame 006 00 00 00 00 80 DA +11:08:10.290 frame 006 00 00 00 00 80 DA +11:08:10.891 frame 006 00 00 00 00 80 DA +11:08:11.693 frame 006 00 00 00 00 80 DA +11:08:12.295 frame 006 00 00 00 00 80 DA +11:08:13.096 frame 006 00 00 00 00 80 DA +11:08:13.697 frame 006 00 00 00 00 80 DA +11:08:14.501 frame 006 00 00 00 00 80 DA +11:08:15.102 frame 006 00 00 00 00 80 DA +11:08:15.904 frame 006 00 00 00 00 80 DA +11:08:16.505 frame 006 00 00 00 00 80 DA +11:08:17.306 frame 006 00 00 00 00 80 DA +11:08:17.907 frame 006 00 00 00 00 80 DA +11:08:18.708 frame 006 00 00 00 00 80 DA +11:08:19.309 frame 006 00 00 00 00 80 DA +11:08:20.111 frame 006 00 00 00 00 80 DA +11:08:20.713 frame 006 00 00 00 00 80 DA +11:08:21.515 frame 006 00 00 00 00 80 DA +11:08:22.117 frame 006 00 00 00 00 80 DA +11:08:22.919 frame 006 00 00 00 00 80 DA +11:08:23.522 frame 006 00 00 00 00 80 DA +11:08:24.323 frame 006 00 00 00 00 80 DA +11:08:24.925 frame 006 00 00 00 00 80 DA +11:08:25.726 frame 006 00 00 00 00 80 DA +11:08:26.328 frame 006 00 00 00 00 80 DA +11:08:27.131 frame 006 00 00 00 00 80 DA +11:08:27.732 frame 006 00 00 00 00 80 DA +11:08:28.535 frame 006 00 00 00 00 80 DA +11:08:29.136 frame 006 00 00 00 00 80 DA +11:08:29.938 frame 006 00 00 00 00 80 DA +11:08:30.539 frame 006 00 00 00 00 80 DA +11:08:31.341 frame 006 00 00 00 00 80 DA +11:08:31.942 frame 006 00 00 00 00 80 DA +11:08:32.743 frame 006 00 00 00 00 80 DA +11:08:33.345 frame 006 00 00 00 00 80 DA +11:08:34.147 frame 006 00 00 00 00 80 DA +11:08:34.748 frame 006 00 00 00 00 80 DA +11:08:35.551 frame 006 00 00 00 00 80 DA +11:08:36.152 frame 006 00 00 00 00 80 DA +11:08:36.953 frame 006 00 00 00 00 80 DA +11:08:37.556 frame 006 00 00 00 00 80 DA +11:08:38.358 frame 006 00 00 00 00 80 DA +11:08:38.959 frame 006 00 00 00 00 80 DA +11:08:39.761 frame 006 00 00 00 00 80 DA +11:08:40.362 frame 006 00 00 00 00 80 DA +11:08:41.163 frame 006 00 00 00 00 80 DA +11:08:41.766 frame 006 00 00 00 00 80 DA +11:08:42.567 frame 006 00 00 00 00 80 DA +11:08:43.169 frame 006 00 00 00 00 80 DA +11:08:43.972 frame 006 00 00 00 00 80 DA +11:08:44.572 frame 006 00 00 00 00 80 DA +11:08:45.374 frame 006 00 00 00 00 80 DA +11:08:45.976 frame 006 00 00 00 00 80 DA +11:08:46.779 frame 006 00 00 00 00 80 DA +11:08:47.380 frame 006 00 00 00 00 80 DA +11:08:48.183 frame 006 00 00 00 00 80 DA +11:08:48.785 frame 006 00 00 00 00 80 DA +11:08:49.587 frame 006 00 00 00 00 80 DA +11:08:50.188 frame 006 00 00 00 00 80 DA +11:08:50.790 frame 006 00 00 00 00 80 DA diff --git a/captures/rcp-pin4-call.txt b/captures/rcp-pin4-call.txt new file mode 100644 index 0000000..269a450 --- /dev/null +++ b/captures/rcp-pin4-call.txt @@ -0,0 +1,25 @@ +11:14:02.257 frame 006 00 00 00 00 80 DA +11:14:02.858 frame 006 00 00 00 00 80 DA +11:14:03.659 frame 006 00 00 00 00 80 DA +11:14:04.261 frame 006 00 00 00 00 80 DA +11:14:04.861 frame 006 00 00 15 80 00 CF +11:14:05.062 frame 006 00 00 15 00 00 4F +11:14:05.664 frame 006 00 00 00 00 80 DA +11:14:06.466 frame 006 00 00 00 00 80 DA +11:14:07.068 frame 006 00 00 00 00 80 DA +11:14:07.669 frame 006 00 00 15 80 00 CF +11:14:07.869 frame 006 00 00 15 00 00 4F +11:14:08.471 frame 006 00 00 00 00 80 DA +11:14:09.273 frame 006 00 00 00 00 80 DA +11:14:09.874 frame 006 00 00 00 00 80 DA +11:14:10.678 frame 006 00 00 00 00 80 DA +11:14:10.878 frame 006 00 00 15 80 00 CF +11:14:11.079 frame 006 00 00 15 00 00 4F +11:14:11.680 frame 006 00 00 00 00 80 DA +11:14:12.282 frame 006 00 00 00 00 80 DA +11:14:13.084 frame 006 00 00 00 00 80 DA +11:14:13.685 frame 006 00 00 00 00 80 DA +11:14:13.685 frame 006 00 00 15 80 00 CF +11:14:13.886 frame 006 00 00 15 00 00 4F +11:14:14.488 frame 006 00 00 00 00 80 DA +11:14:15.290 frame 006 00 00 00 00 80 DA diff --git a/captures/rcp-pin4-cam-power.txt b/captures/rcp-pin4-cam-power.txt new file mode 100644 index 0000000..f0b27dc --- /dev/null +++ b/captures/rcp-pin4-cam-power.txt @@ -0,0 +1,27 @@ +11:09:35.733 frame 006 00 00 00 00 80 DA +11:09:36.334 frame 006 00 00 00 00 80 DA +11:09:37.137 frame 006 00 00 00 00 80 DA +11:09:37.739 frame 006 00 00 00 00 80 DA +11:09:38.340 frame 006 00 00 07 80 00 DD +11:09:38.942 frame 006 00 00 00 00 80 DA +11:09:39.744 frame 006 00 00 00 00 80 DA +11:09:40.345 frame 006 00 00 00 00 80 DA +11:09:41.146 frame 006 00 00 00 00 80 DA +11:09:41.747 frame 006 00 00 00 00 80 DA +11:09:42.549 frame 006 00 00 00 00 80 DA +11:09:42.951 frame 006 00 00 07 80 00 DD +11:09:43.753 frame 006 00 00 00 00 80 DA +11:09:44.355 frame 006 00 00 00 00 80 DA +11:09:45.159 frame 006 00 00 00 00 80 DA +11:09:45.760 frame 006 00 00 00 00 80 DA +11:09:46.561 frame 006 00 00 00 00 80 DA +11:09:47.163 frame 006 00 00 00 00 80 DA +11:09:47.564 frame 006 00 00 07 80 00 DD +11:09:48.165 frame 006 00 00 00 00 80 DA +11:09:48.967 frame 006 00 00 00 00 80 DA +11:09:49.568 frame 006 00 00 00 00 80 DA +11:09:50.371 frame 006 00 00 00 00 80 DA +11:09:50.972 frame 006 00 00 00 00 80 DA +11:09:51.573 frame 006 00 00 07 80 00 DD +11:09:52.375 frame 006 00 00 00 00 80 DA +11:09:52.977 frame 006 00 00 00 00 80 DA diff --git a/captures/rcp-response-4byte.txt b/captures/rcp-response-4byte.txt new file mode 100644 index 0000000..f583be3 --- /dev/null +++ b/captures/rcp-response-4byte.txt @@ -0,0 +1,22 @@ +Listening on COM5 at 38400 8N1; will send 00 00 00 00 after 3.0s +12:00:12.417 RX frame 006 00 00 00 00 80 DA +12:00:13.123 RX frame 006 00 00 00 00 80 DA +12:00:13.831 RX frame 006 00 00 00 00 80 DA +12:00:14.488 RX frame 006 00 00 00 00 80 DA +12:00:14.942 TX frame 004 00 00 00 00 +12:00:15.194 RX frame 006 00 00 00 00 80 DA +12:00:15.546 TX frame 004 00 00 00 00 +12:00:15.909 RX frame 006 00 00 00 00 80 DA +12:00:16.162 TX frame 004 00 00 00 00 +12:00:16.618 RX frame 006 00 00 00 00 80 DA +12:00:16.769 TX frame 004 00 00 00 00 +12:00:17.325 RX frame 006 00 00 00 00 80 DA +12:00:17.377 TX frame 004 00 00 00 00 +12:00:17.985 RX frame 006 00 00 00 00 80 DA +12:00:18.689 RX frame 006 00 00 00 00 80 DA +12:00:19.397 RX frame 006 00 00 00 00 80 DA +12:00:20.105 RX frame 006 00 00 00 00 80 DA +12:00:20.813 RX frame 006 00 00 00 00 80 DA +12:00:21.520 RX frame 006 00 00 00 00 80 DA +12:00:22.226 RX frame 006 00 00 00 00 80 DA +Stopped. diff --git a/captures/rcp-response-5byte.txt b/captures/rcp-response-5byte.txt new file mode 100644 index 0000000..e04253d --- /dev/null +++ b/captures/rcp-response-5byte.txt @@ -0,0 +1,21 @@ +Listening on COM5 at 38400 8N1; will send 00 00 00 00 80 after 3.0s +12:00:26.394 RX frame 006 00 00 00 00 80 DA +12:00:27.100 RX frame 006 00 00 00 00 80 DA +12:00:27.809 RX frame 006 00 00 00 00 80 DA +12:00:28.515 RX frame 006 00 00 00 00 80 DA +12:00:29.222 RX frame 006 00 00 00 00 80 DA +12:00:29.275 TX frame 005 00 00 00 00 80 +12:00:29.930 RX frame 006 00 00 00 00 80 DA +12:00:29.930 TX frame 005 00 00 00 00 80 +12:00:30.585 RX frame 006 00 00 00 00 80 DA +12:00:30.585 TX frame 005 00 00 00 00 80 +12:00:31.192 TX frame 005 00 00 00 00 80 +12:00:31.292 RX frame 006 00 00 00 00 80 DA +12:00:31.800 TX frame 005 00 00 00 00 80 +12:00:32.002 RX frame 006 00 00 00 00 80 DA +12:00:32.708 RX frame 006 00 00 00 00 80 DA +12:00:33.414 RX frame 006 00 00 00 00 80 DA +12:00:34.119 RX frame 006 00 00 00 00 80 DA +12:00:34.829 RX frame 006 00 00 00 00 80 DA +12:00:35.484 RX frame 006 00 00 00 00 80 DA +Stopped. diff --git a/captures/rcp-response-7byte.txt b/captures/rcp-response-7byte.txt new file mode 100644 index 0000000..caa1321 --- /dev/null +++ b/captures/rcp-response-7byte.txt @@ -0,0 +1,19 @@ +Listening on COM5 at 38400 8N1; will send 00 00 00 00 80 DA 00 after 3.0s +12:00:40.398 RX frame 006 00 00 00 00 80 DA +12:00:41.105 RX frame 006 00 00 00 00 80 DA +12:00:41.812 RX frame 006 00 00 00 00 80 DA +12:00:42.519 RX frame 006 00 00 00 00 80 DA +12:00:42.922 TX frame 007 00 00 00 00 80 DA 00 +12:00:43.528 TX frame 007 00 00 00 00 80 DA 00 +12:00:44.135 TX frame 007 00 00 00 00 80 DA 00 +12:00:44.790 TX frame 007 00 00 00 00 80 DA 00 +12:00:45.446 TX frame 007 00 00 00 00 80 DA 00 +12:00:47.414 RX frame 006 00 00 00 00 80 DA +12:00:48.121 RX frame 006 00 00 00 00 80 DA +12:00:48.834 RX frame 006 00 00 00 00 80 DA +12:00:49.490 RX frame 006 00 00 00 00 80 DA +12:00:50.196 RX frame 006 00 00 00 00 80 DA +12:00:50.904 RX frame 006 00 00 00 00 80 DA +12:00:51.611 RX frame 006 00 00 00 00 80 DA +12:00:52.315 RX frame 006 00 00 00 00 80 DA +Stopped. diff --git a/captures/rcp-response-cmd01.txt b/captures/rcp-response-cmd01.txt new file mode 100644 index 0000000..0408b18 --- /dev/null +++ b/captures/rcp-response-cmd01.txt @@ -0,0 +1,71 @@ +Listening on COM5 at 38400 8N1; will send 00 00 01 00 80 DB after 3.0s +12:03:15.833 RX frame 006 00 00 00 00 80 DA +12:03:16.541 RX frame 006 00 00 00 00 80 DA +12:03:17.246 RX frame 006 00 00 00 00 80 DA +12:03:17.952 RX frame 006 00 00 00 00 80 DA +12:03:18.608 RX frame 006 00 00 00 00 80 DA +12:03:18.710 TX frame 006 00 00 01 00 80 DB +12:03:19.316 RX frame 006 00 00 00 00 80 DA +12:03:19.316 TX frame 006 00 00 01 00 80 DB +12:03:19.366 RX frame 006 00 00 00 00 80 DA +12:03:19.619 RX frame 006 00 00 00 00 80 DA +12:03:19.872 RX frame 006 00 00 00 00 80 DA +12:03:19.925 TX frame 006 00 00 01 00 80 DB +12:03:19.975 RX frame 006 00 00 00 00 80 DA +12:03:20.228 RX frame 006 00 00 00 00 80 DA +12:03:20.482 RX frame 006 00 00 00 00 80 DA +12:03:20.532 TX frame 006 00 00 01 00 80 DB +12:03:20.583 RX frame 006 00 00 00 00 80 DA +12:03:20.835 RX frame 006 00 00 00 00 80 DA +12:03:21.087 RX frame 006 00 00 00 00 80 DA +12:03:21.137 TX frame 006 00 00 01 00 80 DB +12:03:21.187 RX frame 006 00 00 00 00 80 DA +12:03:21.439 RX frame 006 00 00 00 00 80 DA +12:03:21.691 RX frame 006 00 00 00 00 80 DA +12:03:21.943 RX frame 006 00 00 00 00 80 DA +12:03:22.196 RX frame 006 00 00 00 00 80 DA +12:03:22.449 RX frame 006 00 00 00 00 80 DA +12:03:22.701 RX frame 006 00 00 00 00 80 DA +12:03:22.955 RX frame 006 00 00 00 00 80 DA +12:03:23.612 RX frame 006 00 00 00 00 80 DA +12:03:24.318 RX frame 006 00 00 00 00 80 DA +12:03:25.024 RX frame 006 00 00 00 00 80 DA +Stopped. + + + +CONNECT: NOT ACT +Listening on COM5 at 38400 8N1; will send 00 00 02 00 80 DB after 3.0s +12:11:41.891 RX frame 006 00 00 00 00 80 DA +12:11:42.598 RX frame 006 00 00 00 00 80 DA +12:11:43.304 RX frame 006 00 00 00 00 80 DA +12:11:44.010 RX frame 006 00 00 00 00 80 DA +12:11:44.463 TX frame 006 00 00 02 00 80 DB +12:11:44.716 RX frame 006 00 00 00 00 80 DA +12:11:44.968 RX frame 006 00 00 00 00 80 DA +12:11:45.068 TX frame 006 00 00 02 00 80 DB +12:11:45.120 RX frame 006 00 00 00 00 80 DA +12:11:45.373 RX frame 006 00 00 00 00 80 DA +12:11:45.626 RX frame 006 00 00 00 00 80 DA +12:11:45.677 TX frame 006 00 00 02 00 80 DB +12:11:45.727 RX frame 006 00 00 00 00 80 DA +12:11:45.980 RX frame 006 00 00 00 00 80 DA +12:11:46.233 RX frame 006 00 00 00 00 80 DA +12:11:46.283 TX frame 006 00 00 02 00 80 DB +12:11:46.333 RX frame 006 00 00 00 00 80 DA +12:11:46.585 RX frame 006 00 00 00 00 80 DA +12:11:46.838 RX frame 006 00 00 00 00 80 DA +12:11:46.889 TX frame 006 00 00 02 00 80 DB +12:11:46.939 RX frame 006 00 00 00 00 80 DA +12:11:47.191 RX frame 006 00 00 00 00 80 DA +12:11:47.443 RX frame 006 00 00 00 00 80 DA +12:11:47.696 RX frame 006 00 00 00 00 80 DA +12:11:47.946 RX frame 006 00 00 00 00 80 DA +12:11:48.199 RX frame 006 00 00 00 00 80 DA +12:11:48.452 RX frame 006 00 00 00 00 80 DA +12:11:48.713 RX frame 006 00 00 00 00 80 DA +12:11:49.318 RX frame 006 00 00 00 00 80 DA +12:11:50.026 RX frame 006 00 00 00 00 80 DA +12:11:50.685 RX frame 006 00 00 00 00 80 DA +12:11:51.394 RX frame 006 00 00 00 00 80 DA +Stopped. diff --git a/captures/rcp-response-cmd02.txt b/captures/rcp-response-cmd02.txt new file mode 100644 index 0000000..94ea4fc --- /dev/null +++ b/captures/rcp-response-cmd02.txt @@ -0,0 +1,101 @@ +Listening on COM5 at 38400 8N1; will send 00 00 02 00 80 DB after 3.0s +12:04:29.422 RX frame 006 00 00 00 00 80 DA +12:04:30.130 RX frame 006 00 00 00 00 80 DA +12:04:30.837 RX frame 006 00 00 00 00 80 DA +12:04:31.543 RX frame 006 00 00 00 00 80 DA +12:04:32.249 RX frame 006 00 00 00 00 80 DA +12:04:32.300 TX frame 006 00 00 02 00 80 DB +12:04:32.905 TX frame 006 00 00 02 00 80 DB +12:04:32.955 RX frame 006 00 00 00 00 80 DA +12:04:32.955 RX frame 006 00 00 00 00 80 DA +12:04:33.208 RX frame 006 00 00 00 00 80 DA +12:04:33.460 RX frame 006 00 00 00 00 80 DA +12:04:33.513 TX frame 006 00 00 02 00 80 DB +12:04:33.563 RX frame 006 00 00 00 00 80 DA +12:04:33.816 RX frame 006 00 00 00 00 80 DA +12:04:34.068 RX frame 006 00 00 00 00 80 DA +12:04:34.119 TX frame 006 00 00 02 00 80 DB +12:04:34.170 RX frame 006 00 00 00 00 80 DA +12:04:34.423 RX frame 006 00 00 00 00 80 DA +12:04:34.676 RX frame 006 00 00 00 00 80 DA +12:04:34.777 TX frame 006 00 00 02 00 80 DB +12:04:34.827 RX frame 006 00 00 00 00 80 DA +12:04:35.080 RX frame 006 00 00 00 00 80 DA +12:04:35.332 RX frame 006 00 00 00 00 80 DA +12:04:35.584 RX frame 006 00 00 00 00 80 DA +12:04:35.836 RX frame 006 00 00 00 00 80 DA +12:04:36.088 RX frame 006 00 00 00 00 80 DA +12:04:36.341 RX frame 006 00 00 00 00 80 DA +12:04:36.594 RX frame 006 00 00 00 00 80 DA +12:04:37.250 RX frame 006 00 00 00 00 80 DA +12:04:37.956 RX frame 006 00 00 00 00 80 DA +12:04:38.661 RX frame 006 00 00 00 00 80 DA +12:04:39.366 RX frame 006 00 00 00 00 80 DA +12:04:40.021 RX frame 006 00 00 00 00 80 DA +12:04:40.728 RX frame 006 00 00 00 00 80 DA +12:04:41.434 RX frame 006 00 00 00 00 80 DA +12:04:42.139 RX frame 006 00 00 00 00 80 DA +Stopped. +Listening on COM5 at 38400 8N1; will send 00 00 02 00 80 D8 after 3.0s +12:05:12.253 RX frame 006 00 00 00 00 80 DA +12:05:12.960 RX frame 006 00 00 00 00 80 DA +12:05:13.666 RX frame 006 00 00 00 00 80 DA +12:05:14.372 RX frame 006 00 00 00 00 80 DA +12:05:14.675 TX frame 006 00 00 02 00 80 D8 +12:05:15.028 RX frame 006 00 00 00 00 80 DA +12:05:15.280 RX frame 006 00 00 00 00 80 DA +12:05:15.281 TX frame 006 00 00 02 00 80 D8 +12:05:15.332 RX frame 006 00 00 00 00 80 DA +12:05:15.584 RX frame 006 00 00 00 00 80 DA +12:05:15.837 RX frame 006 00 00 00 00 80 DA +12:05:15.888 TX frame 006 00 00 02 00 80 D8 +12:05:15.938 RX frame 006 00 00 00 00 80 DA +12:05:16.191 RX frame 006 00 00 00 00 80 DA +12:05:16.442 RX frame 006 00 00 00 00 80 DA +12:05:16.544 TX frame 006 00 00 02 00 80 D8 +12:05:16.594 RX frame 006 00 00 00 00 80 DA +12:05:16.846 RX frame 006 00 00 00 00 80 DA +12:05:17.099 RX frame 006 00 00 00 00 80 DA +12:05:17.200 TX frame 006 00 00 02 00 80 D8 +12:05:17.250 RX frame 006 00 00 00 00 80 DA +12:05:17.503 RX frame 006 00 00 00 00 80 DA +12:05:17.754 RX frame 006 00 00 00 00 80 DA +12:05:18.007 RX frame 006 00 00 00 00 80 DA +12:05:18.259 RX frame 006 00 00 00 00 80 DA +12:05:18.510 RX frame 006 00 00 00 00 80 DA +12:05:18.762 RX frame 006 00 00 00 00 80 DA +Stopped. + + +CONNECT NOT ACTListening on COM5 at 38400 8N1; will send 00 00 02 00 80 D8 after 3.0s +12:11:23.106 RX frame 006 00 00 00 00 80 DA +12:11:23.811 RX frame 006 00 00 00 00 80 DA +12:11:24.517 RX frame 006 00 00 00 00 80 DA +12:11:25.223 RX frame 006 00 00 00 00 80 DA +12:11:25.678 TX frame 006 00 00 02 00 80 D8 +12:11:25.880 RX frame 006 00 00 00 00 80 DA +12:11:26.131 RX frame 006 00 00 00 00 80 DA +12:11:26.284 TX frame 006 00 00 02 00 80 D8 +12:11:26.334 RX frame 006 00 00 00 00 80 DA +12:11:26.586 RX frame 006 00 00 00 00 80 DA +12:11:26.839 RX frame 006 00 00 00 00 80 DA +12:11:26.889 TX frame 006 00 00 02 00 80 D8 +12:11:26.939 RX frame 006 00 00 00 00 80 DA +12:11:27.190 RX frame 006 00 00 00 00 80 DA +12:11:27.444 RX frame 006 00 00 00 00 80 DA +12:11:27.545 TX frame 006 00 00 02 00 80 D8 +12:11:27.595 RX frame 006 00 00 00 00 80 DA +12:11:27.848 RX frame 006 00 00 00 00 80 DA +12:11:28.101 RX frame 006 00 00 00 00 80 DA +12:11:28.201 TX frame 006 00 00 02 00 80 D8 +12:11:28.252 RX frame 006 00 00 00 00 80 DA +12:11:28.506 RX frame 006 00 00 00 00 80 DA +12:11:28.758 RX frame 006 00 00 00 00 80 DA +12:11:29.010 RX frame 006 00 00 00 00 80 DA +12:11:29.262 RX frame 006 00 00 00 00 80 DA +12:11:29.515 RX frame 006 00 00 00 00 80 DA +12:11:29.767 RX frame 006 00 00 00 00 80 DA +12:11:30.019 RX frame 006 00 00 00 00 80 DA +12:11:30.727 RX frame 006 00 00 00 00 80 DA +12:11:31.382 RX frame 006 00 00 00 00 80 DA +Stopped. diff --git a/captures/rcp-response-cmd03.txt b/captures/rcp-response-cmd03.txt new file mode 100644 index 0000000..6854f83 --- /dev/null +++ b/captures/rcp-response-cmd03.txt @@ -0,0 +1,36 @@ +Listening on COM5 at 38400 8N1; will send 00 00 03 00 80 D9 after 3.0s +12:06:09.358 RX frame 006 00 00 00 00 80 DA +12:06:10.066 RX frame 006 00 00 00 00 80 DA +12:06:10.773 RX frame 006 00 00 00 00 80 DA +12:06:11.479 RX frame 006 00 00 00 00 80 DA +12:06:11.882 TX frame 006 00 00 03 00 80 D9 +12:06:12.134 RX frame 006 00 00 00 00 80 DA +12:06:12.386 RX frame 006 00 00 00 00 80 DA +12:06:12.486 TX frame 006 00 00 03 00 80 D9 +12:06:12.537 RX frame 006 00 00 00 00 80 DA +12:06:12.789 RX frame 006 00 00 00 00 80 DA +12:06:13.040 RX frame 006 00 00 00 00 80 DA +12:06:13.092 TX frame 006 00 00 03 00 80 D9 +12:06:13.142 RX frame 006 00 00 00 00 80 DA +12:06:13.395 RX frame 006 00 00 00 00 80 DA +12:06:13.645 RX frame 006 00 00 00 00 80 DA +12:06:13.746 TX frame 006 00 00 03 00 80 D9 +12:06:13.796 RX frame 006 00 00 00 00 80 DA +12:06:14.048 RX frame 006 00 00 00 00 80 DA +12:06:14.301 RX frame 006 00 00 00 00 80 DA +12:06:14.403 TX frame 006 00 00 03 00 80 D9 +12:06:14.453 RX frame 006 00 00 00 00 80 DA +12:06:14.707 RX frame 006 00 00 00 00 80 DA +12:06:14.959 RX frame 006 00 00 00 00 80 DA +12:06:15.212 RX frame 006 00 00 00 00 80 DA +12:06:15.465 RX frame 006 00 00 00 00 80 DA +12:06:15.717 RX frame 006 00 00 00 00 80 DA +12:06:15.968 RX frame 006 00 00 00 00 80 DA +12:06:16.220 RX frame 006 00 00 00 00 80 DA +12:06:16.875 RX frame 006 00 00 00 00 80 DA +12:06:17.582 RX frame 006 00 00 00 00 80 DA +12:06:18.237 RX frame 006 00 00 00 00 80 DA +Stopped. + + +CONNECT: NOT ACT \ No newline at end of file diff --git a/captures/rcp-response-cmd04.txt b/captures/rcp-response-cmd04.txt new file mode 100644 index 0000000..920c5f9 --- /dev/null +++ b/captures/rcp-response-cmd04.txt @@ -0,0 +1,70 @@ +Listening on COM5 at 38400 8N1; will send 00 00 7F 00 80 A5 after 3.0s +12:07:03.765 RX frame 006 00 00 00 00 80 DA +12:07:04.470 RX frame 006 00 00 00 00 80 DA +12:07:05.176 RX frame 006 00 00 00 00 80 DA +12:07:05.882 RX frame 006 00 00 00 00 80 DA +12:07:06.589 RX frame 006 00 00 00 00 80 DA +12:07:06.589 TX frame 006 00 00 7F 00 80 A5 +12:07:07.246 RX frame 006 00 00 00 00 80 DA +12:07:07.246 TX frame 006 00 00 7F 00 80 A5 +12:07:07.902 TX frame 006 00 00 7F 00 80 A5 +12:07:07.953 RX frame 006 00 00 00 00 80 DA +12:07:08.559 TX frame 006 00 00 7F 00 80 A5 +12:07:08.662 RX frame 006 00 00 00 00 80 DA +12:07:09.218 TX frame 006 00 00 7F 00 80 A5 +12:07:09.369 RX frame 006 00 00 00 00 80 DA +12:07:10.076 RX frame 006 00 00 00 00 80 DA +12:07:10.783 RX frame 006 00 00 00 00 80 DA +12:07:11.491 RX frame 006 00 00 00 00 80 DA +12:07:12.147 RX frame 006 00 00 00 00 80 DA +12:07:12.852 RX frame 006 00 00 00 00 80 DA +12:07:13.557 RX frame 006 00 00 00 00 80 DA +12:07:14.263 RX frame 006 00 00 00 00 80 DA +12:07:14.969 RX frame 006 00 00 00 00 80 DA +Stopped. + + +NO SCREEN CHANGEListening on COM5 at 38400 8N1; will send 00 00 7F 00 80 A5 after 3.0s +12:07:43.686 RX frame 006 00 00 00 00 80 DA +12:07:44.393 RX frame 006 00 00 00 00 80 DA +12:07:45.050 RX frame 006 00 00 00 00 80 DA +12:07:45.755 RX frame 006 00 00 00 00 80 DA +12:07:46.411 TX frame 006 00 00 7F 00 80 A5 +12:07:46.462 RX frame 006 00 00 00 00 80 DA +12:07:47.018 TX frame 006 00 00 7F 00 80 A5 +12:07:47.170 RX frame 006 00 00 00 00 80 DA +12:07:47.622 TX frame 006 00 00 7F 00 80 A5 +12:07:47.875 RX frame 006 00 00 00 00 80 DA +12:07:48.278 TX frame 006 00 00 7F 00 80 A5 +12:07:48.581 RX frame 006 00 00 00 00 80 DA +12:07:48.934 TX frame 006 00 00 7F 00 80 A5 +12:07:49.287 RX frame 006 00 00 00 00 80 DA +12:07:49.992 RX frame 006 00 00 00 00 80 DA +12:07:50.648 RX frame 006 00 00 00 00 80 DA +12:07:51.355 RX frame 006 00 00 00 00 80 DA +12:07:52.062 RX frame 006 00 00 00 00 80 DA +Stopped. +Listening on COM5 at 38400 8N1; will send 00 00 7F 00 80 A5 after 3.0s +12:12:25.701 RX frame 006 00 00 00 00 80 DA +12:12:26.410 RX frame 006 00 00 00 00 80 DA +12:12:27.116 RX frame 006 00 00 00 00 80 DA +12:12:27.823 RX frame 006 00 00 00 00 80 DA +12:12:28.075 TX frame 006 00 00 7F 00 80 A5 +12:12:28.529 RX frame 006 00 00 00 00 80 DA +12:12:28.680 TX frame 006 00 00 7F 00 80 A5 +12:12:29.233 RX frame 006 00 00 00 00 80 DA +12:12:29.283 TX frame 006 00 00 7F 00 80 A5 +12:12:29.891 RX frame 006 00 00 00 00 80 DA +12:12:29.891 TX frame 006 00 00 7F 00 80 A5 +12:12:30.548 TX frame 006 00 00 7F 00 80 A5 +12:12:30.598 RX frame 006 00 00 00 00 80 DA +12:12:31.305 RX frame 006 00 00 00 00 80 DA +12:12:32.014 RX frame 006 00 00 00 00 80 DA +12:12:32.722 RX frame 006 00 00 00 00 80 DA +12:12:33.427 RX frame 006 00 00 00 00 80 DA +12:12:34.134 RX frame 006 00 00 00 00 80 DA +12:12:34.791 RX frame 006 00 00 00 00 80 DA +12:12:35.498 RX frame 006 00 00 00 00 80 DA +12:12:36.205 RX frame 006 00 00 00 00 80 DA +12:12:36.912 RX frame 006 00 00 00 00 80 DA +Stopped. diff --git a/captures/rcp-response-cmd05.txt b/captures/rcp-response-cmd05.txt new file mode 100644 index 0000000..9b79605 --- /dev/null +++ b/captures/rcp-response-cmd05.txt @@ -0,0 +1,39 @@ +Listening on COM5 at 38400 8N1; will send 00 00 80 00 80 5A after 3.0s +12:08:42.475 RX frame 006 00 00 00 00 80 DA +12:08:43.182 RX frame 006 00 00 00 00 80 DA +12:08:43.889 RX frame 006 00 00 00 00 80 DA +12:08:44.595 RX frame 006 00 00 00 00 80 DA +12:08:44.797 TX frame 006 00 00 80 00 80 5A +12:08:45.303 RX frame 006 00 00 00 00 80 DA +12:08:45.404 TX frame 006 00 00 80 00 80 5A +12:08:45.454 RX frame 006 00 00 00 00 80 DA +12:08:45.708 RX frame 006 00 00 00 00 80 DA +12:08:45.960 RX frame 006 00 00 00 00 80 DA +12:08:46.062 TX frame 006 00 00 80 00 80 5A +12:08:46.116 RX frame 006 00 00 00 00 80 DA +12:08:46.368 RX frame 006 00 00 00 00 80 DA +12:08:46.621 RX frame 006 00 00 00 00 80 DA +12:08:46.672 TX frame 006 00 00 80 00 80 5A +12:08:46.722 RX frame 006 00 00 00 00 80 DA +12:08:46.974 RX frame 006 00 00 00 00 80 DA +12:08:47.226 RX frame 006 00 00 00 00 80 DA +12:08:47.327 TX frame 006 00 00 80 00 80 5A +12:08:47.378 RX frame 006 00 00 00 00 80 DA +12:08:47.629 RX frame 006 00 00 00 00 80 DA +12:08:47.882 RX frame 006 00 00 00 00 80 DA +12:08:48.135 RX frame 006 00 00 00 00 80 DA +12:08:48.388 RX frame 006 00 00 00 00 80 DA +12:08:48.640 RX frame 006 00 00 00 00 80 DA +12:08:48.893 RX frame 006 00 00 00 00 80 DA +12:08:49.145 RX frame 006 00 00 00 00 80 DA +12:08:49.801 RX frame 006 00 00 00 00 80 DA +12:08:50.457 RX frame 006 00 00 00 00 80 DA +12:08:51.163 RX frame 006 00 00 00 00 80 DA +12:08:51.869 RX frame 006 00 00 00 00 80 DA +12:08:52.577 RX frame 006 00 00 00 00 80 DA +12:08:53.284 RX frame 006 00 00 00 00 80 DA +12:08:53.991 RX frame 006 00 00 00 00 80 DA +12:08:54.698 RX frame 006 00 00 00 00 80 DA +12:08:55.404 RX frame 006 00 00 00 00 80 DA + +Screen change \ No newline at end of file diff --git a/captures/rcp-response-heartbeat-mirror.txt b/captures/rcp-response-heartbeat-mirror.txt new file mode 100644 index 0000000..a787036 --- /dev/null +++ b/captures/rcp-response-heartbeat-mirror.txt @@ -0,0 +1,60 @@ +Listening on COM5 at 38400 8N1; will send 00 00 00 00 80 DA after 3.0s +11:47:17.509 RX frame 006 00 00 00 00 80 DA +11:47:18.215 RX frame 006 00 00 00 00 80 DA +11:47:18.871 RX frame 006 00 00 00 00 80 DA +11:47:19.579 RX frame 006 00 00 00 00 80 DA +11:47:20.284 RX frame 006 00 00 00 00 80 DA +11:47:20.384 TX frame 006 00 00 00 00 80 DA +11:47:20.991 RX frame 006 00 00 00 00 80 DA +11:47:20.991 TX frame 006 00 00 00 00 80 DA +11:47:21.042 RX frame 006 00 00 00 00 80 DA +11:47:21.295 RX frame 006 00 00 00 00 80 DA +11:47:21.547 RX frame 006 00 00 00 00 80 DA +11:47:21.600 TX frame 006 00 00 00 00 80 DA +11:47:21.650 RX frame 006 00 00 00 00 80 DA +11:47:21.903 RX frame 006 00 00 00 00 80 DA +11:47:22.154 RX frame 006 00 00 00 00 80 DA +11:47:22.205 TX frame 006 00 00 00 00 80 DA +11:47:22.255 RX frame 006 00 00 00 00 80 DA +11:47:22.507 RX frame 006 00 00 00 00 80 DA +11:47:22.759 RX frame 006 00 00 00 00 80 DA +11:47:22.859 TX frame 006 00 00 00 00 80 DA +11:47:22.910 RX frame 006 00 00 00 00 80 DA +11:47:23.163 RX frame 006 00 00 00 00 80 DA +11:47:23.416 RX frame 006 00 00 00 00 80 DA +11:47:23.516 TX frame 006 00 00 00 00 80 DA +11:47:23.568 RX frame 006 00 00 00 00 80 DA +11:47:23.819 RX frame 006 00 00 00 00 80 DA +11:47:24.071 RX frame 006 00 00 00 00 80 DA +11:47:24.172 TX frame 006 00 00 00 00 80 DA +11:47:24.222 RX frame 006 00 00 00 00 80 DA +11:47:24.475 RX frame 006 00 00 00 00 80 DA +11:47:24.728 RX frame 006 00 00 00 00 80 DA +11:47:24.779 TX frame 006 00 00 00 00 80 DA +11:47:24.829 RX frame 006 00 00 00 00 80 DA +11:47:25.080 RX frame 006 00 00 00 00 80 DA +11:47:25.334 RX frame 006 00 00 00 00 80 DA +11:47:25.384 TX frame 006 00 00 00 00 80 DA +11:47:25.435 RX frame 006 00 00 00 00 80 DA +11:47:25.687 RX frame 006 00 00 00 00 80 DA +11:47:25.939 RX frame 006 00 00 00 00 80 DA +11:47:25.989 TX frame 006 00 00 00 00 80 DA +11:47:26.040 RX frame 006 00 00 00 00 80 DA +11:47:26.293 RX frame 006 00 00 00 00 80 DA +11:47:26.545 RX frame 006 00 00 00 00 80 DA +11:47:26.797 RX frame 006 00 00 00 00 80 DA +11:47:27.051 RX frame 006 00 00 00 00 80 DA +11:47:27.304 RX frame 006 00 00 00 00 80 DA +11:47:27.556 RX frame 006 00 00 00 00 80 DA +11:47:27.809 RX frame 006 00 00 00 00 80 DA +11:47:28.516 RX frame 006 00 00 00 00 80 DA +11:47:29.172 RX frame 006 00 00 00 00 80 DA +11:47:29.879 RX frame 006 00 00 00 00 80 DA +11:47:30.584 RX frame 006 00 00 00 00 80 DA +11:47:31.292 RX frame 006 00 00 00 00 80 DA +11:47:31.998 RX frame 006 00 00 00 00 80 DA +11:47:32.706 RX frame 006 00 00 00 00 80 DA +11:47:33.414 RX frame 006 00 00 00 00 80 DA +11:47:34.070 RX frame 006 00 00 00 00 80 DA +11:47:34.778 RX frame 006 00 00 00 00 80 DA +11:47:35.485 RX frame 006 00 00 00 00 80 DA diff --git a/captures/rcp-response-invalid-checksum.txt b/captures/rcp-response-invalid-checksum.txt new file mode 100644 index 0000000..b4c10e6 --- /dev/null +++ b/captures/rcp-response-invalid-checksum.txt @@ -0,0 +1,35 @@ +Listening on COM5 at 38400 8N1; will send 00 00 00 00 80 00 after 3.0s +11:52:53.545 RX frame 006 00 00 00 00 80 DA +11:52:54.253 RX frame 006 00 00 00 00 80 DA +11:52:54.959 RX frame 006 00 00 00 00 80 DA +11:52:55.616 RX frame 006 00 00 00 00 80 DA +11:52:56.120 TX frame 006 00 00 00 00 80 00 +11:52:56.321 RX frame 006 00 00 00 00 80 DA +11:52:56.573 RX frame 006 00 00 00 00 80 DA +11:52:56.725 TX frame 006 00 00 00 00 80 00 +11:52:56.775 RX frame 006 00 00 00 00 80 DA +11:52:57.027 RX frame 006 00 00 00 00 80 DA +11:52:57.279 RX frame 006 00 00 00 00 80 DA +11:52:57.332 TX frame 006 00 00 00 00 80 00 +11:52:57.383 RX frame 006 00 00 00 00 80 DA +11:52:57.635 RX frame 006 00 00 00 00 80 DA +11:52:57.888 RX frame 006 00 00 00 00 80 DA +11:52:57.990 TX frame 006 00 00 00 00 80 00 +11:52:58.040 RX frame 006 00 00 00 00 80 DA +11:52:58.291 RX frame 006 00 00 00 00 80 DA +11:52:58.543 RX frame 006 00 00 00 00 80 DA +11:52:58.644 TX frame 006 00 00 00 00 80 00 +11:52:58.695 RX frame 006 00 00 00 00 80 DA +11:52:58.948 RX frame 006 00 00 00 00 80 DA +11:52:59.201 RX frame 006 00 00 00 00 80 DA +11:52:59.454 RX frame 006 00 00 00 00 80 DA +11:52:59.705 RX frame 006 00 00 00 00 80 DA +11:52:59.957 RX frame 006 00 00 00 00 80 DA +11:53:00.208 RX frame 006 00 00 00 00 80 DA +11:53:00.460 RX frame 006 00 00 00 00 80 DA +11:53:01.166 RX frame 006 00 00 00 00 80 DA +11:53:01.822 RX frame 006 00 00 00 00 80 DA +11:53:02.528 RX frame 006 00 00 00 00 80 DA +11:53:03.232 RX frame 006 00 00 00 00 80 DA +11:53:03.940 RX frame 006 00 00 00 00 80 DA +Stopped. diff --git a/captures/rcp-response-short-frame.txt b/captures/rcp-response-short-frame.txt new file mode 100644 index 0000000..d2497c9 --- /dev/null +++ b/captures/rcp-response-short-frame.txt @@ -0,0 +1,21 @@ +Listening on COM5 at 38400 8N1; will send 00 00 00 after 3.0s +11:58:35.096 RX frame 006 00 00 00 00 80 DA +11:58:35.802 RX frame 006 00 00 00 00 80 DA +11:58:36.508 RX frame 006 00 00 00 00 80 DA +11:58:37.166 RX frame 006 00 00 00 00 80 DA +11:58:37.871 RX frame 006 00 00 00 00 80 DA +11:58:37.972 TX frame 003 00 00 00 +11:58:38.578 RX frame 006 00 00 00 00 80 DA +11:58:38.578 TX frame 003 00 00 00 +11:58:39.184 TX frame 003 00 00 00 +11:58:39.285 RX frame 006 00 00 00 00 80 DA +11:58:39.789 TX frame 003 00 00 00 +11:58:39.992 RX frame 006 00 00 00 00 80 DA +11:58:40.398 TX frame 003 00 00 00 +11:58:40.699 RX frame 006 00 00 00 00 80 DA +11:58:41.405 RX frame 006 00 00 00 00 80 DA +11:58:42.112 RX frame 006 00 00 00 00 80 DA +11:58:42.767 RX frame 006 00 00 00 00 80 DA +11:58:43.473 RX frame 006 00 00 00 00 80 DA +11:58:44.180 RX frame 006 00 00 00 00 80 DA +Stopped. diff --git a/captures/rcp-response-single-00.txt b/captures/rcp-response-single-00.txt new file mode 100644 index 0000000..e341697 --- /dev/null +++ b/captures/rcp-response-single-00.txt @@ -0,0 +1,25 @@ +Listening on COM5 at 38400 8N1; will send 00 after 3.0s +11:57:57.280 RX frame 006 00 00 00 00 80 DA +11:57:57.988 RX frame 006 00 00 00 00 80 DA +11:57:58.694 RX frame 006 00 00 00 00 80 DA +11:57:59.402 RX frame 006 00 00 00 00 80 DA +11:57:59.655 TX frame 001 00 +11:58:00.110 RX frame 006 00 00 00 00 80 DA +11:58:00.262 TX frame 001 00 +11:58:00.763 RX frame 006 00 00 00 00 80 DA +11:58:00.914 TX frame 001 00 +11:58:01.467 RX frame 006 00 00 00 00 80 DA +11:58:01.569 TX frame 001 00 +11:58:02.175 RX frame 006 00 00 00 00 80 DA +11:58:02.226 TX frame 001 00 +11:58:02.884 RX frame 006 00 00 00 00 80 DA +11:58:03.591 RX frame 006 00 00 00 00 80 DA +11:58:04.298 RX frame 006 00 00 00 00 80 DA +11:58:05.004 RX frame 006 00 00 00 00 80 DA +11:58:05.662 RX frame 006 00 00 00 00 80 DA +11:58:06.370 RX frame 006 00 00 00 00 80 DA +11:58:07.077 RX frame 006 00 00 00 00 80 DA +11:58:07.782 RX frame 006 00 00 00 00 80 DA +11:58:08.490 RX frame 006 00 00 00 00 80 DA +11:58:09.197 RX frame 006 00 00 00 00 80 DA +11:58:09.903 RX frame 006 00 00 00 00 80 DA diff --git a/captures/rcp-response-single-ff.txt b/captures/rcp-response-single-ff.txt new file mode 100644 index 0000000..0e51ff8 --- /dev/null +++ b/captures/rcp-response-single-ff.txt @@ -0,0 +1,24 @@ +Listening on COM5 at 38400 8N1; will send FF after 3.0s +11:58:18.998 RX frame 006 00 00 00 00 80 DA +11:58:19.704 RX frame 006 00 00 00 00 80 DA +11:58:20.410 RX frame 006 00 00 00 00 80 DA +11:58:21.068 RX frame 006 00 00 00 00 80 DA +11:58:21.776 RX frame 006 00 00 00 00 80 DA +11:58:21.927 TX frame 001 FF +11:58:22.481 RX frame 006 00 00 00 00 80 DA +11:58:22.531 TX frame 001 FF +11:58:23.138 TX frame 001 FF +11:58:23.189 RX frame 006 00 00 00 00 80 DA +11:58:23.742 TX frame 001 FF +11:58:23.894 RX frame 006 00 00 00 00 80 DA +11:58:24.399 TX frame 001 FF +11:58:24.603 RX frame 006 00 00 00 00 80 DA +11:58:25.310 RX frame 006 00 00 00 00 80 DA +11:58:25.967 RX frame 006 00 00 00 00 80 DA +11:58:26.672 RX frame 006 00 00 00 00 80 DA +11:58:27.379 RX frame 006 00 00 00 00 80 DA +11:58:28.085 RX frame 006 00 00 00 00 80 DA +11:58:28.788 RX frame 006 00 00 00 00 80 DA +11:58:29.494 RX frame 006 00 00 00 00 80 DA +11:58:30.199 RX frame 006 00 00 00 00 80 DA +Stopped. diff --git a/captures/rcp-response-state-byte4.txt b/captures/rcp-response-state-byte4.txt new file mode 100644 index 0000000..a05a892 --- /dev/null +++ b/captures/rcp-response-state-byte4.txt @@ -0,0 +1,59 @@ +Listening on COM5 at 38400 8N1; will send 00 00 00 80 00 DA after 3.0s +11:50:03.524 RX frame 006 00 00 00 00 80 DA +11:50:04.232 RX frame 006 00 00 00 00 80 DA +11:50:04.939 RX frame 006 00 00 00 00 80 DA +11:50:05.594 RX frame 006 00 00 00 00 80 DA +11:50:06.301 RX frame 006 00 00 00 00 80 DA +11:50:06.301 TX frame 006 00 00 00 80 00 DA +11:50:06.957 TX frame 006 00 00 00 80 00 DA +11:50:07.008 RX frame 006 00 00 00 00 80 DA +11:50:07.260 RX frame 006 00 00 00 00 80 DA +11:50:07.512 RX frame 006 00 00 00 00 80 DA +11:50:07.613 TX frame 006 00 00 00 80 00 DA +11:50:07.665 RX frame 006 00 00 00 00 80 DA +11:50:07.917 RX frame 006 00 00 00 00 80 DA +11:50:08.169 RX frame 006 00 00 00 00 80 DA +11:50:08.271 TX frame 006 00 00 00 80 00 DA +11:50:08.321 RX frame 006 00 00 00 00 80 DA +11:50:08.573 RX frame 006 00 00 00 00 80 DA +11:50:08.824 RX frame 006 00 00 00 00 80 DA +11:50:08.926 TX frame 006 00 00 00 80 00 DA +11:50:08.976 RX frame 006 00 00 00 00 80 DA +11:50:09.228 RX frame 006 00 00 00 00 80 DA +11:50:09.480 RX frame 006 00 00 00 00 80 DA +11:50:09.580 TX frame 006 00 00 00 80 00 DA +11:50:09.631 RX frame 006 00 00 00 00 80 DA +11:50:09.883 RX frame 006 00 00 00 00 80 DA +11:50:10.136 RX frame 006 00 00 00 00 80 DA +11:50:10.236 TX frame 006 00 00 00 80 00 DA +11:50:10.286 RX frame 006 00 00 00 00 80 DA +11:50:10.540 RX frame 006 00 00 00 00 80 DA +11:50:10.792 RX frame 006 00 00 00 00 80 DA +11:50:10.893 TX frame 006 00 00 00 80 00 DA +11:50:10.943 RX frame 006 00 00 00 00 80 DA +11:50:11.195 RX frame 006 00 00 00 00 80 DA +11:50:11.447 RX frame 006 00 00 00 00 80 DA +11:50:11.548 TX frame 006 00 00 00 80 00 DA +11:50:11.599 RX frame 006 00 00 00 00 80 DA +11:50:11.851 RX frame 006 00 00 00 00 80 DA +11:50:12.106 RX frame 006 00 00 00 00 80 DA +11:50:12.156 TX frame 006 00 00 00 80 00 DA +11:50:12.207 RX frame 006 00 00 00 00 80 DA +11:50:12.458 RX frame 006 00 00 00 00 80 DA +11:50:12.711 RX frame 006 00 00 00 00 80 DA +11:50:12.964 RX frame 006 00 00 00 00 80 DA +11:50:13.217 RX frame 006 00 00 00 00 80 DA +11:50:13.469 RX frame 006 00 00 00 00 80 DA +11:50:13.722 RX frame 006 00 00 00 00 80 DA +11:50:13.974 RX frame 006 00 00 00 00 80 DA +11:50:14.628 RX frame 006 00 00 00 00 80 DA +11:50:15.334 RX frame 006 00 00 00 00 80 DA +11:50:16.039 RX frame 006 00 00 00 00 80 DA +11:50:16.696 RX frame 006 00 00 00 00 80 DA +11:50:17.404 RX frame 006 00 00 00 00 80 DA +11:50:18.111 RX frame 006 00 00 00 00 80 DA +11:50:18.817 RX frame 006 00 00 00 00 80 DA +11:50:19.523 RX frame 006 00 00 00 00 80 DA +11:50:20.226 RX frame 006 00 00 00 00 80 DA +11:50:20.935 RX frame 006 00 00 00 00 80 DA +Stopped. diff --git a/captures/rcp-response-zero-state.txt b/captures/rcp-response-zero-state.txt new file mode 100644 index 0000000..e3c18bb --- /dev/null +++ b/captures/rcp-response-zero-state.txt @@ -0,0 +1,59 @@ +Listening on COM5 at 38400 8N1; will send 00 00 00 00 00 5A after 3.0s +11:49:35.226 RX frame 006 00 00 00 00 80 DA +11:49:35.934 RX frame 006 00 00 00 00 80 DA +11:49:36.588 RX frame 006 00 00 00 00 80 DA +11:49:37.295 RX frame 006 00 00 00 00 80 DA +11:49:37.698 TX frame 006 00 00 00 00 00 5A +11:49:38.003 RX frame 006 00 00 00 00 80 DA +11:49:38.255 RX frame 006 00 00 00 00 80 DA +11:49:38.305 TX frame 006 00 00 00 00 00 5A +11:49:38.356 RX frame 006 00 00 00 00 80 DA +11:49:38.607 RX frame 006 00 00 00 00 80 DA +11:49:38.860 RX frame 006 00 00 00 00 80 DA +11:49:38.911 TX frame 006 00 00 00 00 00 5A +11:49:38.961 RX frame 006 00 00 00 00 80 DA +11:49:39.213 RX frame 006 00 00 00 00 80 DA +11:49:39.466 RX frame 006 00 00 00 00 80 DA +11:49:39.567 TX frame 006 00 00 00 00 00 5A +11:49:39.617 RX frame 006 00 00 00 00 80 DA +11:49:39.869 RX frame 006 00 00 00 00 80 DA +11:49:40.121 RX frame 006 00 00 00 00 80 DA +11:49:40.223 TX frame 006 00 00 00 00 00 5A +11:49:40.274 RX frame 006 00 00 00 00 80 DA +11:49:40.525 RX frame 006 00 00 00 00 80 DA +11:49:40.777 RX frame 006 00 00 00 00 80 DA +11:49:40.878 TX frame 006 00 00 00 00 00 5A +11:49:40.929 RX frame 006 00 00 00 00 80 DA +11:49:41.181 RX frame 006 00 00 00 00 80 DA +11:49:41.434 RX frame 006 00 00 00 00 80 DA +11:49:41.535 TX frame 006 00 00 00 00 00 5A +11:49:41.586 RX frame 006 00 00 00 00 80 DA +11:49:41.838 RX frame 006 00 00 00 00 80 DA +11:49:42.090 RX frame 006 00 00 00 00 80 DA +11:49:42.191 TX frame 006 00 00 00 00 00 5A +11:49:42.242 RX frame 006 00 00 00 00 80 DA +11:49:42.494 RX frame 006 00 00 00 00 80 DA +11:49:42.747 RX frame 006 00 00 00 00 80 DA +11:49:42.847 TX frame 006 00 00 00 00 00 5A +11:49:42.897 RX frame 006 00 00 00 00 80 DA +11:49:43.149 RX frame 006 00 00 00 00 80 DA +11:49:43.402 RX frame 006 00 00 00 00 80 DA +11:49:43.503 TX frame 006 00 00 00 00 00 5A +11:49:43.553 RX frame 006 00 00 00 00 80 DA +11:49:43.805 RX frame 006 00 00 00 00 80 DA +11:49:44.058 RX frame 006 00 00 00 00 80 DA +11:49:44.310 RX frame 006 00 00 00 00 80 DA +11:49:44.562 RX frame 006 00 00 00 00 80 DA +11:49:44.814 RX frame 006 00 00 00 00 80 DA +11:49:45.067 RX frame 006 00 00 00 00 80 DA +11:49:45.320 RX frame 006 00 00 00 00 80 DA +11:49:46.028 RX frame 006 00 00 00 00 80 DA +11:49:46.734 RX frame 006 00 00 00 00 80 DA +11:49:47.394 RX frame 006 00 00 00 00 80 DA +11:49:48.101 RX frame 006 00 00 00 00 80 DA +11:49:48.808 RX frame 006 00 00 00 00 80 DA +11:49:49.514 RX frame 006 00 00 00 00 80 DA +11:49:50.220 RX frame 006 00 00 00 00 80 DA +11:49:50.928 RX frame 006 00 00 00 00 80 DA +11:49:51.634 RX frame 006 00 00 00 00 80 DA +Stopped. diff --git a/captures/rcp-sweep-cmd-00-20.txt b/captures/rcp-sweep-cmd-00-20.txt new file mode 100644 index 0000000..a1ec72f --- /dev/null +++ b/captures/rcp-sweep-cmd-00-20.txt @@ -0,0 +1,163 @@ +Sweeping commands 0x00-0x20 on COM5 at 38400 8N1 +12:16:09.764 RX frame 006 00 00 00 00 80 DA +12:16:10.421 RX frame 006 00 00 00 00 80 DA +12:16:10.825 TX cmd 0x00 frame 006 00 00 00 00 80 DA +12:16:11.128 RX frame 006 00 00 00 00 80 DA +12:16:11.381 RX frame 006 00 00 00 00 80 DA +12:16:11.633 RX frame 006 00 00 00 00 80 DA +12:16:11.835 TX cmd 0x01 frame 006 00 00 01 00 80 DB +12:16:11.886 RX frame 006 00 00 00 00 80 DA +12:16:12.138 RX frame 006 00 00 00 00 80 DA +12:16:12.391 RX frame 006 00 00 00 00 80 DA +12:16:12.643 RX frame 006 00 00 00 00 80 DA +12:16:12.846 TX cmd 0x02 frame 006 00 00 02 00 80 D8 +12:16:12.896 RX frame 006 00 00 00 00 80 DA +12:16:13.149 RX frame 006 00 00 00 00 80 DA +12:16:13.400 RX frame 006 00 00 00 00 80 DA +12:16:13.652 RX frame 006 00 00 00 00 80 DA +12:16:13.854 TX cmd 0x03 frame 006 00 00 03 00 80 D9 +12:16:13.905 RX frame 006 00 00 00 00 80 DA +12:16:14.157 RX frame 006 00 00 00 00 80 DA +12:16:14.408 RX frame 006 00 00 00 00 80 DA +12:16:14.661 RX frame 006 00 00 00 00 80 DA +12:16:14.862 TX cmd 0x04 frame 006 00 00 04 00 80 DE +12:16:14.913 RX frame 006 00 00 00 00 80 DA +12:16:15.165 RX frame 006 00 00 00 00 80 DA +12:16:15.417 RX frame 006 00 00 00 00 80 DA +12:16:15.668 RX frame 006 00 00 00 00 80 DA +12:16:15.868 TX cmd 0x05 frame 006 00 00 05 00 80 DF +12:16:15.919 RX frame 006 00 00 00 00 80 DA +12:16:16.170 RX frame 006 00 00 00 00 80 DA +12:16:16.422 RX frame 006 00 00 00 00 80 DA +12:16:16.675 RX frame 006 00 00 00 00 80 DA +12:16:16.877 TX cmd 0x06 frame 006 00 00 06 00 80 DC +12:16:16.927 RX frame 006 00 00 00 00 80 DA +12:16:17.178 RX frame 006 00 00 00 00 80 DA +12:16:17.431 RX frame 006 00 00 00 00 80 DA +12:16:17.683 RX frame 006 00 00 00 00 80 DA +12:16:17.886 TX cmd 0x07 frame 006 00 00 07 00 80 DD +12:16:17.936 RX frame 006 00 00 00 00 80 DA +12:16:18.189 RX frame 006 00 00 00 00 80 DA +12:16:18.441 RX frame 006 00 00 00 00 80 DA +12:16:18.693 RX frame 006 00 00 00 00 80 DA +12:16:18.894 TX cmd 0x08 frame 006 00 00 08 00 80 D2 +12:16:18.944 RX frame 006 00 00 00 00 80 DA +12:16:19.196 RX frame 006 00 00 00 00 80 DA +12:16:19.447 RX frame 006 00 00 00 00 80 DA +12:16:19.700 RX frame 006 00 00 00 00 80 DA +12:16:19.901 TX cmd 0x09 frame 006 00 00 09 00 80 D3 +12:16:19.951 RX frame 006 00 00 00 00 80 DA +12:16:20.202 RX frame 006 00 00 00 00 80 DA +12:16:20.456 RX frame 006 00 00 00 00 80 DA +12:16:20.708 RX frame 006 00 00 00 00 80 DA +12:16:20.910 TX cmd 0x0A frame 006 00 00 0A 00 80 D0 +12:16:20.960 RX frame 006 00 00 00 00 80 DA +12:16:21.212 RX frame 006 00 00 00 00 80 DA +12:16:21.463 RX frame 006 00 00 00 00 80 DA +12:16:21.714 RX frame 006 00 00 00 00 80 DA +12:16:21.916 TX cmd 0x0B frame 006 00 00 0B 00 80 D1 +12:16:21.966 RX frame 006 00 00 00 00 80 DA +12:16:22.218 RX frame 006 00 00 00 00 80 DA +12:16:22.470 RX frame 006 00 00 00 00 80 DA +12:16:22.721 RX frame 006 00 00 00 00 80 DA +12:16:22.922 TX cmd 0x0C frame 006 00 00 0C 00 80 D6 +12:16:22.973 RX frame 006 00 00 00 00 80 DA +12:16:23.224 RX frame 006 00 00 00 00 80 DA +12:16:23.477 RX frame 006 00 00 00 00 80 DA +12:16:23.728 RX frame 006 00 00 00 00 80 DA +12:16:23.930 TX cmd 0x0D frame 006 00 00 0D 00 80 D7 +12:16:23.980 RX frame 006 00 00 00 00 80 DA +12:16:24.233 RX frame 006 00 00 00 00 80 DA +12:16:24.484 RX frame 006 00 00 00 00 80 DA +12:16:24.735 RX frame 006 00 00 00 00 80 DA +12:16:24.937 TX cmd 0x0E frame 006 00 00 0E 00 80 D4 +12:16:24.987 RX frame 006 00 00 00 00 80 DA +12:16:25.240 RX frame 006 00 00 00 00 80 DA +12:16:25.492 RX frame 006 00 00 00 00 80 DA +12:16:25.745 RX frame 006 00 00 00 00 80 DA +12:16:25.947 TX cmd 0x0F frame 006 00 00 0F 00 80 D5 +12:16:26.451 RX frame 006 00 00 00 00 80 DA +12:16:26.955 TX cmd 0x10 frame 006 00 00 10 00 80 CA +12:16:27.157 RX frame 006 00 00 00 00 80 DA +12:16:27.408 RX frame 006 00 00 00 00 80 DA +12:16:27.662 RX frame 006 00 00 00 00 80 DA +12:16:27.914 RX frame 006 00 00 00 00 80 DA +12:16:27.965 TX cmd 0x11 frame 006 00 00 11 00 80 CB +12:16:28.015 RX frame 006 00 00 00 00 80 DA +12:16:28.267 RX frame 006 00 00 00 00 80 DA +12:16:28.519 RX frame 006 00 00 00 00 80 DA +12:16:28.771 RX frame 006 00 00 00 00 80 DA +12:16:28.973 TX cmd 0x12 frame 006 00 00 12 00 80 C8 +12:16:29.025 RX frame 006 00 00 00 00 80 DA +12:16:29.278 RX frame 006 00 00 00 00 80 DA +12:16:29.531 RX frame 006 00 00 00 00 80 DA +12:16:29.782 RX frame 006 00 00 00 00 80 DA +12:16:29.984 TX cmd 0x13 frame 006 00 00 13 00 80 C9 +12:16:30.036 RX frame 006 00 00 00 00 80 DA +12:16:30.289 RX frame 006 00 00 00 00 80 DA +12:16:30.543 RX frame 006 00 00 00 00 80 DA +12:16:30.796 RX frame 006 00 00 00 00 80 DA +12:16:30.998 TX cmd 0x14 frame 006 00 00 14 00 80 CE +12:16:31.049 RX frame 006 00 00 00 00 80 DA +12:16:31.306 RX frame 006 00 00 00 00 80 DA +12:16:31.559 RX frame 006 00 00 00 00 80 DA +12:16:31.811 RX frame 006 00 00 00 00 80 DA +12:16:32.013 TX cmd 0x15 frame 006 00 00 15 00 80 CF +12:16:32.064 RX frame 006 00 00 00 00 80 DA +12:16:32.316 RX frame 006 00 00 00 00 80 DA +12:16:32.569 RX frame 006 00 00 00 00 80 DA +12:16:32.822 RX frame 006 00 00 00 00 80 DA +12:16:33.023 TX cmd 0x16 frame 006 00 00 16 00 80 CC +12:16:33.073 RX frame 006 00 00 00 00 80 DA +12:16:33.327 RX frame 006 00 00 00 00 80 DA +12:16:33.579 RX frame 006 00 00 00 00 80 DA +12:16:33.832 RX frame 006 00 00 00 00 80 DA +12:16:34.034 TX cmd 0x17 frame 006 00 00 17 00 80 CD +12:16:34.086 RX frame 006 00 00 00 00 80 DA +12:16:34.339 RX frame 006 00 00 00 00 80 DA +12:16:34.592 RX frame 006 00 00 00 00 80 DA +12:16:34.844 RX frame 006 00 00 00 00 80 DA +12:16:35.048 TX cmd 0x18 frame 006 00 00 18 00 80 C2 +12:16:35.098 RX frame 006 00 00 00 00 80 DA +12:16:35.350 RX frame 006 00 00 00 00 80 DA +12:16:35.603 RX frame 006 00 00 00 00 80 DA +12:16:35.857 RX frame 006 00 00 00 00 80 DA +12:16:36.059 TX cmd 0x19 frame 006 00 00 19 00 80 C3 +12:16:36.110 RX frame 006 00 00 00 00 80 DA +12:16:36.362 RX frame 006 00 00 00 00 80 DA +12:16:36.614 RX frame 006 00 00 00 00 80 DA +12:16:36.867 RX frame 006 00 00 00 00 80 DA +12:16:37.068 TX cmd 0x1A frame 006 00 00 1A 00 80 C0 +12:16:37.119 RX frame 006 00 00 00 00 80 DA +12:16:37.372 RX frame 006 00 00 00 00 80 DA +12:16:37.625 RX frame 006 00 00 00 00 80 DA +12:16:37.877 RX frame 006 00 00 00 00 80 DA +12:16:38.079 TX cmd 0x1B frame 006 00 00 1B 00 80 C1 +12:16:38.130 RX frame 006 00 00 00 00 80 DA +12:16:38.382 RX frame 006 00 00 00 00 80 DA +12:16:38.636 RX frame 006 00 00 00 00 80 DA +12:16:38.889 RX frame 006 00 00 00 00 80 DA +12:16:39.090 TX cmd 0x1C frame 006 00 00 1C 00 80 C6 +12:16:39.142 RX frame 006 00 00 00 00 80 DA +12:16:39.396 RX frame 006 00 00 00 00 80 DA +12:16:39.648 RX frame 006 00 00 00 00 80 DA +12:16:39.901 RX frame 006 00 00 00 00 80 DA +12:16:40.103 TX cmd 0x1D frame 006 00 00 1D 00 80 C7 +12:16:40.155 RX frame 006 00 00 00 00 80 DA +12:16:40.407 RX frame 006 00 00 00 00 80 DA +12:16:40.658 RX frame 006 00 00 00 00 80 DA +12:16:40.909 RX frame 006 00 00 00 00 80 DA +12:16:41.111 TX cmd 0x1E frame 006 00 00 1E 00 80 C4 +12:16:41.161 RX frame 006 00 00 00 00 80 DA +12:16:41.413 RX frame 006 00 00 00 00 80 DA +12:16:41.664 RX frame 006 00 00 00 00 80 DA +12:16:41.917 RX frame 006 00 00 00 00 80 DA +12:16:42.120 TX cmd 0x1F frame 006 00 00 1F 00 80 C5 +12:16:42.575 RX frame 006 00 00 00 00 80 DA +12:16:43.129 TX cmd 0x20 frame 006 00 00 20 00 80 FA +12:16:43.229 RX frame 006 00 00 00 00 80 DA +12:16:43.938 RX frame 006 00 00 00 00 80 DA +12:16:44.643 RX frame 006 00 00 00 00 80 DA +12:16:45.350 RX frame 006 00 00 00 00 80 DA +12:16:46.055 RX frame 006 00 00 00 00 80 DA +12:16:46.762 RX frame 006 00 00 00 00 80 DA diff --git a/captures/rcp-sweep-cmd-0c-14-screen.txt b/captures/rcp-sweep-cmd-0c-14-screen.txt new file mode 100644 index 0000000..94f7963 --- /dev/null +++ b/captures/rcp-sweep-cmd-0c-14-screen.txt @@ -0,0 +1,171 @@ +Sweeping commands 0x0C-0x14 on COM5 at 38400 8N1 +12:18:44.384 RX frame 006 00 00 00 00 80 DA +12:18:45.091 RX frame 006 00 00 00 00 80 DA +12:18:45.242 TX cmd 0x0C frame 006 00 00 0C 00 80 D6 +12:18:45.748 RX frame 006 00 00 00 00 80 DA +12:18:46.000 RX frame 006 00 00 00 00 80 DA +12:18:46.252 RX frame 006 00 00 00 00 80 DA +12:19:03.561 SCREEN cmd 0x0C CONNECT not ACT +12:19:03.561 TX cmd 0x0D frame 006 00 00 0D 00 80 D7 +12:19:03.561 RX frame 006 00 00 00 00 80 DA +12:19:03.562 RX frame 006 00 00 00 00 80 DA +12:19:03.562 RX frame 006 00 00 00 00 80 DA +12:19:03.563 RX frame 006 00 00 00 00 80 DA +12:19:03.563 RX frame 006 00 00 00 00 80 DA +12:19:03.563 RX frame 006 00 00 00 00 80 DA +12:19:03.563 RX frame 006 00 00 00 00 80 DA +12:19:03.563 RX frame 006 00 00 00 00 80 DA +12:19:03.563 RX frame 006 00 00 00 00 80 DA +12:19:03.564 RX frame 006 00 00 00 00 80 DA +12:19:03.564 RX frame 006 00 00 00 00 80 DA +12:19:03.564 RX frame 006 00 00 00 00 80 DA +12:19:03.564 RX frame 006 00 00 00 00 80 DA +12:19:03.564 RX frame 006 00 00 00 00 80 DA +12:19:03.564 RX frame 006 00 00 00 00 80 DA +12:19:03.564 RX frame 006 00 00 00 00 80 DA +12:19:03.564 RX frame 006 00 00 00 00 80 DA +12:19:03.564 RX frame 006 00 00 00 00 80 DA +12:19:03.564 RX frame 006 00 00 00 00 80 DA +12:19:03.564 RX frame 006 00 00 00 00 80 DA +12:19:03.564 RX frame 006 00 00 00 00 80 DA +12:19:03.615 RX frame 006 00 00 00 00 80 DA +12:19:03.615 RX frame 006 00 00 00 00 80 DA +12:19:03.615 RX frame 006 00 00 00 00 80 DA +12:19:03.615 RX frame 006 00 00 00 00 80 DA +12:19:03.615 RX frame 006 00 00 00 00 80 DA +12:19:03.766 RX frame 006 00 00 00 00 80 DA +12:19:04.018 RX frame 006 00 00 00 00 80 DA +12:19:04.270 RX frame 006 00 00 00 00 80 DA +12:19:04.522 RX frame 006 00 00 00 00 80 DA +12:19:04.774 RX frame 006 00 00 00 00 80 DA +12:19:13.933 SCREEN cmd 0x0D CONNECT NOT ACT +12:19:13.934 TX cmd 0x0E frame 006 00 00 0E 00 80 D4 +12:19:13.934 RX frame 006 00 00 00 00 80 DA +12:19:13.935 RX frame 006 00 00 00 00 80 DA +12:19:13.935 RX frame 006 00 00 00 00 80 DA +12:19:13.935 RX frame 006 00 00 00 00 80 DA +12:19:13.935 RX frame 006 00 00 00 00 80 DA +12:19:13.935 RX frame 006 00 00 00 00 80 DA +12:19:13.935 RX frame 006 00 00 00 00 80 DA +12:19:13.935 RX frame 006 00 00 00 00 80 DA +12:19:13.935 RX frame 006 00 00 00 00 80 DA +12:19:13.936 RX frame 006 00 00 00 00 80 DA +12:19:13.987 RX frame 006 00 00 00 00 80 DA +12:19:13.987 RX frame 006 00 00 00 00 80 DA +12:19:13.987 RX frame 006 00 00 00 00 80 DA +12:19:13.987 RX frame 006 00 00 00 00 80 DA +12:19:13.987 RX frame 006 00 00 00 00 80 DA +12:19:14.594 RX frame 006 00 00 00 00 80 DA +12:19:19.941 TX cmd 0x0F frame 006 00 00 0F 00 80 D5 +12:19:19.993 RX frame 006 00 00 00 00 80 DA +12:19:19.993 RX frame 006 00 00 00 00 80 DA +12:19:19.993 RX frame 006 00 00 00 00 80 DA +12:19:19.993 RX frame 006 00 00 00 00 80 DA +12:19:19.993 RX frame 006 00 00 00 00 80 DA +12:19:19.993 RX frame 006 00 00 00 00 80 DA +12:19:19.993 RX frame 006 00 00 00 00 80 DA +12:19:20.196 RX frame 006 00 00 00 00 80 DA +12:19:20.853 RX frame 006 00 00 00 00 80 DA +12:19:24.283 TX cmd 0x10 frame 006 00 00 10 00 80 CA +12:19:24.334 RX frame 006 00 00 00 00 80 DA +12:19:24.334 RX frame 006 00 00 00 00 80 DA +12:19:24.334 RX frame 006 00 00 00 00 80 DA +12:19:24.334 RX frame 006 00 00 00 00 80 DA +12:19:24.384 RX frame 006 00 00 00 00 80 DA +12:19:24.636 RX frame 006 00 00 00 00 80 DA +12:19:24.889 RX frame 006 00 00 00 00 80 DA +12:19:25.142 RX frame 006 00 00 00 00 80 DA +12:19:25.394 RX frame 006 00 00 00 00 80 DA +12:19:33.803 SCREEN cmd 0x10 CONNECT NOT ACT +12:19:33.803 TX cmd 0x11 frame 006 00 00 11 00 80 CB +12:19:33.804 RX frame 006 00 00 00 00 80 DA +12:19:33.804 RX frame 006 00 00 00 00 80 DA +12:19:33.804 RX frame 006 00 00 00 00 80 DA +12:19:33.804 RX frame 006 00 00 00 00 80 DA +12:19:33.804 RX frame 006 00 00 00 00 80 DA +12:19:33.804 RX frame 006 00 00 00 00 80 DA +12:19:33.804 RX frame 006 00 00 00 00 80 DA +12:19:33.804 RX frame 006 00 00 00 00 80 DA +12:19:33.804 RX frame 006 00 00 00 00 80 DA +12:19:33.804 RX frame 006 00 00 00 00 80 DA +12:19:33.855 RX frame 006 00 00 00 00 80 DA +12:19:33.855 RX frame 006 00 00 00 00 80 DA +12:19:33.855 RX frame 006 00 00 00 00 80 DA +12:19:33.855 RX frame 006 00 00 00 00 80 DA +12:19:34.461 RX frame 006 00 00 00 00 80 DA +12:19:34.715 RX frame 006 00 00 00 00 80 DA +12:19:34.967 RX frame 006 00 00 00 00 80 DA +12:19:42.513 SCREEN cmd 0x11 CONNECT NOT ACT +12:19:42.514 TX cmd 0x12 frame 006 00 00 12 00 80 C8 +12:19:42.515 RX frame 006 00 00 00 00 80 DA +12:19:42.515 RX frame 006 00 00 00 00 80 DA +12:19:42.515 RX frame 006 00 00 00 00 80 DA +12:19:42.515 RX frame 006 00 00 00 00 80 DA +12:19:42.515 RX frame 006 00 00 00 00 80 DA +12:19:42.515 RX frame 006 00 00 00 00 80 DA +12:19:42.515 RX frame 006 00 00 00 00 80 DA +12:19:42.515 RX frame 006 00 00 00 00 80 DA +12:19:42.515 RX frame 006 00 00 00 00 80 DA +12:19:42.515 RX frame 006 00 00 00 00 80 DA +12:19:42.565 RX frame 006 00 00 00 00 80 DA +12:19:42.565 RX frame 006 00 00 00 00 80 DA +12:19:42.667 RX frame 006 00 00 00 00 80 DA +12:19:42.920 RX frame 006 00 00 00 00 80 DA +12:19:43.173 RX frame 006 00 00 00 00 80 DA +12:19:43.425 RX frame 006 00 00 00 00 80 DA +12:19:43.678 RX frame 006 00 00 00 00 80 DA +12:19:51.420 SCREEN cmd 0x12 CONNECT NOT ACT +12:19:51.420 TX cmd 0x13 frame 006 00 00 13 00 80 C9 +12:19:51.421 RX frame 006 00 00 00 00 80 DA +12:19:51.422 RX frame 006 00 00 00 00 80 DA +12:19:51.422 RX frame 006 00 00 00 00 80 DA +12:19:51.422 RX frame 006 00 00 00 00 80 DA +12:19:51.422 RX frame 006 00 00 00 00 80 DA +12:19:51.422 RX frame 006 00 00 00 00 80 DA +12:19:51.422 RX frame 006 00 00 00 00 80 DA +12:19:51.423 RX frame 006 00 00 00 00 80 DA +12:19:51.423 RX frame 006 00 00 00 00 80 DA +12:19:51.423 RX frame 006 00 00 00 00 80 DA +12:19:51.474 RX frame 006 00 00 00 00 80 DA +12:19:51.474 RX frame 006 00 00 00 00 80 DA +12:19:51.474 RX frame 006 00 00 00 00 80 DA +12:19:52.083 RX frame 006 00 00 00 00 80 DA +12:19:52.334 RX frame 006 00 00 00 00 80 DA +12:19:52.586 RX frame 006 00 00 00 00 80 DA +12:20:02.062 SCREEN cmd 0x13 CONNECT NOT ACT +12:20:02.062 TX cmd 0x14 frame 006 00 00 14 00 80 CE +12:20:02.062 RX frame 006 00 00 00 00 80 DA +12:20:02.062 RX frame 006 00 00 00 00 80 DA +12:20:02.063 RX frame 006 00 00 00 00 80 DA +12:20:02.063 RX frame 006 00 00 00 00 80 DA +12:20:02.063 RX frame 006 00 00 00 00 80 DA +12:20:02.063 RX frame 006 00 00 00 00 80 DA +12:20:02.063 RX frame 006 00 00 00 00 80 DA +12:20:02.063 RX frame 006 00 00 00 00 80 DA +12:20:02.063 RX frame 006 00 00 00 00 80 DA +12:20:02.063 RX frame 006 00 00 00 00 80 DA +12:20:02.113 RX frame 006 00 00 00 00 80 DA +12:20:02.113 RX frame 006 00 00 00 00 80 DA +12:20:02.113 RX frame 006 00 00 00 00 80 DA +12:20:02.113 RX frame 006 00 00 00 00 80 DA +12:20:02.113 RX frame 006 00 00 00 00 80 DA +12:20:02.366 RX frame 006 00 00 00 00 80 DA +12:20:02.618 RX frame 006 00 00 00 00 80 DA +12:20:02.871 RX frame 006 00 00 00 00 80 DA +12:20:03.123 RX frame 006 00 00 00 00 80 DA +12:20:09.899 SCREEN cmd 0x14 CONNECT NOT ACT +12:20:09.900 RX frame 006 00 00 00 00 80 DA +12:20:09.900 RX frame 006 00 00 00 00 80 DA +12:20:09.900 RX frame 006 00 00 00 00 80 DA +12:20:09.900 RX frame 006 00 00 00 00 80 DA +12:20:09.900 RX frame 006 00 00 00 00 80 DA +12:20:09.900 RX frame 006 00 00 00 00 80 DA +12:20:09.900 RX frame 006 00 00 00 00 80 DA +12:20:09.900 RX frame 006 00 00 00 00 80 DA +12:20:09.900 RX frame 006 00 00 00 00 80 DA +12:20:09.901 RX frame 006 00 00 00 00 80 DA +12:20:09.951 RX frame 006 00 00 00 00 80 DA +12:20:10.203 RX frame 006 00 00 00 00 80 DA +12:20:10.859 RX frame 006 00 00 00 00 80 DA +12:20:11.564 RX frame 006 00 00 00 00 80 DA +12:20:12.271 RX frame 006 00 00 00 00 80 DA diff --git a/captures/rcp-sweep-cmd-15-30-screen.txt b/captures/rcp-sweep-cmd-15-30-screen.txt new file mode 100644 index 0000000..4a472f9 --- /dev/null +++ b/captures/rcp-sweep-cmd-15-30-screen.txt @@ -0,0 +1,446 @@ +Sweeping commands 0x15-0x30 on COM5 at 38400 8N1 +12:24:01.190 RX frame 006 00 00 00 00 80 DA +12:24:01.896 RX frame 006 00 00 00 00 80 DA +12:24:02.602 RX frame 006 00 00 00 00 80 DA +12:24:02.652 TX cmd 0x15 frame 006 00 00 15 00 80 CF +12:24:03.310 RX frame 006 00 00 00 00 80 DA +12:24:03.562 RX frame 006 00 00 00 00 80 DA +12:24:03.814 RX frame 006 00 00 00 00 80 DA +12:24:11.510 SCREEN cmd 0x15 CONNECT NOT ACT +12:24:11.510 TX cmd 0x16 frame 006 00 00 16 00 80 CC +12:24:11.511 RX frame 006 00 00 00 00 80 DA +12:24:11.511 RX frame 006 00 00 00 00 80 DA +12:24:11.511 RX frame 006 00 00 00 00 80 DA +12:24:11.511 RX frame 006 00 00 00 00 80 DA +12:24:11.511 RX frame 006 00 00 00 00 80 DA +12:24:11.512 RX frame 006 00 00 00 00 80 DA +12:24:11.512 RX frame 006 00 00 00 00 80 DA +12:24:11.512 RX frame 006 00 00 00 00 80 DA +12:24:11.512 RX frame 006 00 00 00 00 80 DA +12:24:11.512 RX frame 006 00 00 00 00 80 DA +12:24:11.563 RX frame 006 00 00 00 00 80 DA +12:24:11.563 RX frame 006 00 00 00 00 80 DA +12:24:11.563 RX frame 006 00 00 00 00 80 DA +12:24:12.219 RX frame 006 00 00 00 00 80 DA +12:24:12.472 RX frame 006 00 00 00 00 80 DA +12:24:12.725 RX frame 006 00 00 00 00 80 DA +Sweeping commands 0x15-0x30 on COM5 at 38400 8N1 +12:24:19.020 RX frame 006 00 00 00 00 80 DA +12:24:19.725 RX frame 006 00 00 00 00 80 DA +12:24:20.431 RX frame 006 00 00 00 00 80 DA +12:24:20.481 TX cmd 0x15 frame 006 00 00 15 00 80 CF +12:24:21.139 RX frame 006 00 00 00 00 80 DA +12:24:21.392 RX frame 006 00 00 00 00 80 DA +12:24:21.645 RX frame 006 00 00 00 00 80 DA +12:24:30.740 SCREEN cmd 0x15 CONNECT NOT ACT +12:24:30.740 TX cmd 0x16 frame 006 00 00 16 00 80 CC +12:24:30.740 RX frame 006 00 00 00 00 80 DA +12:24:30.741 RX frame 006 00 00 00 00 80 DA +12:24:30.741 RX frame 006 00 00 00 00 80 DA +12:24:30.741 RX frame 006 00 00 00 00 80 DA +12:24:30.741 RX frame 006 00 00 00 00 80 DA +12:24:30.741 RX frame 006 00 00 00 00 80 DA +12:24:30.741 RX frame 006 00 00 00 00 80 DA +12:24:30.741 RX frame 006 00 00 00 00 80 DA +12:24:30.741 RX frame 006 00 00 00 00 80 DA +12:24:30.741 RX frame 006 00 00 00 00 80 DA +12:24:30.792 RX frame 006 00 00 00 00 80 DA +12:24:30.792 RX frame 006 00 00 00 00 80 DA +12:24:30.792 RX frame 006 00 00 00 00 80 DA +12:24:30.792 RX frame 006 00 00 00 00 80 DA +12:24:30.792 RX frame 006 00 00 00 00 80 DA +12:24:31.399 RX frame 006 00 00 00 00 80 DA +12:24:31.650 RX frame 006 00 00 00 00 80 DA +12:24:31.901 RX frame 006 00 00 00 00 80 DA +12:24:41.410 SCREEN cmd 0x16 CONNECT NOT ACT +12:24:41.410 TX cmd 0x17 frame 006 00 00 17 00 80 CD +12:24:41.411 RX frame 006 00 00 00 00 80 DA +12:24:41.411 RX frame 006 00 00 00 00 80 DA +12:24:41.412 RX frame 006 00 00 00 00 80 DA +12:24:41.412 RX frame 006 00 00 00 00 80 DA +12:24:41.412 RX frame 006 00 00 00 00 80 DA +12:24:41.412 RX frame 006 00 00 00 00 80 DA +12:24:41.412 RX frame 006 00 00 00 00 80 DA +12:24:41.412 RX frame 006 00 00 00 00 80 DA +12:24:41.412 RX frame 006 00 00 00 00 80 DA +12:24:41.412 RX frame 006 00 00 00 00 80 DA +12:24:41.463 RX frame 006 00 00 00 00 80 DA +12:24:41.463 RX frame 006 00 00 00 00 80 DA +12:24:41.463 RX frame 006 00 00 00 00 80 DA +12:24:41.463 RX frame 006 00 00 00 00 80 DA +12:24:41.463 RX frame 006 00 00 00 00 80 DA +12:24:41.717 RX frame 006 00 00 00 00 80 DA +12:24:41.968 RX frame 006 00 00 00 00 80 DA +12:24:42.220 RX frame 006 00 00 00 00 80 DA +12:24:42.473 RX frame 006 00 00 00 00 80 DA +12:24:50.364 SCREEN cmd 0x17 CONECT NOT ACT +12:24:50.365 TX cmd 0x18 frame 006 00 00 18 00 80 C2 +12:24:50.365 RX frame 006 00 00 00 00 80 DA +12:24:50.365 RX frame 006 00 00 00 00 80 DA +12:24:50.365 RX frame 006 00 00 00 00 80 DA +12:24:50.365 RX frame 006 00 00 00 00 80 DA +12:24:50.365 RX frame 006 00 00 00 00 80 DA +12:24:50.365 RX frame 006 00 00 00 00 80 DA +12:24:50.365 RX frame 006 00 00 00 00 80 DA +12:24:50.365 RX frame 006 00 00 00 00 80 DA +12:24:50.366 RX frame 006 00 00 00 00 80 DA +12:24:50.366 RX frame 006 00 00 00 00 80 DA +12:24:50.417 RX frame 006 00 00 00 00 80 DA +12:24:50.417 RX frame 006 00 00 00 00 80 DA +12:24:50.417 RX frame 006 00 00 00 00 80 DA +12:24:50.920 RX frame 006 00 00 00 00 80 DA +12:24:51.173 RX frame 006 00 00 00 00 80 DA +12:24:51.425 RX frame 006 00 00 00 00 80 DA +12:25:00.326 SCREEN cmd 0x18 CONNECT NOT ACT +12:25:00.326 TX cmd 0x19 frame 006 00 00 19 00 80 C3 +12:25:00.326 RX frame 006 00 00 00 00 80 DA +12:25:00.326 RX frame 006 00 00 00 00 80 DA +12:25:00.326 RX frame 006 00 00 00 00 80 DA +12:25:00.326 RX frame 006 00 00 00 00 80 DA +12:25:00.326 RX frame 006 00 00 00 00 80 DA +12:25:00.327 RX frame 006 00 00 00 00 80 DA +12:25:00.327 RX frame 006 00 00 00 00 80 DA +12:25:00.327 RX frame 006 00 00 00 00 80 DA +12:25:00.327 RX frame 006 00 00 00 00 80 DA +12:25:00.327 RX frame 006 00 00 00 00 80 DA +12:25:00.378 RX frame 006 00 00 00 00 80 DA +12:25:00.378 RX frame 006 00 00 00 00 80 DA +12:25:00.378 RX frame 006 00 00 00 00 80 DA +12:25:00.379 RX frame 006 00 00 00 00 80 DA +12:25:00.530 RX frame 006 00 00 00 00 80 DA +12:25:00.785 RX frame 006 00 00 00 00 80 DA +12:25:01.036 RX frame 006 00 00 00 00 80 DA +12:25:01.289 RX frame 006 00 00 00 00 80 DA +12:25:01.540 RX frame 006 00 00 00 00 80 DA +12:25:10.813 SCREEN cmd 0x19 CONNECT NOT ACT +12:25:10.813 TX cmd 0x1A frame 006 00 00 1A 00 80 C0 +12:25:10.813 RX frame 006 00 00 00 00 80 DA +12:25:10.814 RX frame 006 00 00 00 00 80 DA +12:25:10.814 RX frame 006 00 00 00 00 80 DA +12:25:10.814 RX frame 006 00 00 00 00 80 DA +12:25:10.814 RX frame 006 00 00 00 00 80 DA +12:25:10.814 RX frame 006 00 00 00 00 80 DA +12:25:10.814 RX frame 006 00 00 00 00 80 DA +12:25:10.814 RX frame 006 00 00 00 00 80 DA +12:25:10.814 RX frame 006 00 00 00 00 80 DA +12:25:10.814 RX frame 006 00 00 00 00 80 DA +12:25:10.864 RX frame 006 00 00 00 00 80 DA +12:25:10.864 RX frame 006 00 00 00 00 80 DA +12:25:10.864 RX frame 006 00 00 00 00 80 DA +12:25:10.864 RX frame 006 00 00 00 00 80 DA +12:25:10.864 RX frame 006 00 00 00 00 80 DA +12:25:11.318 RX frame 006 00 00 00 00 80 DA +12:25:11.570 RX frame 006 00 00 00 00 80 DA +12:25:11.822 RX frame 006 00 00 00 00 80 DA +12:25:20.870 SCREEN cmd 0x1A CONNECT NOT ACT +12:25:20.871 TX cmd 0x1B frame 006 00 00 1B 00 80 C1 +12:25:20.871 RX frame 006 00 00 00 00 80 DA +12:25:20.871 RX frame 006 00 00 00 00 80 DA +12:25:20.871 RX frame 006 00 00 00 00 80 DA +12:25:20.871 RX frame 006 00 00 00 00 80 DA +12:25:20.872 RX frame 006 00 00 00 00 80 DA +12:25:20.872 RX frame 006 00 00 00 00 80 DA +12:25:20.872 RX frame 006 00 00 00 00 80 DA +12:25:20.872 RX frame 006 00 00 00 00 80 DA +12:25:20.872 RX frame 006 00 00 00 00 80 DA +12:25:20.872 RX frame 006 00 00 00 00 80 DA +12:25:20.922 RX frame 006 00 00 00 00 80 DA +12:25:20.922 RX frame 006 00 00 00 00 80 DA +12:25:20.922 RX frame 006 00 00 00 00 80 DA +12:25:20.922 RX frame 006 00 00 00 00 80 DA +12:25:20.922 RX frame 006 00 00 00 00 80 DA +12:25:21.174 RX frame 006 00 00 00 00 80 DA +12:25:21.427 RX frame 006 00 00 00 00 80 DA +12:25:21.679 RX frame 006 00 00 00 00 80 DA +12:25:21.931 RX frame 006 00 00 00 00 80 DA +12:25:30.579 SCREEN cmd 0x1B CONNECT NOT ACT +12:25:30.580 TX cmd 0x1C frame 006 00 00 1C 00 80 C6 +12:25:30.580 RX frame 006 00 00 00 00 80 DA +12:25:30.580 RX frame 006 00 00 00 00 80 DA +12:25:30.581 RX frame 006 00 00 00 00 80 DA +12:25:30.581 RX frame 006 00 00 00 00 80 DA +12:25:30.581 RX frame 006 00 00 00 00 80 DA +12:25:30.581 RX frame 006 00 00 00 00 80 DA +12:25:30.581 RX frame 006 00 00 00 00 80 DA +12:25:30.581 RX frame 006 00 00 00 00 80 DA +12:25:30.581 RX frame 006 00 00 00 00 80 DA +12:25:30.582 RX frame 006 00 00 00 00 80 DA +12:25:30.633 RX frame 006 00 00 00 00 80 DA +12:25:30.633 RX frame 006 00 00 00 00 80 DA +12:25:30.633 RX frame 006 00 00 00 00 80 DA +12:25:30.634 RX frame 006 00 00 00 00 80 DA +12:25:31.038 RX frame 006 00 00 00 00 80 DA +12:25:31.290 RX frame 006 00 00 00 00 80 DA +12:25:31.543 RX frame 006 00 00 00 00 80 DA +12:25:31.796 RX frame 006 00 00 00 00 80 DA +12:25:39.051 SCREEN cmd 0x1C CONNECT NOT ACT +12:25:39.051 TX cmd 0x1D frame 006 00 00 1D 00 80 C7 +12:25:39.051 RX frame 006 00 00 00 00 80 DA +12:25:39.051 RX frame 006 00 00 00 00 80 DA +12:25:39.052 RX frame 006 00 00 00 00 80 DA +12:25:39.052 RX frame 006 00 00 00 00 80 DA +12:25:39.052 RX frame 006 00 00 00 00 80 DA +12:25:39.052 RX frame 006 00 00 00 00 80 DA +12:25:39.052 RX frame 006 00 00 00 00 80 DA +12:25:39.052 RX frame 006 00 00 00 00 80 DA +12:25:39.052 RX frame 006 00 00 00 00 80 DA +12:25:39.052 RX frame 006 00 00 00 00 80 DA +12:25:39.102 RX frame 006 00 00 00 00 80 DA +12:25:39.253 RX frame 006 00 00 00 00 80 DA +12:25:39.505 RX frame 006 00 00 00 00 80 DA +12:25:39.708 RX frame 006 00 00 00 00 80 DA +12:25:39.959 RX frame 006 00 00 00 00 80 DA +12:25:40.212 RX frame 006 00 00 00 00 80 DA +12:25:48.864 SCREEN cmd 0x1D CONNECT NOT ACT +12:25:48.865 TX cmd 0x1E frame 006 00 00 1E 00 80 C4 +12:25:48.867 RX frame 006 00 00 00 00 80 DA +12:25:48.867 RX frame 006 00 00 00 00 80 DA +12:25:48.867 RX frame 006 00 00 00 00 80 DA +12:25:48.867 RX frame 006 00 00 00 00 80 DA +12:25:48.867 RX frame 006 00 00 00 00 80 DA +12:25:48.867 RX frame 006 00 00 00 00 80 DA +12:25:48.867 RX frame 006 00 00 00 00 80 DA +12:25:48.867 RX frame 006 00 00 00 00 80 DA +12:25:48.867 RX frame 006 00 00 00 00 80 DA +12:25:48.868 RX frame 006 00 00 00 00 80 DA +12:25:48.919 RX frame 006 00 00 00 00 80 DA +12:25:48.919 RX frame 006 00 00 00 00 80 DA +12:25:48.919 RX frame 006 00 00 00 00 80 DA +12:25:48.919 RX frame 006 00 00 00 00 80 DA +12:25:49.323 RX frame 006 00 00 00 00 80 DA +12:25:50.028 RX frame 006 00 00 00 00 80 DA +12:25:55.659 TX cmd 0x1F frame 006 00 00 1F 00 80 C5 +12:25:55.710 RX frame 006 00 00 00 00 80 DA +12:25:55.710 RX frame 006 00 00 00 00 80 DA +12:25:55.710 RX frame 006 00 00 00 00 80 DA +12:25:55.710 RX frame 006 00 00 00 00 80 DA +12:25:55.711 RX frame 006 00 00 00 00 80 DA +12:25:55.711 RX frame 006 00 00 00 00 80 DA +12:25:55.711 RX frame 006 00 00 00 00 80 DA +12:25:55.711 RX frame 006 00 00 00 00 80 DA +12:25:56.315 RX frame 006 00 00 00 00 80 DA +12:26:02.498 TX cmd 0x20 frame 006 00 00 20 00 80 FA +12:26:02.549 RX frame 006 00 00 00 00 80 DA +12:26:02.549 RX frame 006 00 00 00 00 80 DA +12:26:02.549 RX frame 006 00 00 00 00 80 DA +12:26:02.549 RX frame 006 00 00 00 00 80 DA +12:26:02.549 RX frame 006 00 00 00 00 80 DA +12:26:02.549 RX frame 006 00 00 00 00 80 DA +12:26:02.549 RX frame 006 00 00 00 00 80 DA +12:26:02.549 RX frame 006 00 00 00 00 80 DA +12:26:02.650 RX frame 006 00 00 00 00 80 DA +12:26:03.355 RX frame 006 00 00 00 00 80 DA +12:26:06.522 TX cmd 0x21 frame 006 00 00 21 00 80 FB +12:26:06.572 RX frame 006 00 00 00 00 80 DA +12:26:06.572 RX frame 006 00 00 00 00 80 DA +12:26:06.572 RX frame 006 00 00 00 00 80 DA +12:26:06.572 RX frame 006 00 00 00 00 80 DA +12:26:06.823 RX frame 006 00 00 00 00 80 DA +12:26:07.529 RX frame 006 00 00 00 00 80 DA +12:26:10.573 TX cmd 0x22 frame 006 00 00 22 00 80 F8 +12:26:10.623 RX frame 006 00 00 00 00 80 DA +12:26:10.623 RX frame 006 00 00 00 00 80 DA +12:26:10.623 RX frame 006 00 00 00 00 80 DA +12:26:10.623 RX frame 006 00 00 00 00 80 DA +12:26:11.026 RX frame 006 00 00 00 00 80 DA +12:26:11.732 RX frame 006 00 00 00 00 80 DA +12:26:15.634 TX cmd 0x23 frame 006 00 00 23 00 80 F9 +12:26:15.685 RX frame 006 00 00 00 00 80 DA +12:26:15.685 RX frame 006 00 00 00 00 80 DA +12:26:15.685 RX frame 006 00 00 00 00 80 DA +12:26:15.685 RX frame 006 00 00 00 00 80 DA +12:26:15.686 RX frame 006 00 00 00 00 80 DA +12:26:15.939 RX frame 006 00 00 00 00 80 DA +12:26:16.644 RX frame 006 00 00 00 00 80 DA +12:26:20.967 TX cmd 0x24 frame 006 00 00 24 00 80 FE +12:26:21.018 RX frame 006 00 00 00 00 80 DA +12:26:21.018 RX frame 006 00 00 00 00 80 DA +12:26:21.018 RX frame 006 00 00 00 00 80 DA +12:26:21.018 RX frame 006 00 00 00 00 80 DA +12:26:21.018 RX frame 006 00 00 00 00 80 DA +12:26:21.018 RX frame 006 00 00 00 00 80 DA +12:26:21.521 RX frame 006 00 00 00 00 80 DA +12:26:29.048 TX cmd 0x25 frame 006 00 00 25 00 80 FF +12:26:29.100 RX frame 006 00 00 00 00 80 DA +12:26:29.100 RX frame 006 00 00 00 00 80 DA +12:26:29.100 RX frame 006 00 00 00 00 80 DA +12:26:29.100 RX frame 006 00 00 00 00 80 DA +12:26:29.100 RX frame 006 00 00 00 00 80 DA +12:26:29.100 RX frame 006 00 00 00 00 80 DA +12:26:29.100 RX frame 006 00 00 00 00 80 DA +12:26:29.100 RX frame 006 00 00 00 00 80 DA +12:26:29.100 RX frame 006 00 00 00 00 80 DA +12:26:29.100 RX frame 006 00 00 00 00 80 DA +12:26:29.251 RX frame 006 00 00 00 00 80 DA +12:26:29.957 RX frame 006 00 00 00 00 80 DA +12:26:33.686 TX cmd 0x26 frame 006 00 00 26 00 80 FC +12:26:33.737 RX frame 006 00 00 00 00 80 DA +12:26:33.737 RX frame 006 00 00 00 00 80 DA +12:26:33.737 RX frame 006 00 00 00 00 80 DA +12:26:33.737 RX frame 006 00 00 00 00 80 DA +12:26:33.737 RX frame 006 00 00 00 00 80 DA +12:26:34.141 RX frame 006 00 00 00 00 80 DA +12:26:34.849 RX frame 006 00 00 00 00 80 DA +12:26:38.924 TX cmd 0x27 frame 006 00 00 27 00 80 FD +12:26:38.975 RX frame 006 00 00 00 00 80 DA +12:26:38.975 RX frame 006 00 00 00 00 80 DA +12:26:38.975 RX frame 006 00 00 00 00 80 DA +12:26:38.975 RX frame 006 00 00 00 00 80 DA +12:26:38.975 RX frame 006 00 00 00 00 80 DA +12:26:39.026 RX frame 006 00 00 00 00 80 DA +12:26:39.733 RX frame 006 00 00 00 00 80 DA +12:26:43.741 TX cmd 0x28 frame 006 00 00 28 00 80 F2 +12:26:43.793 RX frame 006 00 00 00 00 80 DA +12:26:43.793 RX frame 006 00 00 00 00 80 DA +12:26:43.793 RX frame 006 00 00 00 00 80 DA +12:26:43.793 RX frame 006 00 00 00 00 80 DA +12:26:43.793 RX frame 006 00 00 00 00 80 DA +12:26:43.944 RX frame 006 00 00 00 00 80 DA +12:26:44.197 RX frame 006 00 00 00 00 80 DA +12:26:44.449 RX frame 006 00 00 00 00 80 DA +12:26:44.701 RX frame 006 00 00 00 00 80 DA +12:26:44.954 RX frame 006 00 00 00 00 80 DA +12:26:53.867 SCREEN cmd 0x28 CONNECT NOT ACT +12:26:53.868 TX cmd 0x29 frame 006 00 00 29 00 80 F3 +12:26:53.869 RX frame 006 00 00 00 00 80 DA +12:26:53.869 RX frame 006 00 00 00 00 80 DA +12:26:53.869 RX frame 006 00 00 00 00 80 DA +12:26:53.869 RX frame 006 00 00 00 00 80 DA +12:26:53.869 RX frame 006 00 00 00 00 80 DA +12:26:53.869 RX frame 006 00 00 00 00 80 DA +12:26:53.869 RX frame 006 00 00 00 00 80 DA +12:26:53.869 RX frame 006 00 00 00 00 80 DA +12:26:53.870 RX frame 006 00 00 00 00 80 DA +12:26:53.870 RX frame 006 00 00 00 00 80 DA +12:26:53.921 RX frame 006 00 00 00 00 80 DA +12:26:53.921 RX frame 006 00 00 00 00 80 DA +12:26:53.921 RX frame 006 00 00 00 00 80 DA +12:26:53.921 RX frame 006 00 00 00 00 80 DA +12:26:54.021 RX frame 006 00 00 00 00 80 DA +12:26:54.275 RX frame 006 00 00 00 00 80 DA +12:26:54.528 RX frame 006 00 00 00 00 80 DA +12:26:54.779 RX frame 006 00 00 00 00 80 DA +12:26:55.032 RX frame 006 00 00 00 00 80 DA +12:27:02.549 SCREEN cmd 0x29 CONNECT NOT ACT +12:27:02.549 TX cmd 0x2A frame 006 00 00 2A 00 80 F0 +12:27:02.549 RX frame 006 00 00 00 00 80 DA +12:27:02.549 RX frame 006 00 00 00 00 80 DA +12:27:02.549 RX frame 006 00 00 00 00 80 DA +12:27:02.550 RX frame 006 00 00 00 00 80 DA +12:27:02.550 RX frame 006 00 00 00 00 80 DA +12:27:02.550 RX frame 006 00 00 00 00 80 DA +12:27:02.550 RX frame 006 00 00 00 00 80 DA +12:27:02.550 RX frame 006 00 00 00 00 80 DA +12:27:02.550 RX frame 006 00 00 00 00 80 DA +12:27:02.550 RX frame 006 00 00 00 00 80 DA +12:27:02.601 RX frame 006 00 00 00 00 80 DA +12:27:02.601 RX frame 006 00 00 00 00 80 DA +12:27:02.753 RX frame 006 00 00 00 00 80 DA +12:27:03.459 RX frame 006 00 00 00 00 80 DA +12:27:08.068 TX cmd 0x2B frame 006 00 00 2B 00 80 F1 +12:27:08.118 RX frame 006 00 00 00 00 80 DA +12:27:08.118 RX frame 006 00 00 00 00 80 DA +12:27:08.118 RX frame 006 00 00 00 00 80 DA +12:27:08.118 RX frame 006 00 00 00 00 80 DA +12:27:08.118 RX frame 006 00 00 00 00 80 DA +12:27:08.118 RX frame 006 00 00 00 00 80 DA +12:27:08.321 RX frame 006 00 00 00 00 80 DA +12:27:09.030 RX frame 006 00 00 00 00 80 DA +12:27:19.808 TX cmd 0x2C frame 006 00 00 2C 00 80 F6 +12:27:19.808 RX frame 006 00 00 00 00 80 DA +12:27:19.808 RX frame 006 00 00 00 00 80 DA +12:27:19.809 RX frame 006 00 00 00 00 80 DA +12:27:19.809 RX frame 006 00 00 00 00 80 DA +12:27:19.809 RX frame 006 00 00 00 00 80 DA +12:27:19.809 RX frame 006 00 00 00 00 80 DA +12:27:19.809 RX frame 006 00 00 00 00 80 DA +12:27:19.809 RX frame 006 00 00 00 00 80 DA +12:27:19.809 RX frame 006 00 00 00 00 80 DA +12:27:19.809 RX frame 006 00 00 00 00 80 DA +12:27:19.860 RX frame 006 00 00 00 00 80 DA +12:27:19.860 RX frame 006 00 00 00 00 80 DA +12:27:19.860 RX frame 006 00 00 00 00 80 DA +12:27:19.860 RX frame 006 00 00 00 00 80 DA +12:27:19.860 RX frame 006 00 00 00 00 80 DA +12:27:20.265 RX frame 006 00 00 00 00 80 DA +12:27:20.517 RX frame 006 00 00 00 00 80 DA +12:27:20.770 RX frame 006 00 00 00 00 80 DA +12:27:21.023 RX frame 006 00 00 00 00 80 DA +12:27:28.878 SCREEN cmd 0x2C CONNECT NOT ACT +12:27:28.879 TX cmd 0x2D frame 006 00 00 2D 00 80 F7 +12:27:28.880 RX frame 006 00 00 00 00 80 DA +12:27:28.881 RX frame 006 00 00 00 00 80 DA +12:27:28.881 RX frame 006 00 00 00 00 80 DA +12:27:28.881 RX frame 006 00 00 00 00 80 DA +12:27:28.881 RX frame 006 00 00 00 00 80 DA +12:27:28.881 RX frame 006 00 00 00 00 80 DA +12:27:28.881 RX frame 006 00 00 00 00 80 DA +12:27:28.882 RX frame 006 00 00 00 00 80 DA +12:27:28.882 RX frame 006 00 00 00 00 80 DA +12:27:28.882 RX frame 006 00 00 00 00 80 DA +12:27:28.932 RX frame 006 00 00 00 00 80 DA +12:27:28.932 RX frame 006 00 00 00 00 80 DA +12:27:28.932 RX frame 006 00 00 00 00 80 DA +12:27:29.437 RX frame 006 00 00 00 00 80 DA +12:27:29.690 RX frame 006 00 00 00 00 80 DA +12:27:29.942 RX frame 006 00 00 00 00 80 DA +12:27:38.801 SCREEN cmd 0x2D CONNECT NOT ACT +12:27:38.801 TX cmd 0x2E frame 006 00 00 2E 00 80 F4 +12:27:38.803 RX frame 006 00 00 00 00 80 DA +12:27:38.803 RX frame 006 00 00 00 00 80 DA +12:27:38.803 RX frame 006 00 00 00 00 80 DA +12:27:38.803 RX frame 006 00 00 00 00 80 DA +12:27:38.803 RX frame 006 00 00 00 00 80 DA +12:27:38.804 RX frame 006 00 00 00 00 80 DA +12:27:38.804 RX frame 006 00 00 00 00 80 DA +12:27:38.804 RX frame 006 00 00 00 00 80 DA +12:27:38.804 RX frame 006 00 00 00 00 80 DA +12:27:38.804 RX frame 006 00 00 00 00 80 DA +12:27:38.854 RX frame 006 00 00 00 00 80 DA +12:27:38.854 RX frame 006 00 00 00 00 80 DA +12:27:38.854 RX frame 006 00 00 00 00 80 DA +12:27:38.854 RX frame 006 00 00 00 00 80 DA +12:27:39.056 RX frame 006 00 00 00 00 80 DA +12:27:39.763 RX frame 006 00 00 00 00 80 DA +12:27:45.820 TX cmd 0x2F frame 006 00 00 2F 00 80 F5 +12:27:45.871 RX frame 006 00 00 00 00 80 DA +12:27:45.871 RX frame 006 00 00 00 00 80 DA +12:27:45.871 RX frame 006 00 00 00 00 80 DA +12:27:45.871 RX frame 006 00 00 00 00 80 DA +12:27:45.871 RX frame 006 00 00 00 00 80 DA +12:27:45.871 RX frame 006 00 00 00 00 80 DA +12:27:45.871 RX frame 006 00 00 00 00 80 DA +12:27:45.871 RX frame 006 00 00 00 00 80 DA +12:27:46.024 RX frame 006 00 00 00 00 80 DA +12:27:46.730 RX frame 006 00 00 00 00 80 DA +12:27:50.634 TX cmd 0x30 frame 006 00 00 30 00 80 EA +12:27:50.686 RX frame 006 00 00 00 00 80 DA +12:27:50.686 RX frame 006 00 00 00 00 80 DA +12:27:50.686 RX frame 006 00 00 00 00 80 DA +12:27:50.686 RX frame 006 00 00 00 00 80 DA +12:27:50.686 RX frame 006 00 00 00 00 80 DA +12:27:50.939 RX frame 006 00 00 00 00 80 DA +12:27:51.192 RX frame 006 00 00 00 00 80 DA +12:27:51.444 RX frame 006 00 00 00 00 80 DA +12:27:51.698 RX frame 006 00 00 00 00 80 DA +12:28:01.571 SCREEN cmd 0x30 CONNECT NOT ACT +12:28:01.571 RX frame 006 00 00 00 00 80 DA +12:28:01.572 RX frame 006 00 00 00 00 80 DA +12:28:01.572 RX frame 006 00 00 00 00 80 DA +12:28:01.572 RX frame 006 00 00 00 00 80 DA +12:28:01.572 RX frame 006 00 00 00 00 80 DA +12:28:01.573 RX frame 006 00 00 00 00 80 DA +12:28:01.574 RX frame 006 00 00 00 00 80 DA +12:28:01.574 RX frame 006 00 00 00 00 80 DA +12:28:01.574 RX frame 006 00 00 00 00 80 DA +12:28:01.574 RX frame 006 00 00 00 00 80 DA +12:28:01.625 RX frame 006 00 00 00 00 80 DA +12:28:01.625 RX frame 006 00 00 00 00 80 DA +12:28:01.625 RX frame 006 00 00 00 00 80 DA +12:28:01.625 RX frame 006 00 00 00 00 80 DA +12:28:01.625 RX frame 006 00 00 00 00 80 DA +12:28:01.625 RX frame 006 00 00 00 00 80 DA +12:28:02.231 RX frame 006 00 00 00 00 80 DA +12:28:02.939 RX frame 006 00 00 00 00 80 DA +12:28:03.646 RX frame 006 00 00 00 00 80 DA +12:28:04.354 RX frame 006 00 00 00 00 80 DA diff --git a/captures/rcp-txd-idle-only.txt b/captures/rcp-txd-idle-only.txt new file mode 100644 index 0000000..de98559 --- /dev/null +++ b/captures/rcp-txd-idle-only.txt @@ -0,0 +1,54 @@ +11:54:40.567 frame 006 00 00 00 00 80 DA +11:54:41.368 frame 006 00 00 00 00 80 DA +11:54:41.970 frame 006 00 00 00 00 80 DA +11:54:42.772 frame 006 00 00 00 00 80 DA +11:54:43.373 frame 006 00 00 00 00 80 DA +11:54:44.176 frame 006 00 00 00 00 80 DA +11:54:44.778 frame 006 00 00 00 00 80 DA +11:54:45.580 frame 006 00 00 00 00 80 DA +11:54:46.183 frame 006 00 00 00 00 80 DA +11:54:46.984 frame 006 00 00 00 00 80 DA +11:54:47.586 frame 006 00 00 00 00 80 DA +11:54:48.387 frame 006 00 00 00 00 80 DA +11:54:48.988 frame 006 00 00 00 00 80 DA +11:54:49.790 frame 006 00 00 00 00 80 DA +11:54:50.393 frame 006 00 00 00 00 80 DA +11:54:51.196 frame 006 00 00 00 00 80 DA +11:54:51.797 frame 006 00 00 00 00 80 DA +11:54:52.599 frame 006 00 00 00 00 80 DA +11:54:53.201 frame 006 00 00 00 00 80 DA +11:54:54.003 frame 006 00 00 00 00 80 DA +11:54:54.604 frame 006 00 00 00 00 80 DA +11:54:55.406 frame 006 00 00 00 00 80 DA +11:54:56.009 frame 006 00 00 00 00 80 DA +11:54:56.812 frame 006 00 00 00 00 80 DA +11:54:57.413 frame 006 00 00 00 00 80 DA +11:54:58.215 frame 006 00 00 00 00 80 DA +11:54:58.816 frame 006 00 00 00 00 80 DA +11:54:59.619 frame 006 00 00 00 00 80 DA +11:55:00.220 frame 006 00 00 00 00 80 DA +11:55:01.023 frame 006 00 00 00 00 80 DA +11:55:01.625 frame 006 00 00 00 00 80 DA +11:55:02.426 frame 006 00 00 00 00 80 DA +11:55:03.027 frame 006 00 00 00 00 80 DA +11:55:03.829 frame 006 00 00 00 00 80 DA +11:55:04.430 frame 006 00 00 00 00 80 DA +11:55:05.231 frame 006 00 00 00 00 80 DA +11:55:05.832 frame 006 00 00 00 00 80 DA +11:55:06.634 frame 006 00 00 00 00 80 DA +11:55:07.235 frame 006 00 00 00 00 80 DA +11:55:07.837 frame 006 00 00 00 00 80 DA +11:55:08.638 frame 006 00 00 00 00 80 DA +11:55:09.239 frame 006 00 00 00 00 80 DA +11:55:10.040 frame 006 00 00 00 00 80 DA +11:55:10.642 frame 006 00 00 00 00 80 DA +11:55:11.443 frame 006 00 00 00 00 80 DA +11:55:12.045 frame 006 00 00 00 00 80 DA +11:55:12.848 frame 006 00 00 00 00 80 DA +11:55:13.450 frame 006 00 00 00 00 80 DA +11:55:14.253 frame 006 00 00 00 00 80 DA +11:55:14.854 frame 006 00 00 00 00 80 DA +11:55:15.657 frame 006 00 00 00 00 80 DA +11:55:16.259 frame 006 00 00 00 00 80 DA +11:55:17.061 frame 006 00 00 00 00 80 DA +11:55:17.663 frame 006 00 00 00 00 80 DA diff --git a/docs/discovery-notes.md b/docs/discovery-notes.md index bee9c00..561c9a0 100644 --- a/docs/discovery-notes.md +++ b/docs/discovery-notes.md @@ -16,6 +16,10 @@ Observed on the RCP-TX7 10-pin remote connector/cable during restoration work: map below. - Yellow and yellow-white conductors are present in the cable but did not map to connector pins during continuity testing. +- Multimeter reading from pin 9 ground to pin 4 serial data: about -9 V. +- Multimeter reading from pin 9 ground to pin 7 serial data: about +0.037 V. +- Pins 4 and 7 were the only serial-related combinations that produced a + meaningful multimeter result during this check. - With power present on pins 9 and 10, the panel shows a green `PANEL ACTIVE` light. - The inside of the 10-pin cable contains 12 wires total. @@ -31,6 +35,10 @@ Immediate implications: - The three twisted pairs are likely important candidates for serial data, composite video, and/or power/ground pairing, but this should be confirmed by continuity testing rather than color or twist assumptions. +- Pin 4 measuring around -9 V relative to pin 9 strongly suggests true RS-232 + level idle on at least the RCP-to-CCU/camera data line. +- Pin 7 near 0 V may be inactive/floating until a CCU or camera drives the + return data line. ### Working Cable Map @@ -70,4 +78,362 @@ Suggested next observations to capture: 3. Confirm whether yellow and yellow-white connect to shield, shell, or one end only. 4. Resistance between pins 5, 6, and 9 with the cable disconnected. -5. Scope/meter idle voltage on pins 4 and 7 relative to pins 5/6 and pin 9. +5. Scope idle voltage and activity on pins 4 and 7 relative to pins 5/6 and + pin 9 while pressing panel controls and, later, while connected to a CCU or + camera. + +## Serial Capture Setup + +Initial USB serial adapter wiring for passive listening: + +| Adapter terminal | RCP-TX7 cable pin | Cable color | Purpose | +| --- | ---: | --- | --- | +| `GND` | 9 | brown | Shared reference / DC return | +| `RXD` | 4 | orange | Listen to RCP-to-CCU/camera serial data | + +Do not connect adapter `TXD` during the first capture pass. Pin 4 measured about +-9 V relative to pin 9, so use the adapter's RS-232 side, not TTL UART mode. + +Capture helper: + +```powershell +python -m pip install pyserial +python scripts/serial_sniff.py --list +python scripts/serial_sniff.py --port COM3 --baud 38400 --ascii +python scripts/serial_sniff.py --port COM3 --baud 38400 --frame-size 6 --log captures/rcp-pin4.txt +``` + +Replace `COM3` with the adapter port shown by `--list` or Windows Device +Manager. While the script is running, press simple RCP controls and watch for +new hex bytes. + +### 2026-05-13 Initial Pin 4 Capture + +With the adapter in RS-232 mode, adapter `RXD` connected to RCP pin 4, and +adapter `GND` connected to pin 9, the stream produced repeating 6-byte patterns: + +```text +00 00 00 00 80 DA +00 00 07 80 00 DD +``` + +Observed behavior: + +- Frames repeat roughly every 200 ms during the sample. +- The stream sometimes appeared split as `00` followed by five bytes, which is + likely a read-timeout/chunking artifact rather than a protocol feature. +- Button presses did not obviously correlate with a visible byte change in the + first capture. + +Current interpretation: + +- This looks like a regular RCP-origin heartbeat/status transmission on pin 4, + not random noise. +- Because only pin 4 is connected, this may be the panel repeatedly trying to + announce itself or poll a missing CCU/camera. +- Pin 7 measured near 0 V and is probably quiet until a CCU/camera drives the + return channel. + +Next capture passes: + +1. Use `--frame-size 6` to avoid misleading `1 + 5` packet splits. +2. Capture a quiet baseline for 30 seconds. +3. Capture separate files while pressing one control repeatedly, naming the + action in the filename. +4. Later, capture pin 7 when connected to a real CCU/camera or a controlled + test transmitter. + +### 2026-05-13 Baseline vs CAM POWER Capture + +Capture files: + +- `captures/rcp-pin4-baseline.txt` +- `captures/rcp-pin4-cam-power.txt` +- `captures/rcp-pin4-call.txt` + +Frame counts from the available logs: + +| Capture | Frame | Count | Current label | +| --- | --- | ---: | --- | +| baseline | `00 00 00 00 80 DA` | 67 | idle heartbeat | +| CAM POWER | `00 00 00 00 80 DA` | 23 | idle heartbeat | +| CAM POWER | `00 00 07 80 00 DD` | 4 | CAM POWER candidate | +| CALL | `00 00 00 00 80 DA` | 17 | idle heartbeat | +| CALL | `00 00 15 80 00 CF` | 4 | CALL candidate, state/high bit set | +| CALL | `00 00 15 00 00 4F` | 4 | CALL candidate, state/high bit clear | + +Current interpretation: + +- The baseline capture contains only `00 00 00 00 80 DA`. +- Pressing `CAM POWER` introduces `00 00 07 80 00 DD`. +- Pressing `CALL` introduces `00 00 15 80 00 CF` and `00 00 15 00 00 4F`. +- Other tested buttons did not obviously produce unique frames while the panel + was not connected to a CCU/camera. +- `CAM POWER` and `CALL` may be among the few controls the panel transmits even + without a completed host/CCU session. +- The CALL frames differ by byte 4 (`80` vs `00`) and final byte (`CF` vs `4F`), + suggesting a state bit plus checksum or complement-style trailing byte. +- Current checksum hypothesis: byte 6 is XOR checksum with seed `0x5A` over the + first five bytes. Examples: + - `5A xor 00 xor 00 xor 00 xor 00 xor 80 = DA` + - `5A xor 00 xor 00 xor 07 xor 80 xor 00 = DD` + - `5A xor 00 xor 00 xor 15 xor 80 xor 00 = CF` + - `5A xor 00 xor 00 xor 15 xor 00 xor 00 = 4F` + +Helper for future captures: + +```powershell +python scripts/analyze_capture.py captures/rcp-pin4-baseline.txt captures/rcp-pin4-cam-power.txt captures/rcp-pin4-call.txt +``` + +## Host Response Experiments + +The RCP currently appears to be in an offline heartbeat state. With no CCU/camera +response present, only `CAM POWER` and `CALL` have been observed to send unique +frames beyond the heartbeat. The next protocol step is to learn what the RCP +expects on pin 7 (`CCU/camera -> RCP`). + +Important wiring for host-response tests: + +| Adapter terminal | RCP-TX7 cable pin | Cable color | Purpose | +| --- | ---: | --- | --- | +| `GND` | 9 | brown | Shared reference / DC return | +| `TXD` | 7 | purple | Candidate host-to-RCP transmit line | + +Suggested safety precautions: + +- Use the adapter's RS-232 side, not TTL UART. +- Keep adapter `RXD` on pin 4 if possible so the RCP output is still logged. +- Add a series resistor, for example 1 k to 4.7 k, between adapter `TXD` and pin + 7 for early experiments. +- Send one candidate frame at a time or repeat at a slow cadence. Avoid brute + forcing unknown byte ranges. +- Watch for changes in heartbeat, LCD state, panel lock state, or new frames on + pin 4. + +Frame sender: + +```powershell +python scripts/serial_send_frame.py --port COM3 --dry-run +python scripts/serial_send_frame.py --port COM3 --frame "00 00 00 00 80 DA" --repeat 5 --interval 0.2 +``` + +On Windows, a COM port is usually exclusive, so the sniffer and sender cannot +open the same adapter at the same time. Use the combined probe script when RXD +is connected to pin 4 and TXD is connected to pin 7: + +```powershell +python scripts/serial_probe_response.py --port COM3 --tx-frame "00 00 00 00 80 DA" --repeat 5 --interval 0.2 --log captures/rcp-response-test.txt +``` + +This listens first, sends the candidate response from the same serial session, +then keeps listening for changes on pin 4. + +Candidate first response: + +- `00 00 00 00 80 DA` - mirror the observed heartbeat as a possible no-op/ack. + +If mirroring the heartbeat changes nothing, the next low-risk approach is to +capture a real CCU/camera response rather than guessing. If no host is available, +try only checksum-valid, documented-frame-shape candidates and record every +attempt in a separate capture log. + +### 2026-05-13 Heartbeat Mirror Response Result + +Experiment: + +- Adapter `TXD` connected to RCP pin 7. +- Sent `00 00 00 00 80 DA` on the host-to-RCP line as a mirrored heartbeat / + possible no-op acknowledgement. +- Capture file: `captures/rcp-response-heartbeat-mirror.txt`. + +Observed result: + +- The RCP screen changed to `CONNECT: NOT ACT`. +- During this capture, pin 4 still transmitted only `00 00 00 00 80 DA`. +- Frame count: 59 received heartbeat frames, 10 transmitted mirrored heartbeat + frames. +- Pin 4 heartbeat timing became more frequent during the response window, then + returned to the slower baseline cadence afterward. + +Current interpretation: + +- The RCP is detecting return-channel traffic on pin 7. +- Mirroring the heartbeat is enough to move the panel out of the simple offline + state, but it does not complete active host/CCU negotiation. +- `NOT ACT` likely means connected/not active, connected/not activated, or a + similar state where the link is electrically/protocol-visible but no valid + control session has been established. +- The RCP did not emit a new command/status frame on pin 4 in response to the + mirrored heartbeat, so the next handshake step is probably not simply an echo + of its heartbeat. + +Additional checksum-valid response tests: + +| Capture | TX frame | RX result on pin 4 | Screen result | +| --- | --- | --- | --- | +| `captures/rcp-response-zero-state.txt` | `00 00 00 00 00 5A` | heartbeat only | `CONNECT: NOT ACT` | +| `captures/rcp-response-state-byte4.txt` | `00 00 00 80 00 DA` | heartbeat only | `CONNECT: NOT ACT` | +| `captures/rcp-response-invalid-checksum.txt` | `00 00 00 00 80 00` | heartbeat only | `CONNECT: NOT ACT` | +| TXD connected, no transmitted bytes | RS-232 idle only | heartbeat only | no `CONNECT: NOT ACT` | +| Single-byte test | `00` | heartbeat only | no `CONNECT: NOT ACT` | +| Single-byte test | `FF` | heartbeat only | no `CONNECT: NOT ACT` | +| Short-frame test | `00 00 00` | heartbeat only | no `CONNECT: NOT ACT` | +| Frame-length test | `00 00 00 00` | heartbeat only | no `CONNECT: NOT ACT` | +| Frame-length test | `00 00 00 00 80` | heartbeat only | no `CONNECT: NOT ACT` | +| Frame-length test | `00 00 00 00 80 DA 00` | heartbeat only | `CONNECT: NOT ACT` | + +Updated interpretation: + +- `CONNECT: NOT ACT` is probably a link-present state, not proof of a correct + CCU handshake. +- The RCP reacts to several checksum-valid 6-byte frames on pin 7, but continues + sending only the pin 4 heartbeat. +- An intentionally invalid checksum frame also produced `CONNECT: NOT ACT`, so + that display state does not prove checksum acceptance. +- The response needed to enter an active control session likely needs a specific + status/identity/activation frame, not just a valid no-op frame shape. +- TXD connected at idle without transmitted bytes did not produce + `CONNECT: NOT ACT`, so the display state appears to require received byte + activity on pin 7, not merely a driven RS-232 idle level. +- Single-byte and three-byte transmissions did not produce `CONNECT: NOT ACT`, + so the RCP is likely recognizing a minimum frame length or parser shape rather + than arbitrary serial bytes. +- Four-byte and five-byte transmissions did not produce `CONNECT: NOT ACT`, but + a seven-byte transmission beginning with the known six-byte heartbeat did. + This suggests the first six bytes are enough to trigger the parser/link state, + and the seventh byte may be ignored, buffered for a later frame, or treated as + extra data after the recognized packet. +- None of the tested host frames have caused the RCP to emit anything on pin 4 + except the heartbeat. + +Command-field response tests, using frame shape `00 00 CMD 00 80 CHECKSUM`: + +| Capture | TX frame | Checksum | Screen result | Notes | +| --- | --- | --- | --- | --- | +| `captures/rcp-response-cmd01.txt` | `00 00 01 00 80 DB` | valid | `CONNECT: NOT ACT` | 6-byte command-shaped frame accepted enough to change display. | +| `captures/rcp-response-cmd02.txt` | `00 00 02 00 80 DB` | invalid | `CONNECT: NOT ACT` | Bad checksum still changed display. | +| `captures/rcp-response-cmd02.txt` | `00 00 02 00 80 D8` | valid | `CONNECT: NOT ACT` | Valid checksum also changed display. | +| `captures/rcp-response-cmd03.txt` | `00 00 03 00 80 D9` | valid | `CONNECT: NOT ACT` | 6-byte command-shaped frame accepted enough to change display. | +| `captures/rcp-response-cmd04.txt` | `00 00 7F 00 80 A5` | valid | no screen change | First observed checksum-valid 6-byte frame that does not trigger `CONNECT: NOT ACT`. | +| `captures/rcp-response-cmd05.txt` | `00 00 80 00 80 5A` | valid | `CONNECT: NOT ACT` | 6-byte command-shaped frame accepted enough to change display. | + +Implications from command-field tests: + +- Screen change is not simply based on frame length or checksum validity. +- The command/status byte matters: `0x7F` appears ignored or treated as + non-link-establishing, despite a valid checksum. +- Tested commands `0x00`, `0x01`, `0x02`, `0x03`, and `0x80` can trigger + `CONNECT: NOT ACT`; `0x7F` did not. +- The RCP operating manual notes that `CAM POWER`, `MASTER`/`SLAVE`, and some + monitor functions are available only when connected to a CCU, so active state + may depend on CCU identity/status bits. + +Next low-risk response experiments: + +1. Repeat the same test with logging enabled so the pin 4 output before, during, + and after `CONNECT: NOT ACT` is captured. +2. Try sending the mirrored heartbeat continuously at a cadence close to the RCP + heartbeat, for example every 0.6 seconds, and watch whether the display state + changes. +3. Probe semantic fields within the six-byte frame shape, changing one byte at + a time and logging both screen state and pin 4 output. Prioritize small + command values and avoid broad brute-force sweeps. +4. Prefer capturing a real CCU/camera pin 7 response before broad guessing. + +### Command Sweep Helper + +A cautious command-byte sweep helper is available at +`scripts/serial_sweep_commands.py`. It sends only checksum-valid six-byte frames +using the current frame/checksum hypothesis and marks any RCP output that is not +the known heartbeat. + +Recommended first sweep: + +```powershell +python scripts/serial_sweep_commands.py --port COM5 --start 0x00 --end 0x20 --after-each 1.0 --log captures/rcp-sweep-cmd-00-20.txt +``` + +Optional dry run: + +```powershell +python scripts/serial_sweep_commands.py --port COM5 --start 0x00 --end 0x20 --dry-run +``` + +Use small ranges and keep watching the RCP screen while the sweep runs. The log +captures TX/RX bytes, but it cannot record screen messages unless they are noted +manually afterward. + +The `0x00-0x20` sweep produced `CONNECT: NOT ACT` roughly halfway through the +run, but the exact command was not recorded in the log. Rerun a narrower range +with manual screen prompts: + +```powershell +python scripts/serial_sweep_commands.py --port COM5 --start 0x0C --end 0x14 --after-each 1.2 --prompt-screen --log captures/rcp-sweep-cmd-0c-14-screen.txt +``` + +At each prompt, press Enter for no screen change, type `CONNECT: NOT ACT` when +that appears, or type `q` to stop. + +Prompted sweep result: + +- Capture: `captures/rcp-sweep-cmd-0c-14-screen.txt`. +- The RCP was reset after each screen trigger to clear its state, so recorded + triggers should be treated as independent fresh observations. +- First recorded screen marker: after command `0x0C`, frame + `00 00 0C 00 80 D6`, screen `CONNECT: NOT ACT`. +- Later manual screen markers were recorded after `0x0D`, `0x10`, `0x11`, + `0x12`, `0x13`, and `0x14`. +- No manual screen markers were recorded after `0x0E` or `0x0F`. +- Pin 4 output remained the heartbeat `00 00 00 00 80 DA` throughout. + +Interpretation: + +- Commands `0x0C`, `0x0D`, `0x10`, `0x11`, `0x12`, `0x13`, and `0x14` have + independent evidence of triggering `CONNECT: NOT ACT` in this sweep. +- Commands `0x0E` and `0x0F` did not have a screen marker recorded in this + sweep and are current non-trigger candidates. +- Because pin 4 stayed heartbeat-only, this state change is visible on the LCD + but does not yet produce a new RCP-to-host serial response. + +Second prompted sweep result: + +- Capture: `captures/rcp-sweep-cmd-15-30-screen.txt`. +- The log includes one partial/restarted pass at the beginning, then a fuller + prompted sweep through `0x30`. +- Pin 4 output remained the heartbeat `00 00 00 00 80 DA` throughout. + +Commands with recorded `CONNECT: NOT ACT` screen markers: + +| Command | TX frame | +| ---: | --- | +| `0x15` | `00 00 15 00 80 CF` | +| `0x16` | `00 00 16 00 80 CC` | +| `0x17` | `00 00 17 00 80 CD` | +| `0x18` | `00 00 18 00 80 C2` | +| `0x19` | `00 00 19 00 80 C3` | +| `0x1A` | `00 00 1A 00 80 C0` | +| `0x1B` | `00 00 1B 00 80 C1` | +| `0x1C` | `00 00 1C 00 80 C6` | +| `0x1D` | `00 00 1D 00 80 C7` | +| `0x28` | `00 00 28 00 80 F2` | +| `0x29` | `00 00 29 00 80 F3` | +| `0x2C` | `00 00 2C 00 80 F6` | +| `0x2D` | `00 00 2D 00 80 F7` | +| `0x30` | `00 00 30 00 80 EA` | + +Commands with no recorded screen marker in this sweep: + +```text +0x1E 0x1F 0x20 0x21 0x22 0x23 0x24 0x25 +0x26 0x27 0x2A 0x2B 0x2E 0x2F +``` + +Emerging pattern: + +- Some command byte ranges trigger `CONNECT: NOT ACT` while nearby checksum-valid + commands do not. +- Triggering still does not make the RCP transmit anything except the heartbeat. +- `CONNECT: NOT ACT` appears to be a parser-recognized but not session-active + state. It may indicate the RCP recognizes the command class as CCU-like, but + the remaining status/identity/activation fields are wrong or incomplete. diff --git a/scripts/analyze_capture.py b/scripts/analyze_capture.py new file mode 100644 index 0000000..56b2b00 --- /dev/null +++ b/scripts/analyze_capture.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 +"""Summarize fixed-size hex frames from serial_sniff.py logs.""" + +from __future__ import annotations + +import argparse +import collections +import re +from pathlib import Path + + +FRAME_RE = re.compile(r"\b(?:(RX|TX)\s+)?frame\s+\d+\s+((?:[0-9A-Fa-f]{2}\s*)+)$") + + +def frames_from_log(path: Path) -> list[tuple[str, str]]: + frames: list[tuple[str, str]] = [] + for line in path.read_text(encoding="utf-8").splitlines(): + match = FRAME_RE.search(line.strip()) + if match: + direction = match.group(1) or "RX" + frame = " ".join(match.group(2).upper().split()) + frames.append((direction, frame)) + return frames + + +def checksum_note(frame: str) -> str: + values = [int(part, 16) for part in frame.split()] + if len(values) != 6: + return "" + + checksum = 0x5A + for value in values[:5]: + checksum ^= value + + if checksum == values[5]: + return " checksum ok" + return f" checksum expected {checksum:02X}" + + +def main() -> int: + parser = argparse.ArgumentParser(description="Count frames in capture logs.") + parser.add_argument("logs", nargs="+", type=Path) + args = parser.parse_args() + + for log in args.logs: + frames = frames_from_log(log) + counts = collections.Counter(frames) + print(f"{log}: {len(frames)} frames, {len(counts)} unique direction/frame pairs") + for (direction, frame), count in counts.most_common(): + print(f" {count:5d} {direction:<2} {frame}{checksum_note(frame)}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/serial_probe_response.py b/scripts/serial_probe_response.py new file mode 100644 index 0000000..96b45fe --- /dev/null +++ b/scripts/serial_probe_response.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python3 +"""Listen on RX while sending candidate RCP-TX7 host-response frames. + +Windows usually allows only one process to open a COM port, so this script +combines capture and transmit in one pyserial session. +""" + +from __future__ import annotations + +import argparse +import datetime as dt +import sys +import time + +try: + import serial +except ImportError: + print( + "Missing dependency: pyserial\n" + "Install it with: python -m pip install pyserial", + file=sys.stderr, + ) + raise SystemExit(2) + + +def parse_hex_bytes(text: str) -> bytes: + normalized = text.replace(",", " ").replace("0x", "").replace("0X", "") + parts = normalized.split() + try: + values = [int(part, 16) for part in parts] + except ValueError as exc: + raise argparse.ArgumentTypeError(f"invalid hex byte list: {text}") from exc + if not values: + raise argparse.ArgumentTypeError("hex frame cannot be empty") + if any(value < 0 or value > 0xFF for value in values): + raise argparse.ArgumentTypeError("hex values must be bytes") + return bytes(values) + + +def hex_preview(data: bytes) -> str: + return " ".join(f"{byte:02X}" for byte in data) + + +def ascii_preview(data: bytes) -> str: + return "".join(chr(byte) if 32 <= byte <= 126 else "." for byte in data) + + +def make_logger(path: str | None): + log_file = open(path, "a", encoding="utf-8") if path else None + + def emit(line: str) -> None: + print(line) + if log_file: + log_file.write(line + "\n") + log_file.flush() + + return emit, log_file + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description="Capture RX frames while sending candidate TX responses." + ) + parser.add_argument("--port", required=True, help="serial port, for example COM3") + parser.add_argument("--baud", type=int, default=38400) + parser.add_argument( + "--tx-frame", + type=parse_hex_bytes, + default=parse_hex_bytes("00 00 00 00 80 DA"), + help="hex frame to send on TXD", + ) + parser.add_argument("--repeat", type=int, default=5) + parser.add_argument("--interval", type=float, default=0.2) + parser.add_argument( + "--delay", + type=float, + default=3.0, + help="seconds to listen before first transmit", + ) + parser.add_argument( + "--after", + type=float, + default=5.0, + help="seconds to keep listening after the last transmit", + ) + parser.add_argument("--frame-size", type=int, default=6) + parser.add_argument("--chunk-size", type=int, default=64) + parser.add_argument("--timeout", type=float, default=0.05) + parser.add_argument("--ascii", action="store_true") + parser.add_argument("--log", help="append capture/transmit log to this file") + return parser.parse_args() + + +def main() -> int: + args = parse_args() + emit, log_file = make_logger(args.log) + frame_buffer = bytearray() + + try: + with serial.Serial( + port=args.port, + baudrate=args.baud, + bytesize=serial.EIGHTBITS, + parity=serial.PARITY_NONE, + stopbits=serial.STOPBITS_ONE, + timeout=args.timeout, + write_timeout=1.0, + rtscts=False, + dsrdtr=False, + xonxoff=False, + ) as ser: + ser.reset_input_buffer() + start = time.monotonic() + next_tx = start + args.delay + sent = 0 + stop_at = None + + emit( + f"Listening on {ser.port} at {ser.baudrate} 8N1; " + f"will send {hex_preview(args.tx_frame)} after {args.delay:.1f}s" + ) + + while True: + now = time.monotonic() + + if sent < args.repeat and now >= next_tx: + ser.write(args.tx_frame) + ser.flush() + stamp = dt.datetime.now().strftime("%H:%M:%S.%f")[:-3] + emit(f"{stamp} TX frame {len(args.tx_frame):03d} {hex_preview(args.tx_frame)}") + sent += 1 + next_tx = now + args.interval + if sent == args.repeat: + stop_at = now + args.after + + data = ser.read(args.chunk_size) + if data: + if args.frame_size: + frame_buffer.extend(data) + while len(frame_buffer) >= args.frame_size: + frame = bytes(frame_buffer[: args.frame_size]) + del frame_buffer[: args.frame_size] + stamp = dt.datetime.now().strftime("%H:%M:%S.%f")[:-3] + emit(f"{stamp} RX frame {args.frame_size:03d} {hex_preview(frame)}") + if args.ascii: + emit(f"{'':14} ASCII {ascii_preview(frame)}") + else: + stamp = dt.datetime.now().strftime("%H:%M:%S.%f")[:-3] + emit(f"{stamp} RX {len(data):03d} bytes {hex_preview(data)}") + + if stop_at is not None and now >= stop_at: + break + + except KeyboardInterrupt: + emit("Stopped.") + return 0 + except serial.SerialException as exc: + print(f"Serial error: {exc}", file=sys.stderr) + return 1 + finally: + if log_file: + log_file.close() + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/serial_send_frame.py b/scripts/serial_send_frame.py new file mode 100644 index 0000000..c2a3fab --- /dev/null +++ b/scripts/serial_send_frame.py @@ -0,0 +1,118 @@ +#!/usr/bin/env python3 +"""Send one Sony RCP-TX7 candidate serial frame. + +Use carefully. This is for controlled experiments on the host-to-RCP line +through an RS-232 adapter. It can either send a complete hex frame or build the +observed 6-byte frame shape and checksum from fields. +""" + +from __future__ import annotations + +import argparse +import sys +import time + +try: + import serial +except ImportError: + print( + "Missing dependency: pyserial\n" + "Install it with: python -m pip install pyserial", + file=sys.stderr, + ) + raise SystemExit(2) + + +def parse_hex_bytes(text: str) -> bytes: + normalized = text.replace(",", " ").replace("0x", "").replace("0X", "") + parts = normalized.split() + try: + data = bytes(int(part, 16) for part in parts) + except ValueError as exc: + raise argparse.ArgumentTypeError(f"invalid hex byte list: {text}") from exc + if not data: + raise argparse.ArgumentTypeError("hex frame cannot be empty") + if any(part and int(part, 16) > 0xFF for part in parts): + raise argparse.ArgumentTypeError("hex values must be bytes") + return data + + +def build_frame(prefix1: int, prefix2: int, command: int, state: int, value: int) -> bytes: + body = bytes([prefix1, prefix2, command, state, value]) + checksum = 0x5A + for byte in body: + checksum ^= byte + return body + bytes([checksum]) + + +def hex_preview(data: bytes) -> str: + return " ".join(f"{byte:02X}" for byte in data) + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description="Send an explicit or checksum-built 6-byte RCP-TX7 frame." + ) + parser.add_argument("--port", required=True, help="serial port, for example COM3") + parser.add_argument("--baud", type=int, default=38400) + parser.add_argument( + "--frame", + type=parse_hex_bytes, + help="complete hex frame, for example \"00 00 00 00 80 DA\"", + ) + parser.add_argument("--prefix1", type=lambda s: int(s, 0), default=0) + parser.add_argument("--prefix2", type=lambda s: int(s, 0), default=0) + parser.add_argument("--command", type=lambda s: int(s, 0), default=0) + parser.add_argument("--state", type=lambda s: int(s, 0), default=0) + parser.add_argument("--value", type=lambda s: int(s, 0), default=0x80) + parser.add_argument("--repeat", type=int, default=1) + parser.add_argument("--interval", type=float, default=0.2) + parser.add_argument( + "--dry-run", + action="store_true", + help="print the frame but do not open the serial port", + ) + return parser.parse_args() + + +def validate_byte(name: str, value: int) -> None: + if not 0 <= value <= 0xFF: + raise SystemExit(f"{name} must be a byte, got {value!r}") + + +def main() -> int: + args = parse_args() + if args.frame: + frame = args.frame + else: + for name in ("prefix1", "prefix2", "command", "state", "value"): + validate_byte(name, getattr(args, name)) + frame = build_frame(args.prefix1, args.prefix2, args.command, args.state, args.value) + + print(f"Frame: {hex_preview(frame)}") + if args.dry_run: + return 0 + + with serial.Serial( + port=args.port, + baudrate=args.baud, + bytesize=serial.EIGHTBITS, + parity=serial.PARITY_NONE, + stopbits=serial.STOPBITS_ONE, + timeout=0.2, + write_timeout=1.0, + rtscts=False, + dsrdtr=False, + xonxoff=False, + ) as ser: + for index in range(args.repeat): + ser.write(frame) + ser.flush() + print(f"Sent {index + 1}/{args.repeat}") + if index + 1 < args.repeat: + time.sleep(args.interval) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/serial_sniff.py b/scripts/serial_sniff.py new file mode 100644 index 0000000..399e76d --- /dev/null +++ b/scripts/serial_sniff.py @@ -0,0 +1,170 @@ +#!/usr/bin/env python3 +"""Small serial sniffer for Sony RCP-TX7 restoration work. + +This is intended for RX-only capture from a USB serial adapter. +Default settings match the CCU-D50/TX7 notes for RCP-TX7-class remotes: +38400 baud, 8 data bits, no parity, 1 stop bit. +""" + +from __future__ import annotations + +import argparse +import datetime as dt +import sys +import time + +try: + import serial + from serial.tools import list_ports +except ImportError: + print( + "Missing dependency: pyserial\n" + "Install it with: python -m pip install pyserial", + file=sys.stderr, + ) + raise SystemExit(2) + + +def ascii_preview(data: bytes) -> str: + return "".join(chr(byte) if 32 <= byte <= 126 else "." for byte in data) + + +def hex_preview(data: bytes) -> str: + return " ".join(f"{byte:02X}" for byte in data) + + +def list_serial_ports() -> None: + ports = list(list_ports.comports()) + if not ports: + print("No serial ports found.") + return + + for port in ports: + parts = [port.device] + if port.description: + parts.append(port.description) + if port.hwid: + parts.append(port.hwid) + print(" | ".join(parts)) + + +def sniff(args: argparse.Namespace) -> int: + log_file = open(args.log, "a", encoding="utf-8") if args.log else None + + def emit(line: str) -> None: + print(line) + if log_file: + log_file.write(line + "\n") + log_file.flush() + + with serial.Serial( + port=args.port, + baudrate=args.baud, + bytesize=serial.EIGHTBITS, + parity=serial.PARITY_NONE, + stopbits=serial.STOPBITS_ONE, + timeout=args.timeout, + rtscts=False, + dsrdtr=False, + xonxoff=False, + ) as ser: + ser.reset_input_buffer() + print( + f"Listening on {ser.port} at {ser.baudrate} 8N1. " + "Press Ctrl+C to stop." + ) + print("Tip: press RCP buttons and watch for new hex bytes.") + + last_rx = time.monotonic() + frame_buffer = bytearray() + while True: + data = ser.read(args.chunk_size) + now = time.monotonic() + + if data: + if args.frame_size: + frame_buffer.extend(data) + while len(frame_buffer) >= args.frame_size: + frame = bytes(frame_buffer[: args.frame_size]) + del frame_buffer[: args.frame_size] + stamp = dt.datetime.now().strftime("%H:%M:%S.%f")[:-3] + emit( + f"{stamp} frame {args.frame_size:03d} " + f"{hex_preview(frame)}" + ) + if args.ascii: + emit(f"{'':14} ASCII {ascii_preview(frame)}") + else: + stamp = dt.datetime.now().strftime("%H:%M:%S.%f")[:-3] + emit(f"{stamp} {len(data):03d} bytes {hex_preview(data)}") + if args.ascii: + emit(f"{'':14} ASCII {ascii_preview(data)}") + last_rx = now + elif args.heartbeat and now - last_rx >= args.heartbeat: + stamp = dt.datetime.now().strftime("%H:%M:%S") + emit(f"{stamp} no data") + last_rx = now + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description="RX-only serial sniffer for RCP-TX7 experiments." + ) + parser.add_argument( + "--list", + action="store_true", + help="list available serial ports and exit", + ) + parser.add_argument( + "--port", + help="serial port, for example COM3 on Windows or /dev/ttyUSB0 on Linux", + ) + parser.add_argument("--baud", type=int, default=38400) + parser.add_argument("--timeout", type=float, default=0.2) + parser.add_argument("--chunk-size", type=int, default=64) + parser.add_argument( + "--ascii", + action="store_true", + help="also print printable ASCII preview", + ) + parser.add_argument( + "--heartbeat", + type=float, + default=5.0, + help="print 'no data' every N seconds while idle; set 0 to disable", + ) + parser.add_argument( + "--frame-size", + type=int, + default=0, + help="group stream into fixed-size frames, for example 6", + ) + parser.add_argument( + "--log", + help="append capture output to this text file", + ) + return parser.parse_args() + + +def main() -> int: + args = parse_args() + if args.list: + list_serial_ports() + return 0 + + if not args.port: + print("Pass --port COMx, or run --list first.", file=sys.stderr) + return 2 + + try: + return sniff(args) + except KeyboardInterrupt: + print("\nStopped.") + return 0 + except serial.SerialException as exc: + print(f"Serial error: {exc}", file=sys.stderr) + return 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/serial_sweep_commands.py b/scripts/serial_sweep_commands.py new file mode 100644 index 0000000..8210062 --- /dev/null +++ b/scripts/serial_sweep_commands.py @@ -0,0 +1,216 @@ +#!/usr/bin/env python3 +"""Cautious RCP-TX7 host-frame command sweep. + +This sends checksum-valid 6-byte frames of the observed shape: + + prefix1 prefix2 command state value checksum + +The checksum is the current working hypothesis: + + checksum = 0x5A xor prefix1 xor prefix2 xor command xor state xor value + +The script logs TX frames plus any RX frames. It highlights RX frames that differ +from the known heartbeat so a run can be scanned quickly. +""" + +from __future__ import annotations + +import argparse +import datetime as dt +import sys +import time + +try: + import serial +except ImportError: + print( + "Missing dependency: pyserial\n" + "Install it with: python -m pip install pyserial", + file=sys.stderr, + ) + raise SystemExit(2) + + +HEARTBEAT = bytes.fromhex("00 00 00 00 80 DA") + + +def parse_int(text: str) -> int: + value = int(text, 0) + if not 0 <= value <= 0xFF: + raise argparse.ArgumentTypeError(f"must be a byte: {text}") + return value + + +def build_frame(prefix1: int, prefix2: int, command: int, state: int, value: int) -> bytes: + body = bytes([prefix1, prefix2, command, state, value]) + checksum = 0x5A + for byte in body: + checksum ^= byte + return body + bytes([checksum]) + + +def hex_preview(data: bytes) -> str: + return " ".join(f"{byte:02X}" for byte in data) + + +def make_logger(path: str | None): + log_file = open(path, "a", encoding="utf-8") if path else None + + def emit(line: str) -> None: + print(line) + if log_file: + log_file.write(line + "\n") + log_file.flush() + + return emit, log_file + + +def drain_rx(ser: serial.Serial, emit, until: float, frame_size: int) -> int: + buffer = bytearray() + interesting = 0 + + while time.monotonic() < until: + data = ser.read(64) + if not data: + continue + + buffer.extend(data) + while len(buffer) >= frame_size: + frame = bytes(buffer[:frame_size]) + del buffer[:frame_size] + stamp = dt.datetime.now().strftime("%H:%M:%S.%f")[:-3] + marker = "" if frame == HEARTBEAT else " NON_HEARTBEAT" + emit(f"{stamp} RX frame {frame_size:03d} {hex_preview(frame)}{marker}") + if frame != HEARTBEAT: + interesting += 1 + + return interesting + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description="Sweep checksum-valid command bytes and log non-heartbeat RX." + ) + parser.add_argument("--port", required=True, help="serial port, for example COM5") + parser.add_argument("--baud", type=int, default=38400) + parser.add_argument("--start", type=parse_int, default=0x00) + parser.add_argument("--end", type=parse_int, default=0x20) + parser.add_argument("--prefix1", type=parse_int, default=0x00) + parser.add_argument("--prefix2", type=parse_int, default=0x00) + parser.add_argument("--state", type=parse_int, default=0x00) + parser.add_argument("--value", type=parse_int, default=0x80) + parser.add_argument( + "--settle", + type=float, + default=1.5, + help="seconds to listen before the sweep starts", + ) + parser.add_argument( + "--after-each", + type=float, + default=0.8, + help="seconds to listen after each transmitted frame", + ) + parser.add_argument( + "--after", + type=float, + default=3.0, + help="seconds to listen after the whole sweep", + ) + parser.add_argument("--frame-size", type=int, default=6) + parser.add_argument("--log", help="append capture/transmit log to this file") + parser.add_argument( + "--stop-on-non-heartbeat", + action="store_true", + help="stop the sweep if the RCP sends any non-heartbeat frame", + ) + parser.add_argument( + "--prompt-screen", + action="store_true", + help="after each command, prompt for the observed RCP screen state", + ) + parser.add_argument( + "--dry-run", + action="store_true", + help="print frames without opening the serial port", + ) + return parser.parse_args() + + +def main() -> int: + args = parse_args() + if args.end < args.start: + raise SystemExit("--end must be >= --start") + + frames = [ + (command, build_frame(args.prefix1, args.prefix2, command, args.state, args.value)) + for command in range(args.start, args.end + 1) + ] + + if args.dry_run: + for command, frame in frames: + print(f"cmd 0x{command:02X}: {hex_preview(frame)}") + return 0 + + emit, log_file = make_logger(args.log) + try: + with serial.Serial( + port=args.port, + baudrate=args.baud, + bytesize=serial.EIGHTBITS, + parity=serial.PARITY_NONE, + stopbits=serial.STOPBITS_ONE, + timeout=0.05, + write_timeout=1.0, + rtscts=False, + dsrdtr=False, + xonxoff=False, + ) as ser: + ser.reset_input_buffer() + emit( + f"Sweeping commands 0x{args.start:02X}-0x{args.end:02X} " + f"on {ser.port} at {ser.baudrate} 8N1" + ) + drain_rx(ser, emit, time.monotonic() + args.settle, args.frame_size) + + for command, frame in frames: + stamp = dt.datetime.now().strftime("%H:%M:%S.%f")[:-3] + emit(f"{stamp} TX cmd 0x{command:02X} frame {len(frame):03d} {hex_preview(frame)}") + ser.write(frame) + ser.flush() + interesting = drain_rx( + ser, + emit, + time.monotonic() + args.after_each, + args.frame_size, + ) + if interesting and args.stop_on_non_heartbeat: + emit(f"Stopping after cmd 0x{command:02X}: non-heartbeat RX observed") + break + if args.prompt_screen: + screen = input( + f"Screen after cmd 0x{command:02X} " + "(blank = no change, q = stop): " + ).strip() + if screen: + stamp = dt.datetime.now().strftime("%H:%M:%S.%f")[:-3] + emit(f"{stamp} SCREEN cmd 0x{command:02X} {screen}") + if screen.lower() in {"q", "quit", "stop"}: + break + + drain_rx(ser, emit, time.monotonic() + args.after, args.frame_size) + except KeyboardInterrupt: + print("Stopped.") + return 0 + except serial.SerialException as exc: + print(f"Serial error: {exc}", file=sys.stderr) + return 1 + finally: + if log_file: + log_file.close() + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main())