| 409 | } |
| 410 | |
| 411 | void SDRDevicesDialog::OnDeviceTimer( wxTimerEvent& event ) { |
| 412 | if (refresh) { |
| 413 | if (wxGetApp().areModulesMissing()) { |
| 414 | if (!failed) { |
| 415 | failed = true; |
| 416 | wxMessageDialog *info; |
| 417 | info = new wxMessageDialog(nullptr, wxT("\nNo SoapySDR modules were found.\n\nCubicSDR requires at least one SoapySDR device support module to be installed.\n\nPlease visit https://github.com/cjcliffe/CubicSDR/wiki and in the build instructions for your platform read the 'Support Modules' section for more information."), wxT("\x28\u256F\xB0\u25A1\xB0\uFF09\u256F\uFE35\x20\u253B\u2501\u253B"), wxOK | wxICON_ERROR); |
| 418 | info->ShowModal(); |
| 419 | } |
| 420 | return; |
| 421 | } |
| 422 | |
| 423 | if (wxGetApp().areDevicesEnumerating() || !wxGetApp().areDevicesReady()) { |
| 424 | std::string msg = wxGetApp().getNotification(); |
| 425 | devStatusBar->SetStatusText(msg); |
| 426 | devTree->DeleteAllItems(); |
| 427 | devTree->AddRoot(msg); |
| 428 | event.Skip(); |
| 429 | return; |
| 430 | } |
| 431 | |
| 432 | devTree->DeleteAllItems(); |
| 433 | |
| 434 | wxTreeItemId devRoot = devTree->AddRoot("Devices"); |
| 435 | wxTreeItemId localBranch = devTree->AppendItem(devRoot, "Local"); |
| 436 | wxTreeItemId dsBranch = devTree->AppendItem(devRoot, "Local Net"); |
| 437 | wxTreeItemId remoteBranch = devTree->AppendItem(devRoot, "Remote"); |
| 438 | wxTreeItemId manualBranch = devTree->AppendItem(devRoot, "Manual"); |
| 439 | |
| 440 | devs[""] = SDREnumerator::enumerate_devices("",true); |
| 441 | if (devs[""] != nullptr) { |
| 442 | for (devs_i = devs[""]->begin(); devs_i != devs[""]->end(); devs_i++) { |
| 443 | DeviceConfig *devConfig; |
| 444 | if ((*devs_i)->isManual()) { |
| 445 | std::string devName = "Unknown"; |
| 446 | if ((*devs_i)->isAvailable()) { |
| 447 | devConfig = wxGetApp().getConfig()->getDevice((*devs_i)->getDeviceId()); |
| 448 | devName = devConfig->getDeviceName(); |
| 449 | } else { |
| 450 | devName = (*devs_i)->getDeviceId(); |
| 451 | } |
| 452 | devItems[devTree->AppendItem(manualBranch, devName)] = (*devs_i); |
| 453 | } else if ((*devs_i)->isRemote()) { |
| 454 | devConfig = wxGetApp().getConfig()->getDevice((*devs_i)->getDeviceId()); |
| 455 | devItems[devTree->AppendItem(dsBranch, devConfig->getDeviceName())] = (*devs_i); |
| 456 | } else { |
| 457 | devConfig = wxGetApp().getConfig()->getDevice((*devs_i)->getDeviceId()); |
| 458 | devItems[devTree->AppendItem(localBranch, devConfig->getDeviceName())] = (*devs_i); |
| 459 | } |
| 460 | } |
| 461 | } |
| 462 | |
| 463 | std::vector<std::string> remotes = SDREnumerator::getRemotes(); |
| 464 | |
| 465 | std::vector<SDRDeviceInfo *>::iterator remoteDevs_i; |
| 466 | |
| 467 | if (!remotes.empty()) { |
| 468 | for (const std::string& remote : remotes) { |
nothing calls this directly
no test coverage detected