Add delta lock -- lock modem relative to center frequency

This commit is contained in:
Charles J. Cliffe
2016-02-15 17:43:10 -05:00
parent 7bf0ad47c5
commit 93d2c73fb9
11 changed files with 141 additions and 8 deletions
+12 -1
View File
@@ -69,11 +69,22 @@ void SDRPostThread::updateActiveDemodulators() {
nRunDemods = 0;
long long centerFreq = wxGetApp().getFrequency();
for (demod_i = demodulators.begin(); demod_i != demodulators.end(); demod_i++) {
DemodulatorInstance *demod = *demod_i;
DemodulatorThreadInputQueue *demodQueue = demod->getIQInputDataPipe();
// not in range?
if (demod->isDeltaLock()) {
if (demod->getFrequency() != centerFreq + demod->getDeltaLockOfs()) {
demod->setFrequency(centerFreq + demod->getDeltaLockOfs());
demod->updateLabel(demod->getFrequency());
demod->setFollow(false);
demod->setTracking(false);
}
}
if (abs(frequency - demod->getFrequency()) > (sampleRate / 2)) {
// deactivate if active
if (demod->isActive() && !demod->isFollow() && !demod->isTracking()) {
@@ -85,7 +96,7 @@ void SDRPostThread::updateActiveDemodulators() {
}
// follow if follow mode
if (demod->isFollow() && wxGetApp().getFrequency() != demod->getFrequency()) {
if (demod->isFollow() && centerFreq != demod->getFrequency()) {
wxGetApp().setFrequency(demod->getFrequency());
demod->setFollow(false);
}