Transceiver52M: Use independent power scaling varables for each channel

Simply vectorize the existing power state variable.

Signed-off-by: Thomas Tsou <tom@tsou.cc>
diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp
index 4078c8f..f2d871f 100644
--- a/Transceiver52M/Transceiver.cpp
+++ b/Transceiver52M/Transceiver.cpp
@@ -603,28 +603,29 @@
     else {
       sprintf(response,"RSP NOISELEV 1  0");
     }
-  }   
-  else if (strcmp(command,"SETPOWER")==0) {
+  }
+  else if (!strcmp(command, "SETPOWER")) {
     // set output power in dB
     int dbPwr;
-    sscanf(buffer,"%3s %s %d",cmdcheck,command,&dbPwr);
-    if (!mOn) 
-      sprintf(response,"RSP SETPOWER 1 %d",dbPwr);
+    sscanf(buffer, "%3s %s %d", cmdcheck, command, &dbPwr);
+    if (!mOn)
+      sprintf(response, "RSP SETPOWER 1 %d", dbPwr);
     else {
       mPower = dbPwr;
-      mRadioInterface->setPowerAttenuation(dbPwr, chan);
-      sprintf(response,"RSP SETPOWER 0 %d",dbPwr);
+      mRadioInterface->setPowerAttenuation(mPower, chan);
+      sprintf(response, "RSP SETPOWER 0 %d", dbPwr);
     }
   }
-  else if (strcmp(command,"ADJPOWER")==0) {
+  else if (!strcmp(command,"ADJPOWER")) {
     // adjust power in dB steps
     int dbStep;
-    sscanf(buffer,"%3s %s %d",cmdcheck,command,&dbStep);
-    if (!mOn) 
-      sprintf(response,"RSP ADJPOWER 1 %d",mPower);
+    sscanf(buffer, "%3s %s %d", cmdcheck, command, &dbStep);
+    if (!mOn)
+      sprintf(response, "RSP ADJPOWER 1 %d", mPower);
     else {
       mPower += dbStep;
-      sprintf(response,"RSP ADJPOWER 0 %d",mPower);
+      mRadioInterface->setPowerAttenuation(mPower, chan);
+      sprintf(response, "RSP ADJPOWER 0 %d", mPower);
     }
   }
 #define FREQOFFSET 0//11.2e3
diff --git a/Transceiver52M/radioInterface.cpp b/Transceiver52M/radioInterface.cpp
index ff9f493..5bddb5c 100644
--- a/Transceiver52M/radioInterface.cpp
+++ b/Transceiver52M/radioInterface.cpp
@@ -38,8 +38,7 @@
                                int wReceiveOffset, GSM::Time wStartTime)
   : mRadio(wRadio), mSPSTx(sps), mSPSRx(1), mChans(chans), mMIMO(diversity),
     sendCursor(0), recvCursor(0), underrun(false), overrun(false),
-    receiveOffset(wReceiveOffset), mOn(false), powerScaling(1.0),
-    loadTest(false)
+    receiveOffset(wReceiveOffset), mOn(false), loadTest(false)
 {
   mClock.set(wStartTime);
 }
@@ -63,6 +62,7 @@
   convertSendBuffer.resize(mChans);
   convertRecvBuffer.resize(mChans);
   mReceiveFIFO.resize(mChans);
+  powerScaling.resize(mChans);
 
   for (size_t i = 0; i < mChans; i++) {
     sendBuffer[i] = new signalVector(CHUNK * mSPSTx);
@@ -120,9 +120,9 @@
   digAtten = atten - mRadio->maxTxGain() + rfGain;
 
   if (digAtten < 1.0)
-    powerScaling = 1.0;
+    powerScaling[chan] = 1.0;
   else
-    powerScaling = 1.0/sqrt(pow(10, (digAtten/10.0)));
+    powerScaling[chan] = 1.0 / sqrt(pow(10, digAtten / 10.0));
 }
 
 int RadioInterface::radioifyVector(signalVector &wVector,
@@ -255,7 +255,6 @@
                          *burst->getVector(n));
       }
 
-
       if (mReceiveFIFO[i].size() < 32)
         mReceiveFIFO[i].write(burst);
       else
@@ -363,7 +362,7 @@
   for (size_t i = 0; i < mChans; i++) {
     convert_float_short(convertSendBuffer[i],
                         (float *) sendBuffer[i]->begin(),
-                        powerScaling, 2 * sendCursor);
+                        powerScaling[i], 2 * sendCursor);
   }
 
   /* Send the all samples in the send buffer */ 
diff --git a/Transceiver52M/radioInterface.h b/Transceiver52M/radioInterface.h
index 95ef2b2..b3f6b15 100644
--- a/Transceiver52M/radioInterface.h
+++ b/Transceiver52M/radioInterface.h
@@ -47,7 +47,7 @@
 
   std::vector<short *> convertRecvBuffer;
   std::vector<short *> convertSendBuffer;
-
+  std::vector<float> powerScaling;
   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
@@ -59,8 +59,6 @@
 
   bool mOn;				      ///< indicates radio is on
 
-  double powerScaling;
-
   bool loadTest;
   int mNumARFCNs;
   signalVector *finalVec, *finalVec9;
diff --git a/Transceiver52M/radioInterfaceResamp.cpp b/Transceiver52M/radioInterfaceResamp.cpp
index 6f14a42..81b52fe 100644
--- a/Transceiver52M/radioInterfaceResamp.cpp
+++ b/Transceiver52M/radioInterfaceResamp.cpp
@@ -238,7 +238,7 @@
 
 	convert_float_short(convertSendBuffer[0],
 			    (float *) outerSendBuffer->begin(),
-			    powerScaling, 2 * outer_len);
+			    powerScaling[0], 2 * outer_len);
 
 	num_sent = mRadio->writeSamples(convertSendBuffer,
 					outer_len,