diff --git a/src/forms/SDRDevices/SDRDevices.cpp b/src/forms/SDRDevices/SDRDevices.cpp index 3839c99..331c7e7 100644 --- a/src/forms/SDRDevices/SDRDevices.cpp +++ b/src/forms/SDRDevices/SDRDevices.cpp @@ -229,12 +229,17 @@ void SDRDevicesDialog::OnDeviceTimer( wxTimerEvent& event ) { wxTreeItemId devRoot = devTree->AddRoot("Devices"); wxTreeItemId localBranch = devTree->AppendItem(devRoot, "Local"); + wxTreeItemId dsBranch = devTree->AppendItem(devRoot, "Local Net"); wxTreeItemId remoteBranch = devTree->AppendItem(devRoot, "Remote"); devs[""] = SDREnumerator::enumerate_devices("",true); if (devs[""] != NULL) { for (devs_i = devs[""]->begin(); devs_i != devs[""]->end(); devs_i++) { - devItems[devTree->AppendItem(localBranch, (*devs_i)->getName())] = (*devs_i); + if ((*devs_i)->isRemote()) { + devItems[devTree->AppendItem(dsBranch, (*devs_i)->getName())] = (*devs_i); + } else { + devItems[devTree->AppendItem(localBranch, (*devs_i)->getName())] = (*devs_i); + } } } diff --git a/src/sdr/SDRDeviceInfo.cpp b/src/sdr/SDRDeviceInfo.cpp index 7896cfa..7805659 100644 --- a/src/sdr/SDRDeviceInfo.cpp +++ b/src/sdr/SDRDeviceInfo.cpp @@ -160,7 +160,7 @@ std::vector SDRDeviceChannel::getStreamArgNames() { } -SDRDeviceInfo::SDRDeviceInfo() : name(""), serial(""), available(false) { +SDRDeviceInfo::SDRDeviceInfo() : name(""), serial(""), available(false), remote(false) { } @@ -254,6 +254,14 @@ void SDRDeviceInfo::setTimestamps(bool timestamps) { this->timestamps = timestamps; } +bool SDRDeviceInfo::isRemote() const { + return remote; +} + +void SDRDeviceInfo::setRemote(bool remote) { + this->remote = remote; +} + void SDRDeviceInfo::setDeviceArgs(SoapySDR::Kwargs deviceArgs) { this->deviceArgs = deviceArgs; } diff --git a/src/sdr/SDRDeviceInfo.h b/src/sdr/SDRDeviceInfo.h index ccec06c..842d18d 100644 --- a/src/sdr/SDRDeviceInfo.h +++ b/src/sdr/SDRDeviceInfo.h @@ -136,6 +136,9 @@ public: bool hasTimestamps() const; void setTimestamps(bool timestamps); + + bool isRemote() const; + void setRemote(bool remote); void addChannel(SDRDeviceChannel *chan); std::vector &getChannels(); @@ -157,7 +160,7 @@ private: int index; std::string name, serial, product, manufacturer, tuner; std::string driver, hardware; - bool timestamps, available; + bool timestamps, available, remote; SoapySDR::Kwargs deviceArgs, streamArgs; SoapySDR::ArgInfoList settingInfo; diff --git a/src/sdr/SDREnumerator.cpp b/src/sdr/SDREnumerator.cpp index 2202e3d..236fea3 100644 --- a/src/sdr/SDREnumerator.cpp +++ b/src/sdr/SDREnumerator.cpp @@ -115,7 +115,6 @@ std::vector *SDREnumerator::enumerate_devices(std::string remot wxGetApp().sdrEnumThreadNotify(SDREnumerator::SDR_ENUM_MESSAGE, std::string("Opening remote server ") + remoteAddr + ".."); } for (size_t i = 0; i < results.size(); i++) { -// std::cout << "Found device " << i << std::endl; SDRDeviceInfo *dev = new SDRDeviceInfo(); SoapySDR::Kwargs deviceArgs = results[i]; @@ -128,6 +127,14 @@ std::vector *SDREnumerator::enumerate_devices(std::string remot dev->setName(it->second); } } + + if (deviceArgs.count("remote")) { + isRemote = true; + } else { + isRemote = false; + } + + dev->setRemote(isRemote); dev->setDeviceArgs(deviceArgs); @@ -141,7 +148,7 @@ std::vector *SDREnumerator::enumerate_devices(std::string remot dev->setHardware(it->second); } } - + if (isRemote) { wxGetApp().sdrEnumThreadNotify(SDREnumerator::SDR_ENUM_MESSAGE, "Querying remote " + remoteAddr + " device #" + std::to_string(i) + ": " + dev-> getName()); } else { @@ -191,25 +198,6 @@ std::vector *SDREnumerator::enumerate_devices(std::string remot dev->addChannel(chan); } - - SoapySDR::Kwargs streamArgs; - - if (isRemote) { -// if (deviceArgs.count("rtl") != 0) { -// streamArgs["remote:mtu"] = "8192"; -// streamArgs["remote:window"] = "16384000"; -// } - double fullScale = 0; - std::string nativeFormat = device->getNativeStreamFormat(SOAPY_SDR_RX, dev->getRxChannel()->getChannel(), fullScale); - - if (nativeFormat.length()) { - streamArgs["remote:format"] = nativeFormat; - } - } - - dev->setStreamArgs(streamArgs); - - dev->setSettingsInfo(device->getSettingInfo()); SoapySDR::Device::unmake(device); @@ -237,10 +225,6 @@ void SDREnumerator::run() { std::cout << "SDR enumerator starting." << std::endl; terminated.store(false); - -// if (!remotes.size()) { -// remotes.push_back("raspberrypi.local"); -// } wxGetApp().sdrEnumThreadNotify(SDREnumerator::SDR_ENUM_MESSAGE, "Scanning local devices, please wait.."); SDREnumerator::enumerate_devices("");