2017-01-02 21:07:43 -05:00
|
|
|
// Copyright (c) Charles J. Cliffe
|
|
|
|
// SPDX-License-Identifier: GPL-2.0+
|
|
|
|
|
2016-05-11 23:05:56 -04:00
|
|
|
#include "ModemNBFM.h"
|
|
|
|
|
|
|
|
ModemNBFM::ModemNBFM() : ModemAnalog() {
|
|
|
|
demodFM = freqdem_create(0.5);
|
|
|
|
}
|
|
|
|
|
|
|
|
ModemNBFM::~ModemNBFM() {
|
|
|
|
freqdem_destroy(demodFM);
|
|
|
|
}
|
|
|
|
|
2016-07-24 15:25:17 -04:00
|
|
|
ModemBase *ModemNBFM::factory() {
|
2016-05-11 23:05:56 -04:00
|
|
|
return new ModemNBFM;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string ModemNBFM::getName() {
|
|
|
|
return "NBFM";
|
|
|
|
}
|
|
|
|
|
|
|
|
int ModemNBFM::getDefaultSampleRate() {
|
|
|
|
return 12500;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ModemNBFM::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
|
|
|
ModemKitAnalog *fmkit = (ModemKitAnalog *)kit;
|
|
|
|
|
|
|
|
initOutputBuffers(fmkit, input);
|
|
|
|
|
|
|
|
if (!bufSize) {
|
|
|
|
input->decRefCount();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2017-01-28 08:57:27 -05:00
|
|
|
freqdem_demodulate_block(demodFM, &input->data[0], (unsigned int)bufSize, &demodOutputData[0]);
|
2016-05-11 23:05:56 -04:00
|
|
|
|
|
|
|
buildAudioOutput(fmkit, audioOut, false);
|
|
|
|
}
|