mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2026-06-01 21:54:39 -04:00
Basic console window for digital output
- Probably end up making this a single tabbed dialog but this works for the moment
This commit is contained in:
@@ -1,7 +1,18 @@
|
||||
#include "ModemDigital.h"
|
||||
|
||||
ModemDigital::ModemDigital() {
|
||||
|
||||
ModemDigitalOutput::ModemDigitalOutput() {
|
||||
|
||||
}
|
||||
|
||||
ModemDigital::ModemDigital() {
|
||||
#if ENABLE_DIGITAL_LAB
|
||||
digitalOut = nullptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
ModemDigitalOutput::~ModemDigitalOutput() {
|
||||
|
||||
}
|
||||
|
||||
std::string ModemDigital::getType() {
|
||||
@@ -54,6 +65,18 @@ void ModemDigital::digitalStart(ModemKitDigital *kit, modem mod, ModemIQData *in
|
||||
}
|
||||
|
||||
void ModemDigital::digitalFinish(ModemKitDigital *kit, modem mod) {
|
||||
demodOutputDataDigital.empty();
|
||||
#if ENABLE_DIGITAL_LAB
|
||||
if (digitalOut && outStream.str().length()) {
|
||||
digitalOut->write(outStream.str());
|
||||
outStream.str("");
|
||||
} else {
|
||||
outStream.str("");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#if ENABLE_DIGITAL_LAB
|
||||
void ModemDigital::setOutput(ModemDigitalOutput *modemDigitalOutput) {
|
||||
digitalOut = modemDigitalOutput;
|
||||
}
|
||||
#endif
|
||||
@@ -1,5 +1,10 @@
|
||||
#pragma once
|
||||
#include "Modem.h"
|
||||
#include <map>
|
||||
#include <vector>
|
||||
#include <sstream>
|
||||
#include <ostream>
|
||||
#include <mutex>
|
||||
|
||||
class ModemKitDigital : public ModemKit {
|
||||
public:
|
||||
@@ -8,6 +13,20 @@ public:
|
||||
};
|
||||
};
|
||||
|
||||
class ModemDigitalOutput {
|
||||
public:
|
||||
ModemDigitalOutput();
|
||||
virtual ~ModemDigitalOutput();
|
||||
|
||||
virtual void write(std::string outp) = 0;
|
||||
virtual void write(char outc) = 0;
|
||||
|
||||
virtual void Show() = 0;
|
||||
virtual void Hide() = 0;
|
||||
virtual void Close() = 0;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class ModemDigital : public Modem {
|
||||
public:
|
||||
@@ -28,11 +47,15 @@ public:
|
||||
|
||||
virtual void updateDemodulatorLock(modem mod, float sensitivity);
|
||||
|
||||
#if ENABLE_DIGITAL_LAB
|
||||
void setOutput(ModemDigitalOutput *digitalOutput);
|
||||
#endif
|
||||
|
||||
protected:
|
||||
std::vector<unsigned int> demodOutputDataDigital;
|
||||
std::atomic_bool currentDemodLock;
|
||||
|
||||
// std::vector<unsigned int> demodOutputDataDigitalTest;
|
||||
// std::vector<unsigned char> demodOutputSoftbits;
|
||||
// std::vector<unsigned char> demodOutputSoftbitsTest;
|
||||
#if ENABLE_DIGITAL_LAB
|
||||
ModemDigitalOutput *digitalOut;
|
||||
std::stringstream outStream;
|
||||
#endif
|
||||
};
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "ModemAM.h"
|
||||
|
||||
ModemAM::ModemAM() {
|
||||
ModemAM::ModemAM() : ModemAnalog() {
|
||||
demodAM = ampmodem_create(0.5, 0.0, LIQUID_AMPMODEM_DSB, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "ModemDSB.h"
|
||||
|
||||
ModemDSB::ModemDSB() {
|
||||
ModemDSB::ModemDSB() : ModemAnalog() {
|
||||
demodAM_DSB = ampmodem_create(0.5, 0.0, LIQUID_AMPMODEM_DSB, 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "ModemFM.h"
|
||||
|
||||
ModemFM::ModemFM() {
|
||||
ModemFM::ModemFM() : ModemAnalog() {
|
||||
demodFM = freqdem_create(0.5);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "ModemLSB.h"
|
||||
|
||||
ModemLSB::ModemLSB() {
|
||||
ModemLSB::ModemLSB() : ModemAnalog() {
|
||||
// half band filter used for side-band elimination
|
||||
ssbFilt = resamp2_crcf_create(12,-0.25f,60.0f);
|
||||
demodAM_LSB = ampmodem_create(0.5, 0.0, LIQUID_AMPMODEM_LSB, 1);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "ModemUSB.h"
|
||||
|
||||
ModemUSB::ModemUSB() {
|
||||
ModemUSB::ModemUSB() : ModemAnalog() {
|
||||
// half band filter used for side-band elimination
|
||||
ssbFilt = resamp2_crcf_create(12,-0.25f,60.0f);
|
||||
demodAM_USB = ampmodem_create(0.5, 0.0, LIQUID_AMPMODEM_USB, 1);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "ModemAPSK.h"
|
||||
|
||||
ModemAPSK::ModemAPSK() {
|
||||
ModemAPSK::ModemAPSK() : ModemDigital() {
|
||||
demodAPSK4 = modem_create(LIQUID_MODEM_APSK4);
|
||||
demodAPSK8 = modem_create(LIQUID_MODEM_APSK8);
|
||||
demodAPSK16 = modem_create(LIQUID_MODEM_APSK16);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "ModemASK.h"
|
||||
|
||||
ModemASK::ModemASK() {
|
||||
ModemASK::ModemASK() : ModemDigital() {
|
||||
demodASK2 = modem_create(LIQUID_MODEM_ASK2);
|
||||
demodASK4 = modem_create(LIQUID_MODEM_ASK4);
|
||||
demodASK8 = modem_create(LIQUID_MODEM_ASK8);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "ModemBPSK.h"
|
||||
|
||||
ModemBPSK::ModemBPSK() {
|
||||
ModemBPSK::ModemBPSK() : ModemDigital() {
|
||||
demodBPSK = modem_create(LIQUID_MODEM_BPSK);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "ModemDPSK.h"
|
||||
|
||||
ModemDPSK::ModemDPSK() {
|
||||
ModemDPSK::ModemDPSK() : ModemDigital() {
|
||||
demodDPSK2 = modem_create(LIQUID_MODEM_DPSK2);
|
||||
demodDPSK4 = modem_create(LIQUID_MODEM_DPSK4);
|
||||
demodDPSK8 = modem_create(LIQUID_MODEM_DPSK8);
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
#include "ModemFSK.h"
|
||||
#include <iomanip>
|
||||
|
||||
ModemFSK::ModemFSK() {
|
||||
ModemFSK::ModemFSK() : ModemDigital() {
|
||||
// DMR defaults?
|
||||
bps = 1;
|
||||
sps = 9600;
|
||||
outStream << std::hex;
|
||||
}
|
||||
|
||||
Modem *ModemFSK::factory() {
|
||||
@@ -35,6 +37,7 @@ ModemArgInfoList ModemFSK::getSettings() {
|
||||
bpsOpts.push_back("2");
|
||||
bpsOpts.push_back("4");
|
||||
bpsOpts.push_back("8");
|
||||
bpsOpts.push_back("16");
|
||||
bpsArg.options = bpsOpts;
|
||||
|
||||
args.push_back(bpsArg);
|
||||
@@ -48,6 +51,8 @@ ModemArgInfoList ModemFSK::getSettings() {
|
||||
|
||||
std::vector<std::string> spsOpts;
|
||||
// some common modem rates ..?
|
||||
spsOpts.push_back("300");
|
||||
spsOpts.push_back("600");
|
||||
spsOpts.push_back("1200");
|
||||
spsOpts.push_back("2400");
|
||||
spsOpts.push_back("4800");
|
||||
@@ -117,12 +122,9 @@ void ModemFSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *a
|
||||
dkit->inputBuffer.insert(dkit->inputBuffer.end(),input->data.begin(),input->data.end());
|
||||
|
||||
while (dkit->inputBuffer.size() >= dkit->k) {
|
||||
unsigned int sym_out;
|
||||
|
||||
sym_out = fskdem_demodulate(dkit->demodFSK, &dkit->inputBuffer[0]);
|
||||
outStream << fskdem_demodulate(dkit->demodFSK, &dkit->inputBuffer[0]);
|
||||
|
||||
// float err = fskdem_get_frequency_error(dkit->demodFSK);
|
||||
// std::cout << "ferror: " << err << std::endl;
|
||||
printf("%01X", sym_out);
|
||||
dkit->inputBuffer.erase(dkit->inputBuffer.begin(),dkit->inputBuffer.begin()+dkit->k);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
#include "ModemDigital.h"
|
||||
#include <sstream>
|
||||
|
||||
class ModemKitFSK : public ModemKitDigital {
|
||||
public:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "ModemOOK.h"
|
||||
|
||||
ModemOOK::ModemOOK() {
|
||||
ModemOOK::ModemOOK() : ModemDigital() {
|
||||
demodOOK = modem_create(LIQUID_MODEM_OOK);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "ModemPSK.h"
|
||||
|
||||
ModemPSK::ModemPSK() {
|
||||
ModemPSK::ModemPSK() : ModemDigital() {
|
||||
demodPSK2 = modem_create(LIQUID_MODEM_PSK2);
|
||||
demodPSK4 = modem_create(LIQUID_MODEM_PSK4);
|
||||
demodPSK8 = modem_create(LIQUID_MODEM_PSK8);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "ModemQAM.h"
|
||||
|
||||
ModemQAM::ModemQAM() {
|
||||
ModemQAM::ModemQAM() : ModemDigital() {
|
||||
demodQAM4 = modem_create(LIQUID_MODEM_QAM4);
|
||||
demodQAM8 = modem_create(LIQUID_MODEM_QAM8);
|
||||
demodQAM16 = modem_create(LIQUID_MODEM_QAM16);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "ModemQPSK.h"
|
||||
|
||||
ModemQPSK::ModemQPSK() {
|
||||
ModemQPSK::ModemQPSK() : ModemDigital() {
|
||||
demodQPSK = modem_create(LIQUID_MODEM_QPSK);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "ModemSQAM.h"
|
||||
|
||||
ModemSQAM::ModemSQAM() {
|
||||
ModemSQAM::ModemSQAM() : ModemDigital() {
|
||||
demodSQAM32 = modem_create(LIQUID_MODEM_SQAM32);
|
||||
demodSQAM128 = modem_create(LIQUID_MODEM_SQAM128);
|
||||
demodSQAM = demodSQAM32;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "ModemST.h"
|
||||
|
||||
ModemST::ModemST() {
|
||||
ModemST::ModemST() : ModemDigital() {
|
||||
demodST = modem_create(LIQUID_MODEM_V29);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user