More tests

This commit is contained in:
Aiden
2026-05-13 14:45:34 +10:00
parent 769e47ed67
commit 9bcc75c2e9
9 changed files with 1253 additions and 0 deletions

View File

@@ -0,0 +1,149 @@
Keepalive-after-query on COM5 at 38400 8N1
Primer 00 00 00 00 80 DA; query 00 00 B5 00 80 6F; keepalive 00 00 00 00 80 DA
BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:31:59.333 TX primer 00 00 00 00 80 DA
14:31:59.333 PRIMER RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:31:59.546 TX query 00 00 B5 00 80 6F
14:31:59.546 QUERY RX NON_HEARTBEAT RX: 48 bytes 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:32:01.560 TX keepalive 001 00 00 00 00 80 DA
14:32:01.774 TX keepalive 002 00 00 00 00 80 DA
14:32:01.774 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:01.987 TX keepalive 003 00 00 00 00 80 DA
14:32:01.987 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:02.201 TX keepalive 004 00 00 00 00 80 DA
14:32:02.201 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:02.413 TX keepalive 005 00 00 00 00 80 DA
14:32:02.413 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:02.626 TX keepalive 006 00 00 00 00 80 DA
14:32:02.626 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:02.839 TX keepalive 007 00 00 00 00 80 DA
14:32:02.839 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:03.053 TX keepalive 008 00 00 00 00 80 DA
14:32:03.053 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:03.265 TX keepalive 009 00 00 00 00 80 DA
14:32:03.265 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:03.479 TX keepalive 010 00 00 00 00 80 DA
14:32:03.479 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:03.693 TX keepalive 011 00 00 00 00 80 DA
14:32:03.693 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:03.907 TX keepalive 012 00 00 00 00 80 DA
14:32:03.907 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:04.121 TX keepalive 013 00 00 00 00 80 DA
14:32:04.121 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:04.336 TX keepalive 014 00 00 00 00 80 DA
14:32:04.336 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:04.551 TX keepalive 015 00 00 00 00 80 DA
14:32:04.551 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:04.764 TX keepalive 016 00 00 00 00 80 DA
14:32:04.764 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:04.978 TX keepalive 017 00 00 00 00 80 DA
14:32:04.978 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:05.191 TX keepalive 018 00 00 00 00 80 DA
14:32:05.191 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:05.403 TX keepalive 019 00 00 00 00 80 DA
14:32:05.403 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:05.617 TX keepalive 020 00 00 00 00 80 DA
14:32:05.617 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:05.830 TX keepalive 021 00 00 00 00 80 DA
14:32:05.830 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:06.044 TX keepalive 022 00 00 00 00 80 DA
14:32:06.044 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:06.259 TX keepalive 023 00 00 00 00 80 DA
14:32:06.259 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:06.471 TX keepalive 024 00 00 00 00 80 DA
14:32:06.471 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:06.685 TX keepalive 025 00 00 00 00 80 DA
14:32:06.685 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:06.899 TX keepalive 026 00 00 00 00 80 DA
14:32:06.899 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:07.112 TX keepalive 027 00 00 00 00 80 DA
14:32:07.112 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:07.327 TX keepalive 028 00 00 00 00 80 DA
14:32:07.327 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:07.540 TX keepalive 029 00 00 00 00 80 DA
14:32:07.540 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:07.754 TX keepalive 030 00 00 00 00 80 DA
14:32:07.754 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:07.967 TX keepalive 031 00 00 00 00 80 DA
14:32:07.967 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:08.179 TX keepalive 032 00 00 00 00 80 DA
14:32:08.179 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:08.393 TX keepalive 033 00 00 00 00 80 DA
14:32:08.393 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:08.605 TX keepalive 034 00 00 00 00 80 DA
14:32:08.605 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:08.819 TX keepalive 035 00 00 00 00 80 DA
14:32:08.819 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:09.034 TX keepalive 036 00 00 00 00 80 DA
14:32:09.034 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:09.249 TX keepalive 037 00 00 00 00 80 DA
14:32:09.249 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:09.461 TX keepalive 038 00 00 00 00 80 DA
14:32:09.461 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:09.675 TX keepalive 039 00 00 00 00 80 DA
14:32:09.675 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:09.888 TX keepalive 040 00 00 00 00 80 DA
14:32:09.888 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:10.104 TX keepalive 041 00 00 00 00 80 DA
14:32:10.104 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:10.320 TX keepalive 042 00 00 00 00 80 DA
14:32:10.320 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:10.535 TX keepalive 043 00 00 00 00 80 DA
14:32:10.535 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:10.750 TX keepalive 044 00 00 00 00 80 DA
14:32:10.750 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:10.963 TX keepalive 045 00 00 00 00 80 DA
14:32:10.963 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:11.177 TX keepalive 046 00 00 00 00 80 DA
14:32:11.177 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:11.392 TX keepalive 047 00 00 00 00 80 DA
14:32:11.392 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:11.608 TX keepalive 048 00 00 00 00 80 DA
14:32:11.608 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:11.823 TX keepalive 049 00 00 00 00 80 DA
14:32:11.823 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:12.037 TX keepalive 050 00 00 00 00 80 DA
14:32:12.037 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:12.250 TX keepalive 051 00 00 00 00 80 DA
14:32:12.250 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:12.464 TX keepalive 052 00 00 00 00 80 DA
14:32:12.464 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:12.678 TX keepalive 053 00 00 00 00 80 DA
14:32:12.678 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:12.890 TX keepalive 054 00 00 00 00 80 DA
14:32:12.890 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:13.103 TX keepalive 055 00 00 00 00 80 DA
14:32:13.103 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:13.316 TX keepalive 056 00 00 00 00 80 DA
14:32:13.316 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:13.530 TX keepalive 057 00 00 00 00 80 DA
14:32:13.530 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:13.744 TX keepalive 058 00 00 00 00 80 DA
14:32:13.744 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:13.961 TX keepalive 059 00 00 00 00 80 DA
14:32:13.961 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:14.179 TX keepalive 060 00 00 00 00 80 DA
14:32:14.179 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:14.393 TX keepalive 061 00 00 00 00 80 DA
14:32:14.393 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:14.605 TX keepalive 062 00 00 00 00 80 DA
14:32:14.605 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:14.819 TX keepalive 063 00 00 00 00 80 DA
14:32:14.819 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:15.032 TX keepalive 064 00 00 00 00 80 DA
14:32:15.032 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:15.246 TX keepalive 065 00 00 00 00 80 DA
14:32:15.246 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:15.461 TX keepalive 066 00 00 00 00 80 DA
14:32:15.461 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:15.673 TX keepalive 067 00 00 00 00 80 DA
14:32:15.673 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:15.887 TX keepalive 068 00 00 00 00 80 DA
14:32:15.887 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:16.102 TX keepalive 069 00 00 00 00 80 DA
14:32:16.102 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:16.317 TX keepalive 070 00 00 00 00 80 DA
14:32:16.317 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:32:16.531 TX keepalive 071 00 00 00 00 80 DA
14:32:16.531 KEEPALIVE RX heartbeat-compatible RX: 1 bytes, offset 0, 0 frames + 1 bytes
14:32:20.819 SCREEN CONNECT NOT ACT

