aboutsummaryrefslogtreecommitdiffstats
path: root/Transceiver52M/Transceiver.cpp
diff options
context:
space:
mode:
authorTom Tsou <tom@tsou.cc>2014-11-25 15:46:56 -0800
committerTom Tsou <tom@tsou.cc>2014-12-15 16:20:15 -0700
commita4d1a4124421473f5f92255e2f3bc44bfa3937ea (patch)
tree9af9b04c2915028363593771e5233e5335c996c1 /Transceiver52M/Transceiver.cpp
parentb99975917585dc8973cc806a5da0aa3fc791b198 (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.cpp36
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