2017-01-02 21:07:43 -05:00
|
|
|
// Copyright (c) Charles J. Cliffe
|
|
|
|
// SPDX-License-Identifier: GPL-2.0+
|
|
|
|
|
2015-11-16 23:49:54 -05:00
|
|
|
#include "ModemDSB.h"
|
|
|
|
|
2015-11-28 23:03:07 -05:00
|
|
|
ModemDSB::ModemDSB() : ModemAnalog() {
|
2015-11-16 23:49:54 -05:00
|
|
|
demodAM_DSB = ampmodem_create(0.5, 0.0, LIQUID_AMPMODEM_DSB, 1);
|
2016-08-13 14:50:20 -04:00
|
|
|
useSignalOutput(true);
|
2015-11-16 23:49:54 -05:00
|
|
|
}
|
|
|
|
|
2015-11-30 21:58:54 -05:00
|
|
|
ModemDSB::~ModemDSB() {
|
|
|
|
ampmodem_destroy(demodAM_DSB);
|
|
|
|
}
|
|
|
|
|
2016-07-24 15:25:17 -04:00
|
|
|
ModemBase *ModemDSB::factory() {
|
2015-11-16 23:49:54 -05:00
|
|
|
return new ModemDSB;
|
|
|
|
}
|
|
|
|
|
2015-11-18 23:40:30 -05:00
|
|
|
std::string ModemDSB::getName() {
|
|
|
|
return "DSB";
|
|
|
|
}
|
|
|
|
|
2015-11-30 21:58:54 -05:00
|
|
|
int ModemDSB::getDefaultSampleRate() {
|
|
|
|
return 5400;
|
|
|
|
}
|
|
|
|
|
2015-11-16 23:49:54 -05:00
|
|
|
void ModemDSB::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
|
|
|
ModemKitAnalog *amkit = (ModemKitAnalog *)kit;
|
|
|
|
|
|
|
|
initOutputBuffers(amkit, input);
|
|
|
|
|
|
|
|
if (!bufSize) {
|
|
|
|
input->decRefCount();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2016-02-04 18:05:33 -05:00
|
|
|
for (size_t i = 0; i < bufSize; i++) {
|
2015-11-20 19:05:08 -05:00
|
|
|
ampmodem_demodulate(demodAM_DSB, input->data[i], &demodOutputData[i]);
|
|
|
|
}
|
2015-11-16 23:49:54 -05:00
|
|
|
|
|
|
|
buildAudioOutput(amkit, audioOut, true);
|
|
|
|
}
|