View File

@@ -0,0 +1,58 @@
Keepalive-after-query on COM5 at 38400 8N1
Primer 00 00 00 00 80 DA; query 00 00 B5 00 80 6F; keepalive 00 00 00 00 80 DA
BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:30:00.588 TX primer 00 00 00 00 80 DA
14:30:00.588 PRIMER RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:01.198 TX query 00 00 B5 00 80 6F
14:30:01.198 QUERY RX NON_HEARTBEAT RX: 48 bytes 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:30:03.210 TX keepalive 001 00 00 00 00 80 DA
14:30:03.210 KEEPALIVE RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:30:03.820 TX keepalive 002 00 00 00 00 80 DA
14:30:03.820 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:04.429 TX keepalive 003 00 00 00 00 80 DA
14:30:04.429 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:05.038 TX keepalive 004 00 00 00 00 80 DA
14:30:05.038 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:05.649 TX keepalive 005 00 00 00 00 80 DA
14:30:05.649 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:06.256 TX keepalive 006 00 00 00 00 80 DA
14:30:06.256 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:06.865 TX keepalive 007 00 00 00 00 80 DA
14:30:06.865 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:07.479 TX keepalive 008 00 00 00 00 80 DA
14:30:07.479 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:08.088 TX keepalive 009 00 00 00 00 80 DA
14:30:08.088 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:08.699 TX keepalive 010 00 00 00 00 80 DA
14:30:08.699 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:09.309 TX keepalive 011 00 00 00 00 80 DA
14:30:09.309 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:09.917 TX keepalive 012 00 00 00 00 80 DA
14:30:09.917 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:10.525 TX keepalive 013 00 00 00 00 80 DA
14:30:10.525 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:11.135 TX keepalive 014 00 00 00 00 80 DA
14:30:11.135 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:11.743 TX keepalive 015 00 00 00 00 80 DA
14:30:11.743 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:12.354 TX keepalive 016 00 00 00 00 80 DA
14:30:12.354 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:12.963 TX keepalive 017 00 00 00 00 80 DA
14:30:12.963 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:13.573 TX keepalive 018 00 00 00 00 80 DA
14:30:13.573 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:14.183 TX keepalive 019 00 00 00 00 80 DA
14:30:14.183 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:14.793 TX keepalive 020 00 00 00 00 80 DA
14:30:14.793 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:15.403 TX keepalive 021 00 00 00 00 80 DA
14:30:15.403 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:16.011 TX keepalive 022 00 00 00 00 80 DA
14:30:16.011 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:16.620 TX keepalive 023 00 00 00 00 80 DA
14:30:16.620 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:17.229 TX keepalive 024 00 00 00 00 80 DA
14:30:17.229 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:17.839 TX keepalive 025 00 00 00 00 80 DA
14:30:17.839 KEEPALIVE RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:30:25.571 SCREEN CONNECT NOT ACT

View File

@@ -0,0 +1,58 @@
Keepalive-after-query on COM5 at 38400 8N1
Primer 00 00 00 00 80 DA; query 00 00 B5 00 80 6F; keepalive 00 00 00 80 00 DA
BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes
14:31:25.424 TX primer 00 00 00 00 80 DA
14:31:25.424 PRIMER RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:31:26.035 TX query 00 00 B5 00 80 6F
14:31:26.035 QUERY RX NON_HEARTBEAT RX: 48 bytes 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:31:28.051 TX keepalive 001 00 00 00 80 00 DA
14:31:28.051 KEEPALIVE RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:31:28.660 TX keepalive 002 00 00 00 80 00 DA
14:31:28.660 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:29.269 TX keepalive 003 00 00 00 80 00 DA
14:31:29.269 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:29.876 TX keepalive 004 00 00 00 80 00 DA
14:31:29.876 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:30.486 TX keepalive 005 00 00 00 80 00 DA
14:31:30.486 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:31.094 TX keepalive 006 00 00 00 80 00 DA
14:31:31.094 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:31.705 TX keepalive 007 00 00 00 80 00 DA
14:31:31.705 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:32.318 TX keepalive 008 00 00 00 80 00 DA
14:31:32.318 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:32.931 TX keepalive 009 00 00 00 80 00 DA
14:31:32.931 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:33.539 TX keepalive 010 00 00 00 80 00 DA
14:31:33.539 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:34.150 TX keepalive 011 00 00 00 80 00 DA
14:31:34.150 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:34.757 TX keepalive 012 00 00 00 80 00 DA
14:31:34.757 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:35.367 TX keepalive 013 00 00 00 80 00 DA
14:31:35.367 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:35.978 TX keepalive 014 00 00 00 80 00 DA
14:31:35.978 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:36.587 TX keepalive 015 00 00 00 80 00 DA
14:31:36.587 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:37.196 TX keepalive 016 00 00 00 80 00 DA
14:31:37.196 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:37.803 TX keepalive 017 00 00 00 80 00 DA
14:31:37.803 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:38.413 TX keepalive 018 00 00 00 80 00 DA
14:31:38.413 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:39.024 TX keepalive 019 00 00 00 80 00 DA
14:31:39.024 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:39.634 TX keepalive 020 00 00 00 80 00 DA
14:31:39.634 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:40.244 TX keepalive 021 00 00 00 80 00 DA
14:31:40.244 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:40.854 TX keepalive 022 00 00 00 80 00 DA
14:31:40.854 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:41.464 TX keepalive 023 00 00 00 80 00 DA
14:31:41.464 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:42.076 TX keepalive 024 00 00 00 80 00 DA
14:31:42.076 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:42.683 TX keepalive 025 00 00 00 80 00 DA
14:31:42.683 KEEPALIVE RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:31:47.293 SCREEN CONNECT NOT ACT

View File

