Skip to content

Commit 0848684

Browse files
committed
V31-V33 bisection: BIST holds through packet 9500, transition in (9500, 10000)
V31 (8200): BIST OK -- rules out 2^13=8192 wrap hypothesis V32 (9000): BIST OK V33 (9500): BIST OK Bracket narrowed from (8000, 10000) to (9500, 10000) -- only 500 packets wide. Per-packet errors on pkts 1-7 (preamble/idle bits) creeping up from 45-50% (early variants) to 50-62% (V33), but pkt0 still 0/120. Transition remains a sharp step, not a gradual ramp. Next: V34/V35/V36 at 9700/9800/9900 in parallel.
1 parent 8fe7a74 commit 0848684

9 files changed

Lines changed: 798 additions & 0 deletions
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
classdef HardwarePostDescD8200Test < matlab.unittest.TestCase
2+
%HARDWAREPOSTDESCD8200TEST Read the V24_postdesc_d100 1024-bit buffer
3+
% via AXI4-Lite. Tap is POST-Descrambler dataOut (same as V16/V23),
4+
% arm delayed to the 101st dstart pulse (~3 ms past boot, ~packet 100).
5+
% Bisects when the chain transitions from cold-start-perfect
6+
% (V16, V18, packet 0) to limit-cycle (V22, V23, packet ~10000).
7+
%
8+
% Wave 3 hypothesis test:
9+
% - If V24 yields BIST data ("ADI Hello World" with V15-style ramp),
10+
% the transition happens between packet 100 and 10000 -> drop
11+
% the next threshold to 1000, 5000.
12+
% - If V24 already yields the V23 limit-cycle pattern, the
13+
% transition is earlier -> next threshold = 10.
14+
%
15+
% Selector: iq_debug_mux @ 0x9D00010C (5 LSBs, 0..31)
16+
% Output: capture_word_out @ 0x9D00011C (32-bit word, 32 = 1024 bits)
17+
18+
properties (Constant)
19+
AxiCaptureWord = '0x9D00011C';
20+
AxiMuxSelect = '0x9D00010C';
21+
SshTimeoutSec = 5;
22+
SettleSec = 6;
23+
end
24+
25+
methods (TestClassSetup)
26+
function setupPath(testCase)
27+
here = fileparts(mfilename('fullpath'));
28+
addpath(here);
29+
tbxRoot = fileparts(fileparts(fileparts(here)));
30+
setupM = fullfile(tbxRoot, 'setup.m');
31+
if exist(setupM, 'file') == 2, run(setupM); end
32+
end
33+
end
34+
35+
methods (Test, TestTags = {'Hardware'})
36+
function decodePostDescD8200(testCase)
37+
[rc,~] = BistRegisters.sshExec('true', testCase.SshTimeoutSec);
38+
testCase.assumeEqual(rc, 0, 'Jupiter at 10.0.0.146 not reachable');
39+
40+
pause(testCase.SettleSec);
41+
42+
words = zeros(1,32,'uint32');
43+
for i = 0:31
44+
BistRegisters.write(testCase.AxiMuxSelect, i, testCase.SshTimeoutSec);
45+
pause(0.02);
46+
words(i+1) = uint32(BistRegisters.read(testCase.AxiCaptureWord, testCase.SshTimeoutSec));
47+
end
48+
49+
bits = false(1,1024);
50+
for i = 0:1023
51+
w = floor(i/32) + 1;
52+
b = mod(i,32);
53+
bits(i+1) = bitand(words(w), bitshift(uint32(1), b)) ~= 0;
54+
end
55+
56+
% NOTE: tap is post-Descrambler, so bits ARE the BIST data
57+
% directly -- no MATLAB descrambling needed.
58+
refMsg = dec2bin('ADI Hello World', 8);
59+
refBits = logical(reshape((refMsg - '0').', 1, []));
60+
61+
captured = bits;
62+
bestShift = 0; bestMatch = -inf;
63+
tgt = repmat(refBits, 1, ceil(1024/120));
64+
tgt = tgt(1:1024);
65+
for shift = 0:119
66+
rotated = [captured(shift+1:end) captured(1:shift)];
67+
m = sum(rotated == tgt);
68+
if m > bestMatch, bestMatch = m; bestShift = shift; end
69+
end
70+
71+
aligned = [captured(bestShift+1:end) captured(1:bestShift)];
72+
73+
nPackets = floor(1024/120);
74+
errMatrix = zeros(nPackets, 120, 'uint8');
75+
for p = 0:nPackets-1
76+
window = aligned(p*120+1 : (p+1)*120);
77+
errMatrix(p+1,:) = uint8(window ~= refBits);
78+
end
79+
80+
fprintf('\n=== V24 post-Descrambler decode (~packet 100, early steady-state) ===\n');
81+
fprintf('Best alignment shift: %d bits\n', bestShift);
82+
fprintf('Total matches: %d / 1024 (%.2f%%)\n', bestMatch, 100*bestMatch/1024);
83+
fprintf('\nPer-packet errors:\n');
84+
for p = 0:nPackets-1
85+
fprintf(' pkt%d: %d / 120 (%.2f%%)\n', p, sum(errMatrix(p+1,:)), ...
86+
100*sum(errMatrix(p+1,:))/120);
87+
end
88+
89+
% Per-bit-position error count across packets (= V15-style)
90+
colSums = sum(errMatrix, 1);
91+
fprintf('\nPer-bit-position error count (across %d packets):\n', nPackets);
92+
for b = 0:119
93+
fprintf(' bit %3d (byte %2d:%d): %d\n', b, floor(b/8), mod(b,8), colSums(b+1));
94+
end
95+
96+
pkt0 = aligned(1:120);
97+
bytes = zeros(1,15,'uint8');
98+
for k = 0:14
99+
v = uint8(0);
100+
for bit = 0:7
101+
if pkt0(k*8 + bit + 1)
102+
v = bitor(v, bitshift(uint8(1), 7-bit));
103+
end
104+
end
105+
bytes(k+1) = v;
106+
end
107+
fprintf('\nRecovered packet 0 ASCII: ''%s''\n', char(bytes));
108+
109+
outDir = fullfile(fileparts(mfilename('fullpath')),'test-results');
110+
if ~exist(outDir,'dir'), mkdir(outDir); end
111+
out = struct();
112+
out.rawWords = double(words);
113+
out.bestShift = bestShift;
114+
out.bestMatch = bestMatch;
115+
out.errMatrix = double(errMatrix);
116+
out.colSums = double(colSums);
117+
out.perPacketErrs = double(sum(errMatrix, 2)');
118+
out.recoveredASCII = char(bytes);
119+
fid = fopen(fullfile(outDir,'postDescD8200.json'),'w');
120+
fprintf(fid, '%s', jsonencode(out));
121+
fclose(fid);
122+
123+
testCase.verifyGreaterThan(bestMatch, 0, 'No bits matched -- buffer never armed?');
124+
end
125+
end
126+
end
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
classdef HardwarePostDescD9000Test < matlab.unittest.TestCase
2+
%HARDWAREPOSTDESCD9000TEST Read the V24_postdesc_d100 1024-bit buffer
3+
% via AXI4-Lite. Tap is POST-Descrambler dataOut (same as V16/V23),
4+
% arm delayed to the 101st dstart pulse (~3 ms past boot, ~packet 100).
5+
% Bisects when the chain transitions from cold-start-perfect
6+
% (V16, V18, packet 0) to limit-cycle (V22, V23, packet ~10000).
7+
%
8+
% Wave 3 hypothesis test:
9+
% - If V24 yields BIST data ("ADI Hello World" with V15-style ramp),
10+
% the transition happens between packet 100 and 10000 -> drop
11+
% the next threshold to 1000, 5000.
12+
% - If V24 already yields the V23 limit-cycle pattern, the
13+
% transition is earlier -> next threshold = 10.
14+
%
15+
% Selector: iq_debug_mux @ 0x9D00010C (5 LSBs, 0..31)
16+
% Output: capture_word_out @ 0x9D00011C (32-bit word, 32 = 1024 bits)
17+
18+
properties (Constant)
19+
AxiCaptureWord = '0x9D00011C';
20+
AxiMuxSelect = '0x9D00010C';
21+
SshTimeoutSec = 5;
22+
SettleSec = 6;
23+
end
24+
25+
methods (TestClassSetup)
26+
function setupPath(testCase)
27+
here = fileparts(mfilename('fullpath'));
28+
addpath(here);
29+
tbxRoot = fileparts(fileparts(fileparts(here)));
30+
setupM = fullfile(tbxRoot, 'setup.m');
31+
if exist(setupM, 'file') == 2, run(setupM); end
32+
end
33+
end
34+
35+
methods (Test, TestTags = {'Hardware'})
36+
function decodePostDescD9000(testCase)
37+
[rc,~] = BistRegisters.sshExec('true', testCase.SshTimeoutSec);
38+
testCase.assumeEqual(rc, 0, 'Jupiter at 10.0.0.146 not reachable');
39+
40+
pause(testCase.SettleSec);
41+
42+
words = zeros(1,32,'uint32');
43+
for i = 0:31
44+
BistRegisters.write(testCase.AxiMuxSelect, i, testCase.SshTimeoutSec);
45+
pause(0.02);
46+
words(i+1) = uint32(BistRegisters.read(testCase.AxiCaptureWord, testCase.SshTimeoutSec));
47+
end
48+
49+
bits = false(1,1024);
50+
for i = 0:1023
51+
w = floor(i/32) + 1;
52+
b = mod(i,32);
53+
bits(i+1) = bitand(words(w), bitshift(uint32(1), b)) ~= 0;
54+
end
55+
56+
% NOTE: tap is post-Descrambler, so bits ARE the BIST data
57+
% directly -- no MATLAB descrambling needed.
58+
refMsg = dec2bin('ADI Hello World', 8);
59+
refBits = logical(reshape((refMsg - '0').', 1, []));
60+
61+
captured = bits;
62+
bestShift = 0; bestMatch = -inf;
63+
tgt = repmat(refBits, 1, ceil(1024/120));
64+
tgt = tgt(1:1024);
65+
for shift = 0:119
66+
rotated = [captured(shift+1:end) captured(1:shift)];
67+
m = sum(rotated == tgt);
68+
if m > bestMatch, bestMatch = m; bestShift = shift; end
69+
end
70+
71+
aligned = [captured(bestShift+1:end) captured(1:bestShift)];
72+
73+
nPackets = floor(1024/120);
74+
errMatrix = zeros(nPackets, 120, 'uint8');
75+
for p = 0:nPackets-1
76+
window = aligned(p*120+1 : (p+1)*120);
77+
errMatrix(p+1,:) = uint8(window ~= refBits);
78+
end
79+
80+
fprintf('\n=== V24 post-Descrambler decode (~packet 100, early steady-state) ===\n');
81+
fprintf('Best alignment shift: %d bits\n', bestShift);
82+
fprintf('Total matches: %d / 1024 (%.2f%%)\n', bestMatch, 100*bestMatch/1024);
83+
fprintf('\nPer-packet errors:\n');
84+
for p = 0:nPackets-1
85+
fprintf(' pkt%d: %d / 120 (%.2f%%)\n', p, sum(errMatrix(p+1,:)), ...
86+
100*sum(errMatrix(p+1,:))/120);
87+
end
88+
89+
% Per-bit-position error count across packets (= V15-style)
90+
colSums = sum(errMatrix, 1);
91+
fprintf('\nPer-bit-position error count (across %d packets):\n', nPackets);
92+
for b = 0:119
93+
fprintf(' bit %3d (byte %2d:%d): %d\n', b, floor(b/8), mod(b,8), colSums(b+1));
94+
end
95+
96+
pkt0 = aligned(1:120);
97+
bytes = zeros(1,15,'uint8');
98+
for k = 0:14
99+
v = uint8(0);
100+
for bit = 0:7
101+
if pkt0(k*8 + bit + 1)
102+
v = bitor(v, bitshift(uint8(1), 7-bit));
103+
end
104+
end
105+
bytes(k+1) = v;
106+
end
107+
fprintf('\nRecovered packet 0 ASCII: ''%s''\n', char(bytes));
108+
109+
outDir = fullfile(fileparts(mfilename('fullpath')),'test-results');
110+
if ~exist(outDir,'dir'), mkdir(outDir); end
111+
out = struct();
112+
out.rawWords = double(words);
113+
out.bestShift = bestShift;
114+
out.bestMatch = bestMatch;
115+
out.errMatrix = double(errMatrix);
116+
out.colSums = double(colSums);
117+
out.perPacketErrs = double(sum(errMatrix, 2)');
118+
out.recoveredASCII = char(bytes);
119+
fid = fopen(fullfile(outDir,'postDescD9000.json'),'w');
120+
fprintf(fid, '%s', jsonencode(out));
121+
fclose(fid);
122+
123+
testCase.verifyGreaterThan(bestMatch, 0, 'No bits matched -- buffer never armed?');
124+
end
125+
end
126+
end
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
classdef HardwarePostDescD9500Test < matlab.unittest.TestCase
2+
%HARDWAREPOSTDESCD9500TEST Read the V24_postdesc_d100 1024-bit buffer
3+
% via AXI4-Lite. Tap is POST-Descrambler dataOut (same as V16/V23),
4+
% arm delayed to the 101st dstart pulse (~3 ms past boot, ~packet 100).
5+
% Bisects when the chain transitions from cold-start-perfect
6+
% (V16, V18, packet 0) to limit-cycle (V22, V23, packet ~10000).
7+
%
8+
% Wave 3 hypothesis test:
9+
% - If V24 yields BIST data ("ADI Hello World" with V15-style ramp),
10+
% the transition happens between packet 100 and 10000 -> drop
11+
% the next threshold to 1000, 5000.
12+
% - If V24 already yields the V23 limit-cycle pattern, the
13+
% transition is earlier -> next threshold = 10.
14+
%
15+
% Selector: iq_debug_mux @ 0x9D00010C (5 LSBs, 0..31)
16+
% Output: capture_word_out @ 0x9D00011C (32-bit word, 32 = 1024 bits)
17+
18+
properties (Constant)
19+
AxiCaptureWord = '0x9D00011C';
20+
AxiMuxSelect = '0x9D00010C';
21+
SshTimeoutSec = 5;
22+
SettleSec = 6;
23+
end
24+
25+
methods (TestClassSetup)
26+
function setupPath(testCase)
27+
here = fileparts(mfilename('fullpath'));
28+
addpath(here);
29+
tbxRoot = fileparts(fileparts(fileparts(here)));
30+
setupM = fullfile(tbxRoot, 'setup.m');
31+
if exist(setupM, 'file') == 2, run(setupM); end
32+
end
33+
end
34+
35+
methods (Test, TestTags = {'Hardware'})
36+
function decodePostDescD9500(testCase)
37+
[rc,~] = BistRegisters.sshExec('true', testCase.SshTimeoutSec);
38+
testCase.assumeEqual(rc, 0, 'Jupiter at 10.0.0.146 not reachable');
39+
40+
pause(testCase.SettleSec);
41+
42+
words = zeros(1,32,'uint32');
43+
for i = 0:31
44+
BistRegisters.write(testCase.AxiMuxSelect, i, testCase.SshTimeoutSec);
45+
pause(0.02);
46+
words(i+1) = uint32(BistRegisters.read(testCase.AxiCaptureWord, testCase.SshTimeoutSec));
47+
end
48+
49+
bits = false(1,1024);
50+
for i = 0:1023
51+
w = floor(i/32) + 1;
52+
b = mod(i,32);
53+
bits(i+1) = bitand(words(w), bitshift(uint32(1), b)) ~= 0;
54+
end
55+
56+
% NOTE: tap is post-Descrambler, so bits ARE the BIST data
57+
% directly -- no MATLAB descrambling needed.
58+
refMsg = dec2bin('ADI Hello World', 8);
59+
refBits = logical(reshape((refMsg - '0').', 1, []));
60+
61+
captured = bits;
62+
bestShift = 0; bestMatch = -inf;
63+
tgt = repmat(refBits, 1, ceil(1024/120));
64+
tgt = tgt(1:1024);
65+
for shift = 0:119
66+
rotated = [captured(shift+1:end) captured(1:shift)];
67+
m = sum(rotated == tgt);
68+
if m > bestMatch, bestMatch = m; bestShift = shift; end
69+
end
70+
71+
aligned = [captured(bestShift+1:end) captured(1:bestShift)];
72+
73+
nPackets = floor(1024/120);
74+
errMatrix = zeros(nPackets, 120, 'uint8');
75+
for p = 0:nPackets-1
76+
window = aligned(p*120+1 : (p+1)*120);
77+
errMatrix(p+1,:) = uint8(window ~= refBits);
78+
end
79+
80+
fprintf('\n=== V24 post-Descrambler decode (~packet 100, early steady-state) ===\n');
81+
fprintf('Best alignment shift: %d bits\n', bestShift);
82+
fprintf('Total matches: %d / 1024 (%.2f%%)\n', bestMatch, 100*bestMatch/1024);
83+
fprintf('\nPer-packet errors:\n');
84+
for p = 0:nPackets-1
85+
fprintf(' pkt%d: %d / 120 (%.2f%%)\n', p, sum(errMatrix(p+1,:)), ...
86+
100*sum(errMatrix(p+1,:))/120);
87+
end
88+
89+
% Per-bit-position error count across packets (= V15-style)
90+
colSums = sum(errMatrix, 1);
91+
fprintf('\nPer-bit-position error count (across %d packets):\n', nPackets);
92+
for b = 0:119
93+
fprintf(' bit %3d (byte %2d:%d): %d\n', b, floor(b/8), mod(b,8), colSums(b+1));
94+
end
95+
96+
pkt0 = aligned(1:120);
97+
bytes = zeros(1,15,'uint8');
98+
for k = 0:14
99+
v = uint8(0);
100+
for bit = 0:7
101+
if pkt0(k*8 + bit + 1)
102+
v = bitor(v, bitshift(uint8(1), 7-bit));
103+
end
104+
end
105+
bytes(k+1) = v;
106+
end
107+
fprintf('\nRecovered packet 0 ASCII: ''%s''\n', char(bytes));
108+
109+
outDir = fullfile(fileparts(mfilename('fullpath')),'test-results');
110+
if ~exist(outDir,'dir'), mkdir(outDir); end
111+
out = struct();
112+
out.rawWords = double(words);
113+
out.bestShift = bestShift;
114+
out.bestMatch = bestMatch;
115+
out.errMatrix = double(errMatrix);
116+
out.colSums = double(colSums);
117+
out.perPacketErrs = double(sum(errMatrix, 2)');
118+
out.recoveredASCII = char(bytes);
119+
fid = fopen(fullfile(outDir,'postDescD9500.json'),'w');
120+
fprintf(fid, '%s', jsonencode(out));
121+
fclose(fid);
122+
123+
testCase.verifyGreaterThan(bestMatch, 0, 'No bits matched -- buffer never armed?');
124+
end
125+
end
126+
end
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"rawWords":[7.6685954E+7,9.09551122E+8,4.14253183E+9,4.72266318E+8,3.370152504E+9,2.382832513E+9,3.765581852E+9,1.19767496E+8,1.91627995E+9,5.95708128E+8,9.41395463E+8,2.177425522E+9,4.79069987E+8,3.370152504E+9,2.382832513E+9,3.765581852E+9,1.19767496E+8,1.91627995E+9,5.95708128E+8,9.41395463E+8,2.177425522E+9,4.79069987E+8,3.370152504E+9,2.382832513E+9,3.765581852E+9,1.19767496E+8,1.91627995E+9,5.95708128E+8,9.41395463E+8,2.177425522E+9,4.79069987E+8,3.370152504E+9],"bestShift":0,"bestMatch":597,"errMatrix":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,0,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,0,1,1,1,0,1,0,1,1,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,1,1,0,0,1,0,0,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,1],[1,0,0,0,0,1,0,1,1,0,1,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,0,1,0,0,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,0,0,1,0,0,1,0,1,1,0,1,1,1,0,0,0,1,1,1,1,0,0,1,0,0,1,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,1,0],[0,1,0,0,0,1,1,0,0,1,0,1,0,1,1,1,1,1,0,0,1,0,0,0,1,1,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,1,1,0,1,0,0,0,1,0,0,1,1,1,0,1,1,1,0,1,0,1,1,0,1,1,0,1,0,0,0,1,1,0,0,0,0,0,1,0,1,0,1],[0,1,1,1,1,0,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,0,1,1,1,0,1,0,1,1,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,1,1,0,0,1,0,0,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,1],[1,0,0,0,0,1,0,1,1,0,1,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,0,1,0,0,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,0,0,1,0,0,1,0,1,1,0,1,1,1,0,0,0,1,1,1,1,0,0,1,0,0,1,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,1,0],[0,1,0,0,0,1,1,0,0,1,0,1,0,1,1,1,1,1,0,0,1,0,0,0,1,1,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,1,1,0,1,0,0,0,1,0,0,1,1,1,0,1,1,1,0,1,0,1,1,0,1,1,0,1,0,0,0,1,1,0,0,0,0,0,1,0,1,0,1],[0,1,1,1,1,0,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,0,1,1,1,0,1,0,1,1,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,1,1,0,0,1,0,0,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,1]],"colSums":[2,5,3,3,3,4,2,5,2,5,2,5,3,4,2,2,2,2,2,2,4,3,3,3,2,2,5,2,2,5,3,3,2,5,2,5,5,2,3,3,3,3,5,2,2,5,2,2,3,4,5,2,5,2,2,2,3,4,4,4,5,5,2,2,2,2,4,3,5,5,5,2,2,2,4,3,3,4,2,2,2,5,2,2,3,4,5,5,2,2,5,2,4,4,4,3,2,5,5,5,2,5,4,3,2,5,5,5,5,5,3,3,3,3,5,2,2,5,2,5],"perPacketErrs":[0,59,59,51,59,59,51,59],"recoveredASCII":"ADI Hello World"}

0 commit comments

Comments
 (0)