[1590] | 1 | function [GainsRF,GainsBB] = warplab_readAGCGains(nodeHandle) |
---|
| 2 | |
---|
| 3 | warplab_defines |
---|
| 4 | |
---|
| 5 | pktNoTx = 1; |
---|
| 6 | |
---|
| 7 | % Set the packet to be sent to the WARP node |
---|
| 8 | pktDataTx = [pktNoTx, READ_AGC_GAINS]; |
---|
| 9 | |
---|
| 10 | datarec = warplab_pktSend(nodeHandle, pktDataTx); |
---|
| 11 | pktNoTx = pktNoTx+1; |
---|
| 12 | |
---|
| 13 | GainsRF = [3,3,3,3]; |
---|
| 14 | GainsBB = [17,17,17,17]; |
---|
| 15 | |
---|
| 16 | if(length(datarec)<4) |
---|
| 17 | disp('warplab_readAGCGains len datarec<4'); |
---|
| 18 | return; |
---|
| 19 | end |
---|
| 20 | |
---|
| 21 | RawGainData = 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 | |
---|
| 36 | Gains_A = uint16(bitand(RawGainData, hex2dec('000000FF'))); |
---|
| 37 | Gains_B = uint16(bitand(bitshift(RawGainData, -8),hex2dec('000000FF'))); |
---|
| 38 | Gains_C = uint16(bitand(bitshift(RawGainData, -16),hex2dec('000000FF'))); |
---|
| 39 | Gains_D = uint16(bitand(bitshift(RawGainData, -24),hex2dec('000000FF'))); |
---|
| 40 | |
---|
| 41 | GainRF_A = uint16(bitand(Gains_A,hex2dec('03'))); |
---|
| 42 | GainRF_B = uint16(bitand(Gains_B,hex2dec('03'))); |
---|
| 43 | GainRF_C = uint16(bitand(Gains_C,hex2dec('03'))); |
---|
| 44 | GainRF_D = uint16(bitand(Gains_D,hex2dec('03'))); |
---|
| 45 | GainsRF = [GainRF_A, GainRF_B, GainRF_C, GainRF_D]; |
---|
| 46 | GainsRF = double(GainsRF); |
---|
| 47 | |
---|
| 48 | GainBB_A = uint16(bitand(Gains_A,hex2dec('FC'))); |
---|
| 49 | GainBB_B = uint16(bitand(Gains_B,hex2dec('FC'))); |
---|
| 50 | GainBB_C = uint16(bitand(Gains_C,hex2dec('FC'))); |
---|
| 51 | GainBB_D = uint16(bitand(Gains_D,hex2dec('FC'))); |
---|
| 52 | GainBB_A = uint16(bitshift(Gains_A,-2)); |
---|
| 53 | GainBB_B = uint16(bitshift(Gains_B,-2)); |
---|
| 54 | GainBB_C = uint16(bitshift(Gains_C,-2)); |
---|
| 55 | GainBB_D = uint16(bitshift(Gains_D,-2)); |
---|
| 56 | GainsBB = [GainBB_A, GainBB_B, GainBB_C, GainBB_D]; |
---|
| 57 | GainsBB = double(GainsBB); |
---|
| 58 | |
---|
| 59 | |
---|