@@ -0,0 +1,58 @@
Keepalive-after-query on COM5 at 38400 8N1
Primer 00 00 00 00 80 DA; query 00 00 B5 00 80 6F; keepalive 00 00 00 00 00 5A
BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:30:49.577 TX primer 00 00 00 00 80 DA
14:30:49.577 PRIMER RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:30:50.188 TX query 00 00 B5 00 80 6F
14:30:50.188 QUERY RX NON_HEARTBEAT RX: 54 bytes 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:30:52.201 TX keepalive 001 00 00 00 00 00 5A
14:30:52.201 KEEPALIVE RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:30:52.809 TX keepalive 002 00 00 00 00 00 5A
14:30:52.809 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:53.419 TX keepalive 003 00 00 00 00 00 5A
14:30:53.419 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:54.030 TX keepalive 004 00 00 00 00 00 5A
14:30:54.030 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:54.640 TX keepalive 005 00 00 00 00 00 5A
14:30:54.640 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:55.278 TX keepalive 006 00 00 00 00 00 5A
14:30:55.278 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:55.888 TX keepalive 007 00 00 00 00 00 5A
14:30:55.888 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:56.499 TX keepalive 008 00 00 00 00 00 5A
14:30:56.499 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:57.137 TX keepalive 009 00 00 00 00 00 5A
14:30:57.137 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:57.748 TX keepalive 010 00 00 00 00 00 5A
14:30:57.748 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:58.360 TX keepalive 011 00 00 00 00 00 5A
14:30:58.360 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:58.969 TX keepalive 012 00 00 00 00 00 5A
14:30:58.969 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:30:59.579 TX keepalive 013 00 00 00 00 00 5A
14:30:59.579 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:00.191 TX keepalive 014 00 00 00 00 00 5A
14:31:00.191 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:00.799 TX keepalive 015 00 00 00 00 00 5A
14:31:00.799 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:01.406 TX keepalive 016 00 00 00 00 00 5A
14:31:01.406 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:02.015 TX keepalive 017 00 00 00 00 00 5A
14:31:02.015 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:02.627 TX keepalive 018 00 00 00 00 00 5A
14:31:02.627 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:03.236 TX keepalive 019 00 00 00 00 00 5A
14:31:03.236 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:03.845 TX keepalive 020 00 00 00 00 00 5A
14:31:03.845 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:04.455 TX keepalive 021 00 00 00 00 00 5A
14:31:04.455 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:05.064 TX keepalive 022 00 00 00 00 00 5A
14:31:05.064 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:05.674 TX keepalive 023 00 00 00 00 00 5A
14:31:05.674 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:06.284 TX keepalive 024 00 00 00 00 00 5A
14:31:06.284 KEEPALIVE RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:31:06.894 TX keepalive 025 00 00 00 00 00 5A
14:31:06.894 KEEPALIVE RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:31:13.497 SCREEN CONNECT NOT ACT

View File

