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