xref: /openwifi/user_space/side_ch_ctl_src/test_side_info_file_display.m (revision e556af35c696ecef552192823e107caf37eb6af9)
1% Xianjun Jiao. [email protected]; [email protected]
2
3function timestamp = test_side_info_file_display(num_eq, side_info_filename, idx_to_check)
4close all;
5
6if exist('num_eq', 'var')==0 || isempty(num_eq)
7    num_eq = 8;
8end
9
10if exist('side_info_filename', 'var')==0 || isempty(side_info_filename)
11    side_info_filename = 'side_info.txt';
12end
13
14if exist('idx_to_check', 'var')==0 || isempty(idx_to_check)
15    idx_to_check = 1;
16end
17
18a = load(side_info_filename);
19len_a = floor(length(a)/4)*4;
20a = a(1:len_a);
21
22b = reshape(a, [4, length(a)/4])';
23num_data_in_each_side_info = 2+56+num_eq*52;
24num_side_info = floor(size(b,1)/num_data_in_each_side_info);
25
26side_info = zeros(num_data_in_each_side_info, num_side_info);
27timestamp = uint64(zeros(1, num_side_info));
28freq_offset = zeros(1, num_side_info);
29csi = zeros(56, num_side_info);
30equalizer = zeros(num_eq*52, num_side_info);
31
32b = uint16(b);
33for i=1:num_side_info
34    sp = (i-1)*num_data_in_each_side_info + 1;
35    ep = i*num_data_in_each_side_info;
36    timestamp(i) = uint64(b(sp,1)) + (2^16)*uint64(b(sp,2)) + (2^32)*uint64(b(sp,3)) + (2^48)*uint64(b(sp,4));
37    freq_offset(i) = (20e6*double(typecast(b(sp+1,1),'int16'))/512)/(2*pi);
38    side_info(:,i) = double(typecast(b(sp:ep,1),'int16')) + 1i.*double(typecast(b(sp:ep,2),'int16'));
39    csi(:,i) = side_info(3:58,i);
40    equalizer(:,i) = side_info(59:end,i);
41end
42
43csi = [csi(29:end,:); csi(1:28,:)];
44equalizer = equalizer(:);
45equalizer(equalizer == 32767+1i*32767) = NaN;
46
47subplot(2,1,1); plot(abs(csi)); title('CSI'); ylabel('abs'); grid on;
48subplot(2,1,2); plot(angle(csi)); ylabel('phase'); xlabel('subcarrier'); grid on;
49
50if ~isempty(equalizer)
51    scatterplot(equalizer); grid on;
52end
53
54figure; plot(timestamp,'b+-'); title('time stamp (TSF value)'); ylabel('us'); xlabel('packet');  grid on;
55figure; plot(freq_offset); title('freq offset (Hz)'); ylabel('Hz'); xlabel('packet'); grid on;
56
57figure;
58subplot(2,1,1); plot(abs(csi(:,idx_to_check))); title('CSI'); ylabel('abs'); grid on; title(['Capture idx ' num2str(idx_to_check) ' timestamp ' num2str(timestamp(idx_to_check))]);
59subplot(2,1,2); plot(angle(csi(:,idx_to_check))); ylabel('phase'); xlabel('subcarrier'); grid on;
60