@@ -0,0 +1,327 @@
Post-discovery sweep: primer 00 00 00 00 80 DA, query 00 00 B5 00 80 6F, 32 candidates on COM5 at 38400 8N1
CANDIDATE 0x00 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
13:57:37.331 TX primer frame 006 00 00 00 00 80 DA
13:57:37.331 PRIMER RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
13:57:38.156 TX query 0xB5 frame 006 00 00 B5 00 80 6F
13:57:38.156 QUERY RX ANOMALY 30 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
13:57:38.156 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
13:57:39.376 TX candidate 0x00 frame 006 00 00 00 00 80 DA
13:57:39.376 CANDIDATE 0x00 RX ANOMALY 53 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 1 expected 00
13:57:39.376 CANDIDATE 0x00 RX raw 07 80 6D 20 D8 00 00 00 00 80 DA 00 00 00 00 80 DA 00 00 00 00 80 DA 00 00 00 00 80 DA 00 00 00 00 80 DA 00 00 00 00 80 DA 00 00 00 00 80 DA 00 00 00 00 80 DA
13:57:49.402 SCREEN candidate=0x00 CONNECT NOT ACT
Completed candidate 1/32
CANDIDATE 0x01 BASELINE heartbeat-compatible RX: 29 bytes, offset 1, 4 frames + 5 bytes
13:58:15.301 TX primer frame 006 00 00 00 00 80 DA
13:58:15.301 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
13:58:16.124 TX query 0xB5 frame 006 00 00 B5 00 80 6F
13:58:16.124 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
13:58:16.124 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
13:58:17.340 TX candidate 0x01 frame 006 00 00 01 00 80 DB
13:58:17.340 CANDIDATE 0x01 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
13:59:28.114 SCREEN candidate=0x01 CONNECT NOT ACTCONNECT NOT ACT
Completed candidate 2/32
CANDIDATE 0x02 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
13:59:38.147 TX primer frame 006 00 00 00 00 80 DA
13:59:38.147 PRIMER RX heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
13:59:38.974 TX query 0xB5 frame 006 00 00 B5 00 80 6F
13:59:38.974 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
13:59:38.974 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
13:59:40.193 TX candidate 0x02 frame 006 00 00 02 00 80 D8
13:59:40.193 CANDIDATE 0x02 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:00:09.105 SCREEN candidate=0x02 CONNECT NOT ACT
Completed candidate 3/32
CANDIDATE 0x03 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:00:17.993 TX primer frame 006 00 00 00 00 80 DA
14:00:17.993 PRIMER RX ANOMALY 12 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00
14:00:17.993 PRIMER RX raw 07 80 40 40 30 ED 00 00 00 00 80 DA
14:00:18.816 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:00:18.816 QUERY RX heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes
14:00:20.035 TX candidate 0x03 frame 006 00 00 03 00 80 D9
14:00:20.035 CANDIDATE 0x03 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:00:29.112 SCREEN candidate=0x03 CONNECT NOT ACT
Completed candidate 4/32
CANDIDATE 0x04 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:00:38.847 TX primer frame 006 00 00 00 00 80 DA
14:00:38.847 PRIMER RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:00:39.667 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:00:39.667 QUERY RX ANOMALY 30 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:00:39.667 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:00:40.858 TX candidate 0x04 frame 006 00 00 04 00 80 DE
14:00:40.858 CANDIDATE 0x04 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:00:52.036 SCREEN candidate=0x04 CONNECT NOT ACT
Completed candidate 5/32
CANDIDATE 0x05 BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes
14:01:00.767 TX primer frame 006 00 00 00 00 80 DA
14:01:00.767 PRIMER RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:01:01.585 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:01:01.585 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:01:01.585 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:01:02.809 TX candidate 0x05 frame 006 00 00 05 00 80 DF
14:01:02.809 CANDIDATE 0x05 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:01:21.665 SCREEN candidate=0x05 CONNECT NOT ACT
Completed candidate 6/32
CANDIDATE 0x06 BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes
14:01:34.465 TX primer frame 006 00 00 00 00 80 DA
14:01:34.465 PRIMER RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:01:35.290 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:01:35.290 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:01:35.290 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:01:36.508 TX candidate 0x06 frame 006 00 00 06 00 80 DC
14:01:36.508 CANDIDATE 0x06 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:01:59.113 SCREEN candidate=0x06 CONNECT NOT ACT
Completed candidate 7/32
CANDIDATE 0x07 BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes
14:02:09.750 TX primer frame 006 00 00 00 00 80 DA
14:02:09.750 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:02:10.576 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:02:10.576 QUERY RX ANOMALY 30 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:02:10.576 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:02:11.793 TX candidate 0x07 frame 006 00 00 07 00 80 DD
14:02:11.793 CANDIDATE 0x07 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:02:18.645 SCREEN candidate=0x07 CONNECT NOT ACT
Completed candidate 8/32
CANDIDATE 0x08 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:02:47.194 TX primer frame 006 00 00 00 00 80 DA
14:02:47.194 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:02:48.017 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:02:48.017 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:02:48.017 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:02:49.236 TX candidate 0x08 frame 006 00 00 08 00 80 D2
14:02:49.236 CANDIDATE 0x08 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:02:57.276 SCREEN candidate=0x08 CONNECT NOT ACT
Completed candidate 9/32
CANDIDATE 0x09 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:03:09.529 TX primer frame 006 00 00 00 00 80 DA
14:03:09.529 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:03:10.353 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:03:10.353 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:03:10.353 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:03:11.571 TX candidate 0x09 frame 006 00 00 09 00 80 D3
14:03:11.571 CANDIDATE 0x09 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:03:22.406 SCREEN candidate=0x09 CONNECT NOT ACT
Completed candidate 10/32
CANDIDATE 0x0A BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:03:32.214 TX primer frame 006 00 00 00 00 80 DA
14:03:32.214 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:03:33.038 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:03:33.038 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:03:33.038 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:03:34.261 TX candidate 0x0A frame 006 00 00 0A 00 80 D0
14:03:34.261 CANDIDATE 0x0A RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:04:31.913 SCREEN candidate=0x0A CONNECT NOT ACT
Completed candidate 11/32
CANDIDATE 0x0B BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:04:41.814 TX primer frame 006 00 00 00 00 80 DA
14:04:41.814 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:04:42.641 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:04:42.641 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:04:42.641 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:04:43.863 TX candidate 0x0B frame 006 00 00 0B 00 80 D1
14:04:43.863 CANDIDATE 0x0B RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:04:51.132 SCREEN candidate=0x0B CONNECT NOT ACT
Completed candidate 12/32
CANDIDATE 0x0C BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes
14:05:01.364 TX primer frame 006 00 00 00 00 80 DA
14:05:01.364 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:05:02.183 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:05:02.183 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:05:02.183 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:05:03.401 TX candidate 0x0C frame 006 00 00 0C 00 80 D6
14:05:03.401 CANDIDATE 0x0C RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:05:11.289 SCREEN candidate=0x0C CONNECT NOT ACT
Completed candidate 13/32
CANDIDATE 0x0D BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:05:19.111 TX primer frame 006 00 00 00 00 80 DA
14:05:19.111 PRIMER RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:05:19.936 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:05:19.936 QUERY RX ANOMALY 30 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:05:19.936 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:05:21.126 TX candidate 0x0D frame 006 00 00 0D 00 80 D7
14:05:21.126 CANDIDATE 0x0D RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:05:31.382 SCREEN candidate=0x0D CONNECT NOT ACT
Completed candidate 14/32
CANDIDATE 0x0E BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes
14:05:44.762 TX primer frame 006 00 00 00 00 80 DA
14:05:44.762 PRIMER RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:05:45.588 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:05:45.588 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:05:45.588 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:05:46.806 TX candidate 0x0E frame 006 00 00 0E 00 80 D4
14:05:46.806 CANDIDATE 0x0E RX ANOMALY 25 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00
14:05:46.806 CANDIDATE 0x0E RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 00 00 00 00 80 DA 00
14:05:54.627 SCREEN candidate=0x0E CONNECT NOT ACT
Completed candidate 15/32
CANDIDATE 0x0F BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:06:05.428 TX primer frame 006 00 00 00 00 80 DA
14:06:05.428 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:06:06.255 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:06:06.255 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:06:06.255 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:06:07.477 TX candidate 0x0F frame 006 00 00 0F 00 80 D5
14:06:07.477 CANDIDATE 0x0F RX ANOMALY 30 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00
14:06:07.477 CANDIDATE 0x0F RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 00 00 00 00 80 DA 00 00 00 00 80 DA
14:06:17.323 SCREEN candidate=0x0F CONNECT NOT ACT
Completed candidate 16/32
CANDIDATE 0x10 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:06:29.790 TX primer frame 006 00 00 00 00 80 DA
14:06:29.790 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:06:30.613 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:06:30.613 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:06:30.613 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:06:31.834 TX candidate 0x10 frame 006 00 00 10 00 80 CA
14:06:31.834 CANDIDATE 0x10 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:06:39.289 SCREEN candidate=0x10 CONNECT NOT ACT
Completed candidate 17/32
CANDIDATE 0x11 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:06:51.468 TX primer frame 006 00 00 00 00 80 DA
14:06:51.468 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:06:52.289 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:06:52.289 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:06:52.289 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:06:53.511 TX candidate 0x11 frame 006 00 00 11 00 80 CB
14:06:53.511 CANDIDATE 0x11 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:07:17.742 SCREEN candidate=0x11 CONNECT NOT ACT
Completed candidate 18/32
CANDIDATE 0x12 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:07:34.256 TX primer frame 006 00 00 00 00 80 DA
14:07:34.256 PRIMER RX heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:07:35.077 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:07:35.077 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:07:35.077 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:07:36.296 TX candidate 0x12 frame 006 00 00 12 00 80 C8
14:07:36.296 CANDIDATE 0x12 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:08:00.196 SCREEN candidate=0x12 CONNECT NOT ACT
Completed candidate 19/32
CANDIDATE 0x13 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:08:57.563 TX primer frame 006 00 00 00 00 80 DA
14:08:57.563 PRIMER RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:08:58.386 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:08:58.386 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:08:58.386 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:08:59.604 TX candidate 0x13 frame 006 00 00 13 00 80 C9
14:08:59.604 CANDIDATE 0x13 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:09:08.311 SCREEN candidate=0x13 CONNECTION NOT ACT
Completed candidate 20/32
CANDIDATE 0x14 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:09:36.745 TX primer frame 006 00 00 00 00 80 DA
14:09:36.745 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:09:37.571 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:09:37.571 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:09:37.571 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:09:38.789 TX candidate 0x14 frame 006 00 00 14 00 80 CE
14:09:38.789 CANDIDATE 0x14 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:09:46.337 SCREEN candidate=0x14 CONNECT NOT ACT
Completed candidate 21/32
CANDIDATE 0x15 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:10:00.865 TX primer frame 006 00 00 00 00 80 DA
14:10:00.865 PRIMER RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:10:01.689 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:10:01.689 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:10:01.689 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:10:02.907 TX candidate 0x15 frame 006 00 00 15 00 80 CF
14:10:02.907 CANDIDATE 0x15 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:10:11.428 SCREEN candidate=0x15 CONNECT NOT ACT
Completed candidate 22/32
CANDIDATE 0x16 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:10:23.417 TX primer frame 006 00 00 00 00 80 DA
14:10:23.417 PRIMER RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:10:24.240 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:10:24.240 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:10:24.240 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:10:25.460 TX candidate 0x16 frame 006 00 00 16 00 80 CC
14:10:25.460 CANDIDATE 0x16 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:10:38.357 SCREEN candidate=0x16 CONNECT NOT ACT
Completed candidate 23/32
CANDIDATE 0x17 BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes
14:10:48.678 TX primer frame 006 00 00 00 00 80 DA
14:10:48.678 PRIMER RX heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
14:10:49.500 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:10:49.500 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:10:49.500 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:10:50.690 TX candidate 0x17 frame 006 00 00 17 00 80 CD
14:10:50.690 CANDIDATE 0x17 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:10:57.530 SCREEN candidate=0x17 CONNECT NOT ACT
Completed candidate 24/32
CANDIDATE 0x18 BASELINE heartbeat-compatible RX: 29 bytes, offset 1, 4 frames + 5 bytes
14:11:06.439 TX primer frame 006 00 00 00 00 80 DA
14:11:06.439 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:11:07.261 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:11:07.261 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:11:07.261 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:11:08.480 TX candidate 0x18 frame 006 00 00 18 00 80 C2
14:11:08.480 CANDIDATE 0x18 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:11:16.993 SCREEN candidate=0x18 CONNECT NOT ACT
Completed candidate 25/32
CANDIDATE 0x19 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:11:27.321 TX primer frame 006 00 00 00 00 80 DA
14:11:27.321 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:11:28.144 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:11:28.144 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:11:28.144 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:11:29.365 TX candidate 0x19 frame 006 00 00 19 00 80 C3
14:11:29.365 CANDIDATE 0x19 RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:11:36.120 SCREEN candidate=0x19 CONNECT NOT ACT
Completed candidate 26/32
CANDIDATE 0x1A BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:11:46.807 TX primer frame 006 00 00 00 00 80 DA
14:11:46.807 PRIMER RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:11:47.631 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:11:47.631 QUERY RX ANOMALY 30 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:11:47.631 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:11:48.848 TX candidate 0x1A frame 006 00 00 1A 00 80 C0
14:11:48.848 CANDIDATE 0x1A RX ANOMALY 54 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00
14:11:48.848 CANDIDATE 0x1A RX raw 07 80 6D 20 D8 48 00 00 00 00 80 DA 00 00 00 00 80 DA 00 00 00 00 80 DA 00 00 00 00 80 DA 00 00 00 00 80 DA 00 00 00 00 80 DA 00 00 00 00 80 DA 00 00 00 00 80 DA
14:12:00.487 SCREEN candidate=0x1A CONNECT NOT ACT
Completed candidate 27/32
CANDIDATE 0x1B BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes
14:12:11.309 TX primer frame 006 00 00 00 00 80 DA
14:12:11.309 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:12:12.132 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:12:12.132 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:12:12.132 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:12:13.352 TX candidate 0x1B frame 006 00 00 1B 00 80 C1
14:12:13.352 CANDIDATE 0x1B RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:12:25.370 SCREEN candidate=0x1B CONNECT NOT ACT
Completed candidate 28/32
CANDIDATE 0x1C BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:12:36.906 TX primer frame 006 00 00 00 00 80 DA
14:12:36.906 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:12:37.710 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:12:37.710 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:12:37.710 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:12:38.928 TX candidate 0x1C frame 006 00 00 1C 00 80 C6
14:12:38.928 CANDIDATE 0x1C RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:12:46.949 SCREEN candidate=0x1C CONNECT NOT ACT
Completed candidate 29/32
CANDIDATE 0x1D BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:13:00.022 TX primer frame 006 00 00 00 00 80 DA
14:13:00.022 PRIMER RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:13:00.846 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:13:00.846 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:13:00.846 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:13:02.037 TX candidate 0x1D frame 006 00 00 1D 00 80 C7
14:13:02.037 CANDIDATE 0x1D RX heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
14:13:21.735 SCREEN candidate=0x1D CONNECT NOT ACT
Completed candidate 30/32
CANDIDATE 0x1E BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:13:29.692 TX primer frame 006 00 00 00 00 80 DA
14:13:29.692 PRIMER RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:13:30.514 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:13:30.514 QUERY RX ANOMALY 36 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:13:30.514 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:13:31.732 TX candidate 0x1E frame 006 00 00 1E 00 80 C4
14:13:31.732 CANDIDATE 0x1E RX ANOMALY 24 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00
14:13:31.732 CANDIDATE 0x1E RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 00 00 00 00 80 DA
14:13:37.600 SCREEN candidate=0x1E CONNECT NOT ACT
Completed candidate 31/32
CANDIDATE 0x1F BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes
14:13:45.189 TX primer frame 006 00 00 00 00 80 DA
14:13:45.189 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:13:46.012 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:13:46.012 QUERY RX ANOMALY 30 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:13:46.012 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:13:47.229 TX candidate 0x1F frame 006 00 00 1F 00 80 C5
14:13:47.229 CANDIDATE 0x1F RX ANOMALY 30 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00
14:13:47.229 CANDIDATE 0x1F RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 00 00 00 00 80 DA 00 00 00 00 80 DA
14:13:52.562 SCREEN candidate=0x1F CONNECT NOT ACT
Completed candidate 32/32

