mirror of
https://github.com/f4exb/sdrangel.git
synced 2026-01-04 23:38:42 -05:00
REST API: channels update
This commit is contained in:
parent
884f83c82a
commit
cda925faab
@ -72,6 +72,14 @@ void BeamSteeringCWMod::startSources()
|
||||
qDebug("BeamSteeringCWMod::startSources");
|
||||
m_basebandSource->reset();
|
||||
m_thread->start();
|
||||
|
||||
BeamSteeringCWModBaseband::MsgSignalNotification *sig = BeamSteeringCWModBaseband::MsgSignalNotification::create(
|
||||
m_basebandSampleRate);
|
||||
m_basebandSource->getInputMessageQueue()->push(sig);
|
||||
|
||||
BeamSteeringCWModBaseband::MsgConfigureBeamSteeringCWModBaseband *msg = BeamSteeringCWModBaseband::MsgConfigureBeamSteeringCWModBaseband::create(
|
||||
m_settings, true);
|
||||
m_basebandSource->getInputMessageQueue()->push(msg);
|
||||
}
|
||||
|
||||
void BeamSteeringCWMod::stopSources()
|
||||
@ -237,6 +245,12 @@ int BeamSteeringCWMod::webapiSettingsPutPatch(
|
||||
MsgConfigureBeamSteeringCWMod *msg = MsgConfigureBeamSteeringCWMod::create(settings, force);
|
||||
m_inputMessageQueue.push(msg);
|
||||
|
||||
if (getMessageQueueToGUI()) // forward to GUI if any
|
||||
{
|
||||
MsgConfigureBeamSteeringCWMod *msgToGUI = MsgConfigureBeamSteeringCWMod::create(settings, force);
|
||||
getMessageQueueToGUI()->push(msgToGUI);
|
||||
}
|
||||
|
||||
webapiFormatChannelSettings(response, settings);
|
||||
|
||||
return 200;
|
||||
|
||||
@ -49,8 +49,8 @@ Interferometer::Interferometer(DeviceAPI *deviceAPI) :
|
||||
setObjectName(m_channelId);
|
||||
|
||||
m_thread = new QThread(this);
|
||||
m_basbandSink = new InterferometerBaseband(m_fftSize);
|
||||
m_basbandSink->moveToThread(m_thread);
|
||||
m_basebandSink = new InterferometerBaseband(m_fftSize);
|
||||
m_basebandSink->moveToThread(m_thread);
|
||||
m_deviceAPI->addMIMOChannel(this);
|
||||
m_deviceAPI->addMIMOChannelAPI(this);
|
||||
connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()));
|
||||
@ -66,26 +66,34 @@ Interferometer::~Interferometer()
|
||||
|
||||
m_deviceAPI->removeChannelSinkAPI(this);
|
||||
m_deviceAPI->removeMIMOChannel(this);
|
||||
delete m_basbandSink;
|
||||
delete m_basebandSink;
|
||||
delete m_thread;
|
||||
}
|
||||
|
||||
void Interferometer::setSpectrumSink(BasebandSampleSink *spectrumSink)
|
||||
{
|
||||
m_spectrumSink = spectrumSink;
|
||||
m_basbandSink->setSpectrumSink(spectrumSink);
|
||||
m_basebandSink->setSpectrumSink(spectrumSink);
|
||||
}
|
||||
|
||||
void Interferometer::setScopeSink(BasebandSampleSink *scopeSink)
|
||||
{
|
||||
m_scopeSink = scopeSink;
|
||||
m_basbandSink->setScopeSink(scopeSink);
|
||||
m_basebandSink->setScopeSink(scopeSink);
|
||||
}
|
||||
|
||||
void Interferometer::startSinks()
|
||||
{
|
||||
m_basbandSink->reset();
|
||||
if (m_deviceSampleRate != 0) {
|
||||
m_basebandSink->setBasebandSampleRate(m_deviceSampleRate);
|
||||
}
|
||||
|
||||
m_basebandSink->reset();
|
||||
m_thread->start();
|
||||
|
||||
InterferometerBaseband::MsgConfigureChannelizer *msg = InterferometerBaseband::MsgConfigureChannelizer::create(
|
||||
m_settings.m_log2Decim, m_settings.m_filterChainHash);
|
||||
m_basebandSink->getInputMessageQueue()->push(msg);
|
||||
}
|
||||
|
||||
void Interferometer::stopSinks()
|
||||
@ -96,7 +104,7 @@ void Interferometer::stopSinks()
|
||||
|
||||
void Interferometer::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, unsigned int sinkIndex)
|
||||
{
|
||||
m_basbandSink->feed(begin, end, sinkIndex);
|
||||
m_basebandSink->feed(begin, end, sinkIndex);
|
||||
}
|
||||
|
||||
void Interferometer::pull(SampleVector::iterator& begin, unsigned int nbSamples, unsigned int sourceIndex)
|
||||
@ -126,18 +134,18 @@ void Interferometer::applySettings(const InterferometerSettings& settings, bool
|
||||
{
|
||||
InterferometerBaseband::MsgConfigureChannelizer *msg = InterferometerBaseband::MsgConfigureChannelizer::create(
|
||||
settings.m_log2Decim, settings.m_filterChainHash);
|
||||
m_basbandSink->getInputMessageQueue()->push(msg);
|
||||
m_basebandSink->getInputMessageQueue()->push(msg);
|
||||
}
|
||||
|
||||
if ((m_settings.m_correlationType != settings.m_correlationType) || force)
|
||||
{
|
||||
InterferometerBaseband::MsgConfigureCorrelation *msg = InterferometerBaseband::MsgConfigureCorrelation::create(
|
||||
settings.m_correlationType);
|
||||
m_basbandSink->getInputMessageQueue()->push(msg);
|
||||
m_basebandSink->getInputMessageQueue()->push(msg);
|
||||
}
|
||||
|
||||
if ((m_settings.m_phase != settings.m_phase) || force) {
|
||||
m_basbandSink->setPhase(settings.m_phase);
|
||||
m_basebandSink->setPhase(settings.m_phase);
|
||||
}
|
||||
|
||||
m_settings = settings;
|
||||
@ -185,7 +193,7 @@ bool Interferometer::handleMessage(const Message& cmd)
|
||||
m_deviceSampleRate, notif.getCenterFrequency(), notif.getIndex()
|
||||
);
|
||||
qDebug() << "Interferometer::handleMessage: DSPMIMOSignalNotification: push to sink";
|
||||
m_basbandSink->getInputMessageQueue()->push(sig);
|
||||
m_basebandSink->getInputMessageQueue()->push(sig);
|
||||
|
||||
if (getMessageQueueToGUI())
|
||||
{
|
||||
@ -247,7 +255,7 @@ void Interferometer::calculateFrequencyOffset()
|
||||
void Interferometer::applyChannelSettings(uint32_t log2Decim, uint32_t filterChainHash)
|
||||
{
|
||||
InterferometerBaseband::MsgConfigureChannelizer *msg = InterferometerBaseband::MsgConfigureChannelizer::create(log2Decim, filterChainHash);
|
||||
m_basbandSink->getInputMessageQueue()->push(msg);
|
||||
m_basebandSink->getInputMessageQueue()->push(msg);
|
||||
}
|
||||
|
||||
int Interferometer::webapiSettingsGet(
|
||||
@ -274,6 +282,12 @@ int Interferometer::webapiSettingsPutPatch(
|
||||
MsgConfigureInterferometer *msg = MsgConfigureInterferometer::create(settings, force);
|
||||
m_inputMessageQueue.push(msg);
|
||||
|
||||
if (getMessageQueueToGUI()) // forward to GUI if any
|
||||
{
|
||||
MsgConfigureInterferometer *msgToGUI = MsgConfigureInterferometer::create(settings, force);
|
||||
getMessageQueueToGUI()->push(msgToGUI);
|
||||
}
|
||||
|
||||
webapiFormatChannelSettings(response, settings);
|
||||
|
||||
return 200;
|
||||
|
||||
@ -149,7 +149,7 @@ public:
|
||||
private:
|
||||
DeviceAPI *m_deviceAPI;
|
||||
QThread *m_thread;
|
||||
InterferometerBaseband* m_basbandSink;
|
||||
InterferometerBaseband* m_basebandSink;
|
||||
BasebandSampleSink* m_spectrumSink;
|
||||
BasebandSampleSink* m_scopeSink;
|
||||
InterferometerSettings m_settings;
|
||||
|
||||
@ -246,4 +246,13 @@ bool InterferometerBaseband::handleMessage(const Message& cmd)
|
||||
qDebug("InterferometerBaseband::handleMessage: unhandled: %s", cmd.getIdentifier());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void InterferometerBaseband::setBasebandSampleRate(unsigned int sampleRate)
|
||||
{
|
||||
for (int istream = 0; istream < 2; istream++)
|
||||
{
|
||||
m_channelizers[istream]->setBasebandSampleRate(sampleRate);
|
||||
m_sinks[istream].reset();
|
||||
}
|
||||
}
|
||||
|
||||
@ -109,6 +109,7 @@ public:
|
||||
void setPhase(int phase) { m_correlator.setPhase(phase); }
|
||||
|
||||
void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, unsigned int streamIndex);
|
||||
void setBasebandSampleRate(unsigned int sampleRate);
|
||||
|
||||
private:
|
||||
void processFifo(const std::vector<SampleVector>& data, unsigned int ibegin, unsigned int iend);
|
||||
|
||||
@ -72,11 +72,14 @@ QByteArray InterferometerGUI::serialize() const
|
||||
|
||||
bool InterferometerGUI::deserialize(const QByteArray& data)
|
||||
{
|
||||
if(m_settings.deserialize(data)) {
|
||||
if (m_settings.deserialize(data))
|
||||
{
|
||||
displaySettings();
|
||||
applySettings(true);
|
||||
return true;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
resetToDefaults();
|
||||
return false;
|
||||
}
|
||||
@ -97,6 +100,13 @@ bool InterferometerGUI::handleMessage(const Message& message)
|
||||
displayRateAndShift();
|
||||
return true;
|
||||
}
|
||||
else if (Interferometer::MsgConfigureInterferometer::match(message))
|
||||
{
|
||||
const Interferometer::MsgConfigureInterferometer& notif = (const Interferometer::MsgConfigureInterferometer&) message;
|
||||
m_settings = notif.getSettings();
|
||||
displaySettings();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
|
||||
@ -80,7 +80,9 @@ const QMap<QString, QString> WebAPIRequestMapper::m_channelURIToSettingsKey = {
|
||||
{"sdrangel.channel.udpsrc", "UDPSinkSettings"}, // remap
|
||||
{"sdrangel.channel.wfmdemod", "WFMDemodSettings"},
|
||||
{"de.maintech.sdrangelove.channel.wfm", "WFMDemodSettings"}, // remap
|
||||
{"sdrangel.channeltx.modwfm", "WFMModSettings"}
|
||||
{"sdrangel.channeltx.modwfm", "WFMModSettings"},
|
||||
{"sdrangel.channel.beamsteeringcwmod", "BeamSteeringCWModSettings"},
|
||||
{"sdrangel.channelmimo.interferometer", "InterferometerSettings"}
|
||||
};
|
||||
|
||||
const QMap<QString, QString> WebAPIRequestMapper::m_deviceIdToSettingsKey = {
|
||||
@ -148,7 +150,9 @@ const QMap<QString, QString> WebAPIRequestMapper::m_channelTypeToSettingsKey = {
|
||||
{"UDPSink", "UDPSourceSettings"},
|
||||
{"UDPSource", "UDPSinkSettings"},
|
||||
{"WFMDemod", "WFMDemodSettings"},
|
||||
{"WFMMod", "WFMModSettings"}
|
||||
{"WFMMod", "WFMModSettings"},
|
||||
{"BeamSteeringCWMod", "BeamSteeringCWModSettings"},
|
||||
{"Interferometer", "InterferometerSettings"}
|
||||
};
|
||||
|
||||
const QMap<QString, QString> WebAPIRequestMapper::m_sourceDeviceHwIdToSettingsKey = {
|
||||
@ -2648,6 +2652,16 @@ bool WebAPIRequestMapper::getChannel(
|
||||
channelSettings->setWfmModSettings(new SWGSDRangel::SWGWFMModSettings());
|
||||
channelSettings->getWfmModSettings()->fromJsonObject(settingsJsonObject);
|
||||
}
|
||||
else if (channelSettingsKey == "BeamSteeringCWModSettings")
|
||||
{
|
||||
channelSettings->setBeamSteeringCwModSettings(new SWGSDRangel::SWGBeamSteeringCWModSettings());
|
||||
channelSettings->getBeamSteeringCwModSettings()->fromJsonObject(settingsJsonObject);
|
||||
}
|
||||
else if (channelSettingsKey == "InterferometerSettings")
|
||||
{
|
||||
channelSettings->setInterferometerSettings(new SWGSDRangel::SWGInterferometerSettings());
|
||||
channelSettings->getInterferometerSettings()->fromJsonObject(settingsJsonObject);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user