source: ResearchApps/PHY/WARPLAB/ResearchExamples/LTE_Setup/LTE_MATLAB_Reference_Files/1user_mimo/warplab_readAGCGains.m

Last change on this file was 1590, checked in by mduarte, 14 years ago
File size: 1.8 KB
Line 
1function [GainsRF,GainsBB] = warplab_readAGCGains(nodeHandle)
2
3warplab_defines
4
5pktNoTx = 1;
6
7% Set the packet to be sent to the WARP node
8pktDataTx = [pktNoTx, READ_AGC_GAINS];
9
10datarec = warplab_pktSend(nodeHandle, pktDataTx);
11pktNoTx = pktNoTx+1;
12
13GainsRF = [3,3,3,3];
14GainsBB = [17,17,17,17];
15
16if(length(datarec)<4)
17    disp('warplab_readAGCGains len datarec<4');
18        return;
19end
20
21RawGainData =  datarec(4);
22
23%Process Raw Gain Data (RawGainData) to obtain meaningful gain values
24%Mangle the received data
25%Each received sample is a 32-bit value:
26% [Gains_D Gains_C Gains_B Gains_A]
27% Gains_A: [GainBB_A,GainRF_A]
28% Gains_B: [GainBB_B,GainRF_B]
29% Gains_C: [GainBB_C,GainRF_C]
30% Gains_D: [GainBB_D,GainRF_D]
31% Each GainsX is 8 bits:
32% GainRF: 2 bits
33% GainBB: 5 bits
34% 1 unused bitv
35
36Gains_A = uint16(bitand(RawGainData, hex2dec('000000FF')));
37Gains_B = uint16(bitand(bitshift(RawGainData, -8),hex2dec('000000FF')));
38Gains_C = uint16(bitand(bitshift(RawGainData, -16),hex2dec('000000FF')));
39Gains_D = uint16(bitand(bitshift(RawGainData, -24),hex2dec('000000FF')));
40
41GainRF_A = uint16(bitand(Gains_A,hex2dec('03')));
42GainRF_B = uint16(bitand(Gains_B,hex2dec('03')));
43GainRF_C = uint16(bitand(Gains_C,hex2dec('03')));
44GainRF_D = uint16(bitand(Gains_D,hex2dec('03')));
45GainsRF = [GainRF_A, GainRF_B, GainRF_C, GainRF_D];
46GainsRF = double(GainsRF);
47
48GainBB_A = uint16(bitand(Gains_A,hex2dec('FC')));
49GainBB_B = uint16(bitand(Gains_B,hex2dec('FC')));
50GainBB_C = uint16(bitand(Gains_C,hex2dec('FC')));
51GainBB_D = uint16(bitand(Gains_D,hex2dec('FC')));
52GainBB_A = uint16(bitshift(Gains_A,-2));
53GainBB_B = uint16(bitshift(Gains_B,-2));
54GainBB_C = uint16(bitshift(Gains_C,-2));
55GainBB_D = uint16(bitshift(Gains_D,-2));
56GainsBB = [GainBB_A, GainBB_B, GainBB_C, GainBB_D];
57GainsBB = double(GainsBB);
58
59
Note: See TracBrowser for help on using the repository browser.