View File

@@ -0,0 +1,12 @@
Post-discovery sweep: primer 00 00 00 00 80 DA, query 00 00 B5 00 80 6F, 32 candidates on COM5 at 38400 8N1
CANDIDATE 0x20 BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes
14:18:40.052 TX primer frame 006 00 00 00 00 80 DA
14:18:40.052 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:18:40.878 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:18:40.878 QUERY RX ANOMALY 48 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:18:40.878 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:18:42.894 TX candidate 0x20 frame 006 00 00 20 00 80 FA
14:18:42.894 CANDIDATE 0x20 RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:18:54.471 SCREEN candidate=0x20 CONNECT NOT ACT
Completed candidate 1/32
Stopped.

View File

@@ -0,0 +1,81 @@
Post-discovery sweep: primer 00 00 00 00 80 DA, query 00 00 B5 00 80 6F, 8 candidates on COM5 at 38400 8N1
CANDIDATE 0x00 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:23:38.585 TX primer frame 006 00 00 00 00 80 DA
14:23:38.585 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:23:39.408 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:23:39.408 QUERY RX ANOMALY 54 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:23:39.408 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:23:41.426 TX candidate 0x00 frame 006 00 00 00 00 80 DA
14:23:41.426 CANDIDATE 0x00 RX heartbeat-compatible RX: 36 bytes, offset 0, 6 frames + 0 bytes
14:23:49.184 SCREEN candidate=0x00 CONNECT NOT ACT
Completed candidate 1/8
CANDIDATE 0x01 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:23:58.214 TX primer frame 006 00 00 00 00 80 DA
14:23:58.214 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:23:59.034 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:23:59.034 QUERY RX ANOMALY 54 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:23:59.034 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:24:01.044 TX candidate 0x01 frame 006 00 00 01 00 80 DB
14:24:01.044 CANDIDATE 0x01 RX heartbeat-compatible RX: 36 bytes, offset 0, 6 frames + 0 bytes
14:24:05.765 SCREEN candidate=0x01 CONNECT NOT ACT
Completed candidate 2/8
CANDIDATE 0x03 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:24:16.412 TX primer frame 006 00 00 00 00 80 DA
14:24:16.412 PRIMER RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:24:17.236 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:24:17.236 QUERY RX ANOMALY 54 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:24:17.236 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:24:19.251 TX candidate 0x03 frame 006 00 00 03 00 80 D9
14:24:19.251 CANDIDATE 0x03 RX heartbeat-compatible RX: 36 bytes, offset 0, 6 frames + 0 bytes
14:24:25.861 SCREEN candidate=0x03 CONNECT NOT ACT
Completed candidate 3/8
CANDIDATE 0x07 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:24:34.363 TX primer frame 006 00 00 00 00 80 DA
14:24:34.363 PRIMER RX heartbeat-compatible RX: 19 bytes, offset 0, 3 frames + 1 bytes
14:24:35.186 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:24:35.186 QUERY RX ANOMALY 53 RX bytes; first mismatch at byte 0: got 00, heartbeat offset 4 expected 80
14:24:35.186 QUERY RX raw 00 00 00 80 DA 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:24:37.196 TX candidate 0x07 frame 006 00 00 07 00 80 DD
14:24:37.196 CANDIDATE 0x07 RX heartbeat-compatible RX: 36 bytes, offset 0, 6 frames + 0 bytes
14:24:43.994 SCREEN candidate=0x07 CONNECT NOT ACT
Completed candidate 4/8
CANDIDATE 0x0F BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:24:54.811 TX primer frame 006 00 00 00 00 80 DA
14:24:54.811 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:24:55.632 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:24:55.632 QUERY RX ANOMALY 54 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:24:55.632 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:24:57.640 TX candidate 0x0F frame 006 00 00 0F 00 80 D5
14:24:57.640 CANDIDATE 0x0F RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:25:05.820 SCREEN candidate=0x0F CONNECT NOT ACT
Completed candidate 5/8
CANDIDATE 0x10 BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes
14:25:15.731 TX primer frame 006 00 00 00 00 80 DA
14:25:15.731 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:25:16.559 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:25:16.559 QUERY RX ANOMALY 48 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:25:16.559 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:25:18.572 TX candidate 0x10 frame 006 00 00 10 00 80 CA
14:25:18.572 CANDIDATE 0x10 RX heartbeat-compatible RX: 36 bytes, offset 0, 6 frames + 0 bytes
14:25:23.775 SCREEN candidate=0x10 CONNECT NOT ACT
Completed candidate 6/8
CANDIDATE 0x1B BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:25:32.116 TX primer frame 006 00 00 00 00 80 DA
14:25:32.116 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:25:32.939 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:25:32.939 QUERY RX ANOMALY 54 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:25:32.939 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:25:34.954 TX candidate 0x1B frame 006 00 00 1B 00 80 C1
14:25:34.954 CANDIDATE 0x1B RX heartbeat-compatible RX: 36 bytes, offset 0, 6 frames + 0 bytes
14:25:46.206 SCREEN candidate=0x1B CONNECT NOT ACT
Completed candidate 7/8
CANDIDATE 0x1F BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
14:25:58.538 TX primer frame 006 00 00 00 00 80 DA
14:25:58.538 PRIMER RX heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
14:25:59.361 TX query 0xB5 frame 006 00 00 B5 00 80 6F
14:25:59.361 QUERY RX ANOMALY 54 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
14:25:59.361 QUERY RX raw 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48 07 80 6D 20 D8 48
14:26:01.377 TX candidate 0x1F frame 006 00 00 1F 00 80 C5
14:26:01.377 CANDIDATE 0x1F RX heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
14:26:14.985 SCREEN candidate=0x1F CONNECT NOT ACT
Completed candidate 8/8

