1 | function [GainsRF,GainsBB] = warplab_processRawAGCGainsData(RawGainData) |
---|
2 | |
---|
3 | %Process Raw Gain Data (RawGainData) to obtain meaningful gain values |
---|
4 | %Mangle the received data |
---|
5 | %Each received sample is a 32-bit value: |
---|
6 | % [Gains_D Gains_C Gains_B Gains_A] |
---|
7 | % Gains_A: [GainBB_A,GainRF_A] |
---|
8 | % Gains_B: [GainBB_B,GainRF_B] |
---|
9 | % Gains_C: [GainBB_C,GainRF_C] |
---|
10 | % Gains_D: [GainBB_D,GainRF_D] |
---|
11 | % Each GainsX is 8 bits: |
---|
12 | % GainRF: 2 bits |
---|
13 | % GainBB: 5 bits |
---|
14 | % 1 unused bit |
---|
15 | |
---|
16 | Gains_A = uint16(bitand(RawGainData, hex2dec('000000FF'))); |
---|
17 | Gains_B = uint16(bitand(bitshift(RawGainData, -8),hex2dec('000000FF'))); |
---|
18 | Gains_C = uint16(bitand(bitshift(RawGainData, -16),hex2dec('000000FF'))); |
---|
19 | Gains_D = uint16(bitand(bitshift(RawGainData, -24),hex2dec('000000FF'))); |
---|
20 | |
---|
21 | GainRF_A = uint16(bitand(Gains_A,hex2dec('03'))); |
---|
22 | GainRF_B = uint16(bitand(Gains_B,hex2dec('03'))); |
---|
23 | GainRF_C = uint16(bitand(Gains_C,hex2dec('03'))); |
---|
24 | GainRF_D = uint16(bitand(Gains_D,hex2dec('03'))); |
---|
25 | GainsRF = [GainRF_A, GainRF_B, GainRF_C, GainRF_D]; |
---|
26 | GainsRF = double(GainsRF); |
---|
27 | % GainRF_A: RF gains set by radio on daughtercard slot 1 |
---|
28 | % GainRF_B: RF gains set by radio on daughtercard slot 2 |
---|
29 | % GainRF_C: RF gains set by radio on daughtercard slot 3 |
---|
30 | % GainRF_D: RF gains set by radio on daughtercard slot 4 |
---|
31 | |
---|
32 | GainBB_A = uint16(bitand(Gains_A,hex2dec('FC'))); |
---|
33 | GainBB_B = uint16(bitand(Gains_B,hex2dec('FC'))); |
---|
34 | GainBB_C = uint16(bitand(Gains_C,hex2dec('FC'))); |
---|
35 | GainBB_D = uint16(bitand(Gains_D,hex2dec('FC'))); |
---|
36 | GainBB_A = uint16(bitshift(Gains_A,-2)); |
---|
37 | GainBB_B = uint16(bitshift(Gains_B,-2)); |
---|
38 | GainBB_C = uint16(bitshift(Gains_C,-2)); |
---|
39 | GainBB_D = uint16(bitshift(Gains_D,-2)); |
---|
40 | GainsBB = [GainBB_A, GainBB_B, GainBB_C, GainBB_D]; |
---|
41 | GainsBB = double(GainsBB); |
---|
42 | % GainBB_A: BaseBand gains set by radio on daughtercard slot 1 |
---|
43 | % GainBB_B: BaseBand gains set by radio on daughtercard slot 2 |
---|
44 | % GainBB_C: BaseBand gains set by radio on daughtercard slot 3 |
---|
45 | % GainBB_D: BaseBand gains set by radio on daughtercard slot 4 |
---|
46 | |
---|
47 | |
---|