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:
Charles J. Cliffe
2015-11-28 23:03:07 -05:00
parent cdddd5850f
commit 7e4d173996
31 changed files with 1030 additions and 67 deletions
+26 -3
View File
@@ -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
+27 -4
View File
@@ -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 -1
View File
@@ -1,6 +1,6 @@
#include "ModemAM.h"
ModemAM::ModemAM() {
ModemAM::ModemAM() : ModemAnalog() {
demodAM = ampmodem_create(0.5, 0.0, LIQUID_AMPMODEM_DSB, 0);
}
+1 -1
View File
@@ -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 -1
View File
@@ -1,6 +1,6 @@
#include "ModemFM.h"
ModemFM::ModemFM() {
ModemFM::ModemFM() : ModemAnalog() {
demodFM = freqdem_create(0.5);
}
+1 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -1,6 +1,6 @@
#include "ModemBPSK.h"
ModemBPSK::ModemBPSK() {
ModemBPSK::ModemBPSK() : ModemDigital() {
demodBPSK = modem_create(LIQUID_MODEM_BPSK);
}
+1 -1
View File
@@ -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);
+8 -6
View File
@@ -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
View File
@@ -1,5 +1,6 @@
#pragma once
#include "ModemDigital.h"
#include <sstream>
class ModemKitFSK : public ModemKitDigital {
public:
+1 -1
View File
@@ -1,6 +1,6 @@
#include "ModemOOK.h"
ModemOOK::ModemOOK() {
ModemOOK::ModemOOK() : ModemDigital() {
demodOOK = modem_create(LIQUID_MODEM_OOK);
}
+1 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -1,6 +1,6 @@
#include "ModemQPSK.h"
ModemQPSK::ModemQPSK() {
ModemQPSK::ModemQPSK() : ModemDigital() {
demodQPSK = modem_create(LIQUID_MODEM_QPSK);
}
+1 -1
View File
@@ -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 -1
View File
@@ -1,6 +1,6 @@
#include "ModemST.h"
ModemST::ModemST() {
ModemST::ModemST() : ModemDigital() {
demodST = modem_create(LIQUID_MODEM_V29);
}