Transceiver52M: Replace resampler with SSE enabled implementation

Replace the polyphase filter and resampler with a separate
implementation using SSE enabled convolution. The USRP2 (including
derived devices N200, N210) are the only supported devices that
require sample rate conversion, so set the default resampling
parameters for the 100 MHz FPGA clock. This changes the previous
resampling ratios.

  270.833 kHz -> 400 kHz      (65 / 96)
  270.833 kHz -> 390.625 kHz  (52 / 75)

The new resampling factor uses a USRP resampling factor of 256
instead of 250. On the device, this allows two halfband filters to
be used rather than one. The end result is reduced distortial and
aliasing effecits from CIC filter rolloff.

B100 and USRP1 will no be supported at 400 ksps with these changes.

Signed-off-by: Thomas Tsou <tom@tsou.cc>
diff --git a/Transceiver52M/radioInterface.h b/Transceiver52M/radioInterface.h
index a64702b..690d572 100644
--- a/Transceiver52M/radioInterface.h
+++ b/Transceiver52M/radioInterface.h
@@ -39,12 +39,14 @@
 
   RadioDevice *mRadio;			      ///< the USRP object
  
-  float *sendBuffer;
+  signalVector *sendBuffer;
+  signalVector *recvBuffer;
   unsigned sendCursor;
+  unsigned recvCursor;
 
-  float *rcvBuffer;
-  unsigned rcvCursor;
- 
+  short *convertRecvBuffer;
+  short *convertSendBuffer;
+
   bool underrun;			      ///< indicates writes to USRP are too slow
   bool overrun;				      ///< indicates reads from USRP are too slow
   TIMESTAMP writeTimestamp;		      ///< sample timestamp of next packet written to USRP
@@ -85,6 +87,10 @@
   /** start the interface */
   void start();
 
+  /** intialization */
+  virtual bool init();
+  virtual void close();
+
   /** constructor */
   RadioInterface(RadioDevice* wRadio = NULL,
 		 int receiveOffset = 3,
@@ -92,7 +98,7 @@
 		 GSM::Time wStartTime = GSM::Time(0));
     
   /** destructor */
-  ~RadioInterface();
+  virtual ~RadioInterface();
 
   /** check for underrun, resets underrun value */
   bool isUnderrun();
@@ -156,6 +162,10 @@
 class RadioInterfaceResamp : public RadioInterface {
 
 private:
+  signalVector *innerSendBuffer;
+  signalVector *outerSendBuffer;
+  signalVector *innerRecvBuffer;
+  signalVector *outerRecvBuffer;
 
   void pushBuffer();
   void pullBuffer();
@@ -166,4 +176,9 @@
 		       int receiveOffset = 3,
 		       int wSPS = SAMPSPERSYM,
 		       GSM::Time wStartTime = GSM::Time(0));
+
+  ~RadioInterfaceResamp();
+
+  bool init();
+  void close();
 };