View File

@@ -1726,3 +1726,312 @@ python scripts/serial_post_discovery_sweep.py --port COM5 --candidates "0xB0-0xB
If any candidate changes the screen away from `CONNECT NOT ACT`, or produces a
new RCP response after the candidate stage, retest that candidate alone with
three fresh power cycles.
### 2026-05-13 Post-Discovery Sweep `00-1F` Result
Capture:
- `captures/rcp-post-discovery-b5-candidates-00-1f.txt`
Sweep setup:
```text
primer: 00 00 00 00 80 DA
query: 00 00 B5 00 80 6F
expected: 07 80 6D 20 D8 48
candidate: 00-1F
```
Screen result:
- Every candidate remained at `CONNECT NOT ACT` / `CONNECTION NOT ACT`.
- No candidate in `0x00-0x1F` moved the panel into an active state.
Serial result:
- Most candidates produced only heartbeat-compatible traffic after the candidate
frame.
- Candidate windows for `0x00`, `0x0E`, `0x0F`, `0x1A`, `0x1E`, and `0x1F`
included additional bytes matching the known discovery response
`07 80 6D 20 D8 48`.
- Those candidate-window anomalies are likely trailing/repeated discovery
response frames from the `B5` query, not new candidate-specific responses.
Notable outlier:
- During candidate `0x03`, the primer read window contained
`07 80 40 40 30 ED`, followed by heartbeat.
- This is checksum-valid, but it occurred before the `B5` query in that test
window. Treat it as an outlier until reproduced. Possible explanations include
incomplete power-cycle reset, a previous state/latch edge, or an accidental
timing artifact.
Interpretation:
- Low command range `0x00-0x1F` does not appear to contain the simple
post-discovery activation command when tested after the `B5` discovery query.
- The script's candidate read window can still catch residual discovery
response frames; candidate anomalies must be checked against the known query
response before treating them as new behavior.
Recommended next sweep:
Use a slightly longer query read window so the known discovery response has more
time to finish before the candidate frame:
```powershell
python scripts/serial_post_discovery_sweep.py --port COM5 --candidates "0x20-0x3F" --after-query 2.0 --prompt-power-cycle --prompt-screen --log captures/rcp-post-discovery-b5-candidates-20-3f.txt
```
If `20-3F` also keeps the screen at `CONNECT NOT ACT`, continue:
```powershell
python scripts/serial_post_discovery_sweep.py --port COM5 --candidates "0x80-0x9F" --after-query 2.0 --prompt-power-cycle --prompt-screen --log captures/rcp-post-discovery-b5-candidates-80-9f.txt
python scripts/serial_post_discovery_sweep.py --port COM5 --candidates "0xB0-0xBF" --after-query 2.0 --prompt-power-cycle --prompt-screen --log captures/rcp-post-discovery-b5-candidates-b0-bf.txt
```
## Post-Discovery Test Ladder
Before manually sweeping every command byte, sample representative patterns from
several command regions. The goal is to identify which command families are
worth expanding.
Use the same known discovery setup for each sample:
```text
primer: 00 00 00 00 80 DA
query: 00 00 B5 00 80 6F
RCP: 07 80 6D 20 D8 48
then: sampled candidate command
```
Power-cycle before each candidate prompt. Type any screen change, otherwise
press Enter.
### Ladder 1: Low-Range Sanity Sample
The full `00-1F` sweep did not activate the panel, but one outlier appeared
during the `0x03` test. Retest only representative low bytes plus the outlier:
```powershell
python scripts/serial_post_discovery_sweep.py --port COM5 --candidates "0x00 0x01 0x03 0x07 0x0F 0x10 0x1B 0x1F" --after-query 2.0 --prompt-power-cycle --prompt-screen --log captures/rcp-post-ladder-low-sample.txt
```
What this checks:
- `0x00`, `0x01`: no-op / ACK-like small commands.
- `0x03`: the outlier run produced `07 80 40 40 30 ED`.
- `0x07`, `0x0F`, `0x1F`: bit-mask/boundary values.
- `0x10`, `0x1B`: response command-family values observed in RCP frames.
### Ladder 2: Response-Command Echo Sample
Test host commands that match command bytes seen in RCP responses. If the CCU
acknowledges or advances using related command IDs, these are good candidates.
Observed RCP response command bytes so far:
```text
1B 36 40 6C 6D
```
Run:
```powershell
python scripts/serial_post_discovery_sweep.py --port COM5 --candidates "0x1B 0x36 0x40 0x6C 0x6D" --after-query 2.0 --prompt-power-cycle --prompt-screen --log captures/rcp-post-ladder-response-cmds.txt
```
Expand only if one of these changes screen state or produces a new
candidate-stage response.
### Ladder 3: Boundary and Bit-Pattern Sample
This tests command bytes that often mark command classes, flags, or boundaries:
```powershell
python scripts/serial_post_discovery_sweep.py --port COM5 --candidates "0x20 0x2F 0x30 0x3F 0x40 0x4F 0x50 0x5F 0x7F 0x80 0x8F 0x90 0x9F 0xA0 0xAF 0xB0 0xBF 0xC0 0xCF 0xE0 0xEF 0xF0 0xFF" --after-query 2.0 --prompt-power-cycle --prompt-screen --log captures/rcp-post-ladder-boundaries.txt
```
What this checks:
- Nibble/region boundaries.
- The high-bit transition at `0x80`.
- Known discovery query region around `0xB0`.
- High command space around `0xE0-0xFF`.
### Ladder 4: Known Query Region Sample
The `B0` range is known to produce discovery/status responses when used as the
selected query. It may also contain a next-stage command.
```powershell
python scripts/serial_post_discovery_sweep.py --port COM5 --candidates "0xB0 0xB1 0xB2 0xB3 0xB4 0xB5 0xB6 0xB7 0xB8 0xBF" --after-query 2.0 --prompt-power-cycle --prompt-screen --log captures/rcp-post-ladder-b-region.txt
```
If any `B` candidate changes behavior, expand locally around it rather than
sweeping the full byte space.
### Ladder 5: Alternate Discovery Response Bases
If all candidate ladders after `00 -> B5` leave the screen at `CONNECT NOT ACT`,
try the same sampled candidates after a different discovery query. Different RCP
responses may expect different follow-up ACKs.
Use `B2` discovery:
```powershell
python scripts/serial_post_discovery_sweep.py --port COM5 --query-command 0xB2 --candidates "0x00 0x01 0x1B 0x36 0x40 0x6C 0x6D 0x80 0xB0 0xB5 0xFF" --after-query 2.0 --prompt-power-cycle --prompt-screen --log captures/rcp-post-ladder-after-b2.txt
```
Use `B0` discovery:
```powershell
python scripts/serial_post_discovery_sweep.py --port COM5 --query-command 0xB0 --candidates "0x00 0x01 0x1B 0x36 0x40 0x6C 0x6D 0x80 0xB0 0xB5 0xFF" --after-query 2.0 --prompt-power-cycle --prompt-screen --log captures/rcp-post-ladder-after-b0.txt
```
Interpretation:
- If a candidate only works after one discovery response, the next-stage command
may depend on the returned block.
- If the same candidate works after multiple discovery responses, it is a
stronger activation/ACK candidate.
### When to Expand
Expand a region only when one of these occurs:
- Screen changes away from `CONNECT NOT ACT`.
- RCP sends a new candidate-stage frame that is not the known discovery response
trailing into the candidate window.
- The panel begins sending different heartbeat/status frames after the
candidate.
If none of the ladder samples produce a new behavior, stop command-byte guessing
and test other frame fields for the candidate stage: state byte, value byte, or
prefix bytes.
### 2026-05-13 Ladder 1 Result and Keepalive Hypothesis
Capture:
- `captures/rcp-post-ladder-low-sample.txt`
Ladder 1 candidates:
```text
00 01 03 07 0F 10 1B 1F
```
Result:
- Every sampled candidate left the screen at `CONNECT NOT ACT`.
- Candidate-stage RX was heartbeat-compatible for all candidates.
- The earlier `0x03` outlier did not reproduce.
- Query-stage response `07 80 6D 20 D8 48` reproduced reliably before each
candidate.
Interpretation:
- The low/outlier sample did not find a post-discovery activation/ACK command.
- `CONNECT NOT ACT` may be unrelated to a one-shot ACK. It may mean the RCP sees
host traffic but is not receiving the correct ongoing CCU heartbeat/session
cadence.
Alternative working model:
```text
Host sends discovery/status query
RCP answers once
Host must then send a sustained keepalive/session heartbeat
RCP remains CONNECT NOT ACT until that heartbeat/cadence is correct
```
### Keepalive After Discovery Tests
Use `scripts/serial_keepalive_after_query.py` to test whether a sustained host
heartbeat changes the RCP state after a known discovery response.
Default setup:
```text
primer: 00 00 00 00 80 DA
query: 00 00 B5 00 80 6F
RCP reply: 07 80 6D 20 D8 48
keepalive: repeated candidate frame
```
Test K1: repeat the known primer/heartbeat shape:
```powershell
python scripts/serial_keepalive_after_query.py --port COM5 --keepalive-command 0x00 --duration 15 --interval 0.6 --prompt-screen --log captures/rcp-keepalive-after-b5-cmd00-600ms.txt
```
Test K2: repeat the zero-state frame:
```powershell
python scripts/serial_keepalive_after_query.py --port COM5 --keepalive-frame "00 00 00 00 00 5A" --duration 15 --interval 0.6 --prompt-screen --log captures/rcp-keepalive-after-b5-zero-state-600ms.txt
```
Test K3: repeat the alternate state frame:
```powershell
python scripts/serial_keepalive_after_query.py --port COM5 --keepalive-frame "00 00 00 80 00 DA" --duration 15 --interval 0.6 --prompt-screen --log captures/rcp-keepalive-after-b5-state80-600ms.txt
```
Test K4: faster primer/heartbeat cadence:
```powershell
python scripts/serial_keepalive_after_query.py --port COM5 --keepalive-command 0x00 --duration 15 --interval 0.2 --prompt-screen --log captures/rcp-keepalive-after-b5-cmd00-200ms.txt
```
Power-cycle before each keepalive test. Watch for:
- Screen changing away from `CONNECT NOT ACT`.
- Pin 4 changing from heartbeat to another recurring status frame.
- RCP controls beginning to transmit additional button/status data.
### 2026-05-13 Keepalive After Discovery Result
Captures:
- `captures/rcp-keepalive-after-b5-cmd00-600ms.txt`
- `captures/rcp-keepalive-after-b5-zero-state-600ms.txt`
- `captures/rcp-keepalive-after-b5-state80-600ms.txt`
- `captures/rcp-keepalive-after-b5-cmd00-200ms.txt`
Result:
| Test | Keepalive frame | Cadence | Screen result | Pin 4 RX |
| --- | --- | --- | --- | --- |
| K1 | `00 00 00 00 80 DA` | 0.6 s | `CONNECT NOT ACT` | heartbeat-compatible |
| K2 | `00 00 00 00 00 5A` | 0.6 s | `CONNECT NOT ACT` | heartbeat-compatible |
| K3 | `00 00 00 80 00 DA` | 0.6 s | `CONNECT NOT ACT` | heartbeat-compatible |
| K4 | `00 00 00 00 80 DA` | 0.2 s | `CONNECT NOT ACT` | heartbeat-compatible |
Interpretation:
- A simple sustained host heartbeat after `00 -> B5` does not activate the RCP.
- The RCP continues emitting only the known heartbeat-compatible stream on pin
4 during these keepalive attempts.
- The correct next stage is probably not just "repeat the primer" or "hold a
no-op frame at CCU cadence".
- The better next branch is to map additional `primer -> request` commands that
cause one-shot RCP responses. Those response blocks may reveal the command
families, status bits, or identity data needed for the later activation step.
Recommended next request sweep:
```powershell
python scripts/serial_primer_candidate_sweep.py --port COM5 --candidates "0xB1 0xB6 0xB7 0xB8 0xB9 0xBA 0xBB 0xBC 0xBD 0xBE 0xBF" --prompt-power-cycle --log captures/rcp-primer-sweep-b1-bf.txt
```
Power-cycle before each candidate prompt. This fills the gaps around the known
`B0-B5` discovery/status region and checks whether `B8-BF` contain additional
one-shot readable blocks.
If this range is quiet, continue with neighboring command regions:
```powershell
python scripts/serial_primer_candidate_sweep.py --port COM5 --candidates "0xA0-0xAF" --prompt-power-cycle --log captures/rcp-primer-sweep-a0-af.txt
python scripts/serial_primer_candidate_sweep.py --port COM5 --candidates "0xC0-0xCF" --prompt-power-cycle --log captures/rcp-primer-sweep-c0-cf.txt
```

