diff options
author | Tom Tsou <tom@tsou.cc> | 2014-11-25 15:46:56 -0800 |
---|---|---|
committer | Tom Tsou <tom@tsou.cc> | 2014-12-15 16:20:15 -0700 |
commit | a4d1a4124421473f5f92255e2f3bc44bfa3937ea (patch) | |
tree | 9af9b04c2915028363593771e5233e5335c996c1 /Transceiver52M/Transceiver.cpp | |
parent | b99975917585dc8973cc806a5da0aa3fc791b198 (diff) |
Transceiver52M: Allow setting gain before POWERON
There is no reason gain settings should not be modifiable when the radio
is running or not.
Signed-off-by: Tom Tsou <tom@tsou.cc>
Diffstat (limited to 'Transceiver52M/Transceiver.cpp')
-rw-r--r-- | Transceiver52M/Transceiver.cpp | 36 |
1 files changed, 13 insertions, 23 deletions
diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp index 415505c..f8b34b3 100644 --- a/Transceiver52M/Transceiver.cpp +++ b/Transceiver52M/Transceiver.cpp @@ -43,7 +43,7 @@ using namespace GSM; #define NOISE_CNT 20 TransceiverState::TransceiverState() - : mRetrans(false), mNoiseLev(0.0), mNoises(NOISE_CNT) + : mRetrans(false), mNoiseLev(0.0), mNoises(NOISE_CNT), mPower(0.0) { for (int i = 0; i < 8; i++) { chanType[i] = Transceiver::NONE; @@ -91,7 +91,7 @@ Transceiver::Transceiver(int wBasePort, : mBasePort(wBasePort), mAddr(TRXAddress), mTransmitLatency(wTransmitLatency), mClockSocket(NULL), mRadioInterface(wRadioInterface), mSPSTx(wSPS), mSPSRx(1), mChans(wChans), - mOn(false), mTxFreq(0.0), mRxFreq(0.0), mPower(-10), mMaxExpectedDelay(0) + mOn(false), mTxFreq(0.0), mRxFreq(0.0), mMaxExpectedDelay(0) { GSM::Time startTime(random() % gHyperframe,0); @@ -585,7 +585,6 @@ void Transceiver::driveControl(size_t chan) sprintf(response,"RSP POWERON 0"); if (!chan && !mOn) { // Prepare for thread start - mPower = -20; mRadioInterface->start(); // Start radio interface threads. @@ -634,28 +633,19 @@ void Transceiver::driveControl(size_t chan) } } 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); - else { - mPower = dbPwr; - mRadioInterface->setPowerAttenuation(mPower, chan); - sprintf(response, "RSP SETPOWER 0 %d", dbPwr); - } + int power; + sscanf(buffer, "%3s %s %d", cmdcheck, command, &power); + power = mRadioInterface->setPowerAttenuation(power, chan); + mStates[chan].mPower = power; + sprintf(response, "RSP SETPOWER 0 %d", power); } 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); - else { - mPower += dbStep; - mRadioInterface->setPowerAttenuation(mPower, chan); - sprintf(response, "RSP ADJPOWER 0 %d", mPower); - } + int power, step; + sscanf(buffer, "%3s %s %d", cmdcheck, command, &step); + power = mStates[chan].mPower + step; + power = mRadioInterface->setPowerAttenuation(power, chan); + mStates[chan].mPower = power; + sprintf(response, "RSP ADJPOWER 0 %d", power); } else if (strcmp(command,"RXTUNE")==0) { // tune receiver |