diff options
author | Thomas Tsou <tom@tsou.cc> | 2013-10-17 21:23:34 -0400 |
---|---|---|
committer | Thomas Tsou <tom@tsou.cc> | 2013-10-18 13:10:18 -0400 |
commit | fa3a787ccbb250d929ebf78993047dd05e8765cb (patch) | |
tree | 4f14ca9fd9b87824ada664593cc24a70eadc1c54 /Transceiver52M/Transceiver.h | |
parent | 010fff783bf658e79b0b32ad64a44af4e3f22b1e (diff) |
Transceiver52M: Update noise measurement calculation
Previous removal of the energy detector requirement broke
the noise level calculation loop. The previous adaptive
approach was finicky - noticably at high gain levels. Since
we no longer use the energy threshold for primary burst gating,
we can return to a simpler world.
In the new approach, we compute a running average of energy
levels and track them with a noise vector. A timeslot that
passes the correlator threshold is a valid burst. These are
not used in the noise calculation. Everything else is
considered noise and used to compute the noise level with
respect to full scale input level, which for almost all
supported devices is 2^15.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
Diffstat (limited to 'Transceiver52M/Transceiver.h')
-rw-r--r-- | Transceiver52M/Transceiver.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/Transceiver52M/Transceiver.h b/Transceiver52M/Transceiver.h index d243214..c0ada1d 100644 --- a/Transceiver52M/Transceiver.h +++ b/Transceiver52M/Transceiver.h @@ -97,6 +97,8 @@ private: LOOPBACK ///< similar go VII, used in loopback testing } ChannelCombination; + float mNoiseLev; ///< Average noise level + noiseVector mNoises; ///< Vector holding running noise measurements /** unmodulate a modulated burst */ #ifdef TRANSMIT_LOGGING @@ -134,8 +136,6 @@ private: double mRxFreq; ///< the receive frequency int mPower; ///< the transmit power in dB unsigned mTSC; ///< the midamble sequence code - double mEnergyThreshold; ///< threshold to determine if received data is potentially a GSM burst - GSM::Time prevFalseDetectionTime; ///< last timestamp of a false energy detection int fillerModulus[8]; ///< modulus values of all timeslots, in frames signalVector *fillerTable[102][8]; ///< table of modulated filler waveforms for all timeslots unsigned mMaxExpectedDelay; ///< maximum expected time-of-arrival offset in GSM symbols |