Transceiver52M: Use independent power scaling varables for each channel
Simply vectorize the existing power state variable. Signed-off-by: Thomas Tsou <tom@tsou.cc>
This commit is contained in:
parent
1882099d15
commit
cb269a32dd
|
@ -603,28 +603,29 @@ void Transceiver::driveControl(size_t chan)
|
|||
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
|
||||
|
|
|
@ -38,8 +38,7 @@ RadioInterface::RadioInterface(RadioDevice *wRadio,
|
|||
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 @@ bool RadioInterface::init(int type)
|
|||
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 @@ void RadioInterface::setPowerAttenuation(double atten, size_t chan)
|
|||
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 @@ bool RadioInterface::driveReceiveRadio()
|
|||
*burst->getVector(n));
|
||||
}
|
||||
|
||||
|
||||
if (mReceiveFIFO[i].size() < 32)
|
||||
mReceiveFIFO[i].write(burst);
|
||||
else
|
||||
|
@ -363,7 +362,7 @@ void RadioInterface::pushBuffer()
|
|||
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 */
|
||||
|
|
|
@ -47,7 +47,7 @@ protected:
|
|||
|
||||
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 @@ protected:
|
|||
|
||||
bool mOn; ///< indicates radio is on
|
||||
|
||||
double powerScaling;
|
||||
|
||||
bool loadTest;
|
||||
int mNumARFCNs;
|
||||
signalVector *finalVec, *finalVec9;
|
||||
|
|
|
@ -238,7 +238,7 @@ void RadioInterfaceResamp::pushBuffer()
|
|||
|
||||
convert_float_short(convertSendBuffer[0],
|
||||
(float *) outerSendBuffer->begin(),
|
||||
powerScaling, 2 * outer_len);
|
||||
powerScaling[0], 2 * outer_len);
|
||||
|
||||
num_sent = mRadio->writeSamples(convertSendBuffer,
|
||||
outer_len,
|
||||
|
|
Loading…
Reference in New Issue