2015-11-18 21:09:51 -05:00
|
|
|
#include "ModemDigital.h"
|
|
|
|
|
|
|
|
ModemDigital::ModemDigital() {
|
2015-11-18 23:40:30 -05:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string ModemDigital::getType() {
|
|
|
|
return "digital";
|
2015-11-18 21:09:51 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
ModemKit *ModemDigital::buildKit(long long sampleRate, int audioSampleRate) {
|
|
|
|
ModemKitDigital *dkit = new ModemKitDigital;
|
|
|
|
|
|
|
|
dkit->sampleRate = sampleRate;
|
|
|
|
dkit->audioSampleRate = audioSampleRate;
|
|
|
|
|
|
|
|
return dkit;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ModemDigital::disposeKit(ModemKit *kit) {
|
|
|
|
ModemKitDigital *dkit = (ModemKitDigital *)kit;
|
|
|
|
|
|
|
|
delete dkit;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ModemDigital::setDemodulatorLock(bool demod_lock_in) {
|
2015-11-18 22:57:31 -05:00
|
|
|
currentDemodLock.store(demod_lock_in);
|
2015-11-18 21:09:51 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
int ModemDigital::getDemodulatorLock() {
|
2015-11-18 22:57:31 -05:00
|
|
|
return currentDemodLock.load();
|
2015-11-18 21:09:51 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
void ModemDigital::setDemodulatorCons(int demod_cons_in) {
|
|
|
|
demodulatorCons.store(demod_cons_in);
|
|
|
|
}
|
|
|
|
|
|
|
|
int ModemDigital::getDemodulatorCons() {
|
2015-11-18 22:57:31 -05:00
|
|
|
return currentDemodCons.load();
|
2015-11-18 21:09:51 -05:00
|
|
|
}
|
|
|
|
|
2015-11-18 22:57:31 -05:00
|
|
|
void ModemDigital::updateDemodulatorLock(modem mod, float sensitivity) {
|
2015-11-18 23:01:56 -05:00
|
|
|
setDemodulatorLock(modem_get_demodulator_evm(mod) <= sensitivity);
|
2015-11-18 21:09:51 -05:00
|
|
|
}
|
|
|
|
|
2015-11-18 22:57:31 -05:00
|
|
|
void ModemDigital::updateDemodulatorCons(int cons) {
|
|
|
|
if (currentDemodCons.load() != cons) {
|
|
|
|
currentDemodCons = cons;
|
2015-11-18 21:09:51 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-11-18 22:57:31 -05:00
|
|
|
void ModemDigital::digitalStart(ModemKitDigital *kit, modem mod, ModemIQData *input) {
|
|
|
|
int bufSize = input->data.size();
|
|
|
|
|
|
|
|
if (demodOutputDataDigital.size() != bufSize) {
|
|
|
|
if (demodOutputDataDigital.capacity() < bufSize) {
|
|
|
|
demodOutputDataDigital.reserve(bufSize);
|
|
|
|
}
|
|
|
|
demodOutputDataDigital.resize(bufSize);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (demodulatorCons.load() != currentDemodCons.load()) {
|
|
|
|
updateDemodulatorCons(demodulatorCons.load());
|
|
|
|
currentDemodLock.store(false);
|
|
|
|
}
|
2015-11-18 21:09:51 -05:00
|
|
|
}
|
|
|
|
|
2015-11-18 22:57:31 -05:00
|
|
|
void ModemDigital::digitalFinish(ModemKitDigital *kit, modem mod) {
|
|
|
|
demodOutputDataDigital.empty();
|
2015-11-18 21:09:51 -05:00
|
|
|
}
|
|
|
|
|