function [RxData,RxOTR] = warplab_processRawRxData_W3(RawRxData) %Mangle the received data %Each received sample is a 32-bit value: % [OTR_I 0 RX_I OTR_Q 0 RX_Q] % OTR_I/OTR_Q: UFix1_0, incidates ADC overflow % 0: UFix1_0, always zero % RX_I/RX_Q: Fix14_13, raw ADC samples rxData_I = uint16(bitshift(RawRxData, -16)); rxData_Q = uint16(bitand(RawRxData, hex2dec('0000FFFF'))); rxOTR_I = zeros(1,length(rxData_I)); rxOTR_Q = zeros(1,length(rxData_Q)); rxData_I = uint16(bitand(rxData_I, hex2dec('0FFF'))); %mask off top two bits rxData_Isigns = uint16(bitshift(bitand(rxData_I, hex2dec('0800')), -11)); %get sign bit rxData_I = double(typecast(bitor(rxData_I, rxData_Isigns*hex2dec('F000')),'int16'))./2^11; rxData_Q = uint16(bitand(rxData_Q, hex2dec('0FFF'))); %mask off top two bits rxData_Qsigns = uint16(bitshift(bitand(rxData_Q, hex2dec('0800')), -11)); %get sign bit rxData_Q = double(typecast(bitor(rxData_Q, rxData_Qsigns*hex2dec('F000')),'int16'))./2^11; RxData = complex(rxData_I, rxData_Q); RxOTR = complex(rxOTR_I, rxOTR_Q);