1 // Copyright (c) Charles J. Cliffe
2 // SPDX-License-Identifier: GPL-2.0+
3
4 #include "ModemNBFM.h"
5
ModemNBFM()6 ModemNBFM::ModemNBFM() : ModemAnalog() {
7 demodFM = freqdem_create(0.5);
8 }
9
~ModemNBFM()10 ModemNBFM::~ModemNBFM() {
11 freqdem_destroy(demodFM);
12 }
13
factory()14 ModemBase *ModemNBFM::factory() {
15 return new ModemNBFM;
16 }
17
getName()18 std::string ModemNBFM::getName() {
19 return "NBFM";
20 }
21
getDefaultSampleRate()22 int ModemNBFM::getDefaultSampleRate() {
23 return 12500;
24 }
25
demodulate(ModemKit * kit,ModemIQData * input,AudioThreadInput * audioOut)26 void ModemNBFM::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
27 auto *fmkit = (ModemKitAnalog *)kit;
28
29 initOutputBuffers(fmkit, input);
30
31 if (!bufSize) {
32
33 return;
34 }
35
36 freqdem_demodulate_block(demodFM, &input->data[0], (unsigned int)bufSize, &demodOutputData[0]);
37
38 buildAudioOutput(fmkit, audioOut, false);
39 }
40