View File

@@ -0,0 +1,201 @@
#!/usr/bin/env python3
"""Send discovery query, then repeat a candidate host keepalive frame.
This tests the hypothesis that the RCP enters CONNECT NOT ACT because it sees
some host traffic but does not receive the expected ongoing CCU heartbeat.
"""
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_byte(text: str) -> int:
value = int(text, 0)
if not 0 <= value <= 0xFF:
raise argparse.ArgumentTypeError(f"must be a byte: {text}")
return value
def parse_hex_bytes(text: str) -> bytes:
parts = text.replace(",", " ").replace("0x", "").replace("0X", "").split()
values = [int(part, 16) for part in parts]
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 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 heartbeat_offset(data: bytes) -> int | None:
if not data:
return 0
for offset in range(len(HEARTBEAT)):
if all(byte == HEARTBEAT[(offset + index) % len(HEARTBEAT)] for index, byte in enumerate(data)):
return offset
return None
def classify_rx(data: bytes) -> str:
if not data:
return "no RX bytes"
offset = heartbeat_offset(data)
if offset is not None:
full = len(data) // len(HEARTBEAT)
extra = len(data) % len(HEARTBEAT)
return f"heartbeat-compatible RX: {len(data)} bytes, offset {offset}, {full} frames + {extra} bytes"
return f"NON_HEARTBEAT RX: {len(data)} bytes {hex_preview(data)}"
def read_window(ser: serial.Serial, duration: float) -> bytes:
stop_at = time.monotonic() + duration
data = bytearray()
while time.monotonic() < stop_at:
chunk = ser.read(128)
if chunk:
data.extend(chunk)
return bytes(data)
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(
description="Send discovery query, then repeat a candidate keepalive frame."
)
parser.add_argument("--port", required=True, help="serial port, for example COM5")
parser.add_argument("--baud", type=int, default=38400)
parser.add_argument("--primer-command", type=parse_byte, default=0x00)
parser.add_argument("--query-command", type=parse_byte, default=0xB5)
parser.add_argument("--state", type=parse_byte, default=0x00)
parser.add_argument("--value", type=parse_byte, default=0x80)
parser.add_argument(
"--keepalive-frame",
type=parse_hex_bytes,
help="explicit keepalive frame; default builds from --keepalive-command",
)
parser.add_argument("--keepalive-command", type=parse_byte, default=0x00)
parser.add_argument("--duration", type=float, default=10.0)
parser.add_argument("--interval", type=float, default=0.6)
parser.add_argument("--settle", type=float, default=3.0)
parser.add_argument("--after-query", type=float, default=2.0)
parser.add_argument("--timeout", type=float, default=0.03)
parser.add_argument("--log", help="append log to this file")
parser.add_argument("--prompt-screen", action="store_true")
parser.add_argument("--dry-run", action="store_true")
return parser.parse_args()
def main() -> int:
args = parse_args()
primer = build_frame(0x00, 0x00, args.primer_command, args.state, args.value)
query = build_frame(0x00, 0x00, args.query_command, args.state, args.value)
keepalive = args.keepalive_frame or build_frame(0x00, 0x00, args.keepalive_command, args.state, args.value)
if args.dry_run:
print(f"primer: {hex_preview(primer)}")
print(f"query: {hex_preview(query)}")
print(f"keepalive: {hex_preview(keepalive)} every {args.interval}s for {args.duration}s")
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=args.timeout,
write_timeout=1.0,
rtscts=False,
dsrdtr=False,
xonxoff=False,
) as ser:
ser.reset_input_buffer()
emit(f"Keepalive-after-query on {ser.port} at {ser.baudrate} 8N1")
emit(f"Primer {hex_preview(primer)}; query {hex_preview(query)}; keepalive {hex_preview(keepalive)}")
emit(f"BASELINE {classify_rx(read_window(ser, args.settle))}")
stamp = dt.datetime.now().strftime("%H:%M:%S.%f")[:-3]
emit(f"{stamp} TX primer {hex_preview(primer)}")
ser.write(primer)
ser.flush()
emit(f"{stamp} PRIMER RX {classify_rx(read_window(ser, args.interval))}")
stamp = dt.datetime.now().strftime("%H:%M:%S.%f")[:-3]
emit(f"{stamp} TX query {hex_preview(query)}")
ser.write(query)
ser.flush()
emit(f"{stamp} QUERY RX {classify_rx(read_window(ser, args.after_query))}")
stop_at = time.monotonic() + args.duration
count = 0
while time.monotonic() < stop_at:
stamp = dt.datetime.now().strftime("%H:%M:%S.%f")[:-3]
ser.write(keepalive)
ser.flush()
count += 1
emit(f"{stamp} TX keepalive {count:03d} {hex_preview(keepalive)}")
rx = read_window(ser, min(args.interval, max(0.0, stop_at - time.monotonic())))
if rx:
emit(f"{stamp} KEEPALIVE RX {classify_rx(rx)}")
if args.prompt_screen:
screen = input("Screen after keepalive run (blank = no change): ").strip()
if screen:
stamp = dt.datetime.now().strftime("%H:%M:%S.%f")[:-3]
emit(f"{stamp} SCREEN {screen}")
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())