transceiver: separate radio clock and vector interfaces

Remove radio clock and vector interfaces into their own
files. This clears up and simplifies the radio interface
and, additionaly, prepares for a further split of the I/O
portion for optional resampler use.

Signed-off-by: Thomas Tsou <ttsou@vt.edu>

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2669 19bc5d8c-e614-43d4-8b26-e1612bc8e597
diff --git a/Transceiver52M/radioInterface.h b/Transceiver52M/radioInterface.h
index 71273b3..8fb9f27 100644
--- a/Transceiver52M/radioInterface.h
+++ b/Transceiver52M/radioInterface.h
@@ -18,107 +18,14 @@
 #include "GSMCommon.h"
 #include "LinkedLists.h"
 #include "radioDevice.h"
+#include "radioVector.h"
+#include "radioClock.h"
 
 /** samples per GSM symbol */
 #define SAMPSPERSYM 1 
 #define INCHUNK    (625)
 #define OUTCHUNK   (625)
 
-/** class used to organize GSM bursts by GSM timestamps */
-class radioVector : public signalVector {
-
-private:
-
-  GSM::Time mTime;   ///< the burst's GSM timestamp 
-
-public:
-  /** constructor */
-  radioVector(const signalVector& wVector,
-              GSM::Time& wTime): signalVector(wVector),mTime(wTime) {};
-
-  /** timestamp read and write operators */
-  GSM::Time time() const { return mTime;}
-  void time(const GSM::Time& wTime) { mTime = wTime;}
-
-  /** comparison operator, used for sorting */
-  bool operator>(const radioVector& other) const {return mTime > other.mTime;}
-
-};
-
-/** a priority queue of radioVectors, i.e. GSM bursts, sorted so that earliest element is at top */
-class VectorQueue : public InterthreadPriorityQueue<radioVector> {
-
-public:
-
-  /** the top element of the queue */
-  GSM::Time nextTime() const;
-
-  /**
-    Get stale burst, if any.
-    @param targTime The target time.
-    @return Pointer to burst older than target time, removed from queue, or NULL.
-  */
-  radioVector* getStaleBurst(const GSM::Time& targTime);
-
-  /**
-    Get current burst, if any.
-    @param targTime The target time.
-    @return Pointer to burst at the target time, removed from queue, or NULL.
-  */
-  radioVector* getCurrentBurst(const GSM::Time& targTime);
-
-
-};
-
-/** a FIFO of radioVectors */
-class VectorFIFO {
-
-private:
-
-      PointerFIFO mQ;
-      Mutex      mLock;
-
-public:
-
-      unsigned size() {return mQ.size();}
-
-      void put(radioVector *ptr) {ScopedLock lock(mLock); mQ.put((void*) ptr);}
-
-      radioVector *get() { ScopedLock lock(mLock); return (radioVector*) mQ.get();}
-
-};
-
-
-/** the basestation clock class */
-class RadioClock {
-
-private:
-
-  GSM::Time mClock;
-  Mutex mLock;
-  Signal updateSignal;
-
-public:
-
-  /** Set clock */
-  //void set(const GSM::Time& wTime) { ScopedLock lock(mLock); mClock = wTime; updateSignal.signal();}
-  void set(const GSM::Time& wTime) { ScopedLock lock(mLock); mClock = wTime; updateSignal.broadcast();;}
-
-  /** Increment clock */
-  //void incTN() { ScopedLock lock(mLock); mClock.incTN(); updateSignal.signal();}
-  void incTN() { ScopedLock lock(mLock); mClock.incTN(); updateSignal.broadcast();}
-
-  /** Get clock value */
-  GSM::Time get() { ScopedLock lock(mLock); return mClock; }
-
-  /** Wait until clock has changed */
-  //void wait() {ScopedLock lock(mLock); updateSignal.wait(mLock,1);}
-  // FIXME -- If we take away the timeout, a lot of threads don't start.  Why?
-  void wait() {ScopedLock lock(mLock); updateSignal.wait(mLock);}
-
-};
-
-
 /** class to interface the transceiver with the USRP */
 class RadioInterface {