diff --git a/devices/plutosdr/CMakeLists.txt b/devices/plutosdr/CMakeLists.txt
index 6ad4a038c..f7524d954 100644
--- a/devices/plutosdr/CMakeLists.txt
+++ b/devices/plutosdr/CMakeLists.txt
@@ -3,11 +3,13 @@ project(plutosdrdevice)
set (CMAKE_CXX_STANDARD 11)
set(plutosdrdevice_SOURCES
+ deviceplutosdr.cpp
deviceplutosdrbox.cpp
deviceplutosdrscan.cpp
)
set(plutosdrdevice_HEADERS
+ deviceplutosdr.h
deviceplutsdrobox.h
deviceplutosdrscan.h
)
diff --git a/devices/plutosdr/deviceplutosdr.cpp b/devices/plutosdr/deviceplutosdr.cpp
new file mode 100644
index 000000000..a73fe3a89
--- /dev/null
+++ b/devices/plutosdr/deviceplutosdr.cpp
@@ -0,0 +1,51 @@
+///////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2017 Edouard Griffiths, F4EXB //
+// //
+// This program is free software; you can redistribute it and/or modify //
+// it under the terms of the GNU General Public License as published by //
+// the Free Software Foundation as version 3 of the License, or //
+// //
+// This program is distributed in the hope that it will be useful, //
+// but WITHOUT ANY WARRANTY; without even the implied warranty of //
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
+// GNU General Public License V3 for more details. //
+// //
+// You should have received a copy of the GNU General Public License //
+// along with this program. If not, see . //
+///////////////////////////////////////////////////////////////////////////////////
+
+#include "deviceplutosdr.h"
+
+DevicePlutoSDR::DevicePlutoSDR()
+{
+}
+
+DevicePlutoSDR::~DevicePlutoSDR()
+{
+}
+
+DevicePlutoSDR& DevicePlutoSDR::instance()
+{
+ static DevicePlutoSDR inst;
+ return inst;
+}
+
+DevicePlutoSDRBox* DevicePlutoSDR::getDeviceFromURI(const std::string& uri)
+{
+ return new DevicePlutoSDRBox(uri);
+}
+
+DevicePlutoSDRBox* DevicePlutoSDR::getDeviceFromSerial(const std::string& serial)
+{
+ const std::string *uri = m_scan.getURIFromSerial(serial);
+
+ if (uri) {
+ return new DevicePlutoSDRBox(*uri);
+ } else {
+ return 0;
+ }
+}
+
+
+
+
diff --git a/devices/plutosdr/deviceplutosdr.h b/devices/plutosdr/deviceplutosdr.h
new file mode 100644
index 000000000..93a5e9b5f
--- /dev/null
+++ b/devices/plutosdr/deviceplutosdr.h
@@ -0,0 +1,43 @@
+///////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2017 Edouard Griffiths, F4EXB //
+// //
+// This program is free software; you can redistribute it and/or modify //
+// it under the terms of the GNU General Public License as published by //
+// the Free Software Foundation as version 3 of the License, or //
+// //
+// This program is distributed in the hope that it will be useful, //
+// but WITHOUT ANY WARRANTY; without even the implied warranty of //
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
+// GNU General Public License V3 for more details. //
+// //
+// You should have received a copy of the GNU General Public License //
+// along with this program. If not, see . //
+///////////////////////////////////////////////////////////////////////////////////
+
+#ifndef DEVICES_PLUTOSDR_DEVICEPLUTOSDR_H_
+#define DEVICES_PLUTOSDR_DEVICEPLUTOSDR_H_
+
+#include "deviceplutosdrscan.h"
+#include "deviceplutosdrbox.h"
+
+class DevicePlutoSDR
+{
+public:
+ static DevicePlutoSDR& instance();
+ void scan() { m_scan.scan(); }
+ void getSerials(std::vector& serials) const { m_scan.getSerials(serials); }
+ int getNbDevices() const { return m_scan.getNbDevices(); }
+ const std::string* getURIAt(unsigned int index) const { return m_scan.getURIAt(index); }
+ const std::string* getSerialAt(unsigned int index) const { return m_scan.getSerialAt(index); }
+ DevicePlutoSDRBox* getDeviceFromURI(const std::string& uri);
+ DevicePlutoSDRBox* getDeviceFromSerial(const std::string& serial);
+
+protected:
+ DevicePlutoSDR();
+ ~DevicePlutoSDR();
+
+private:
+ DevicePlutoSDRScan m_scan;
+};
+
+#endif /* DEVICES_PLUTOSDR_DEVICEPLUTOSDR_H_ */
diff --git a/devices/plutosdr/deviceplutosdrscan.h b/devices/plutosdr/deviceplutosdrscan.h
index 20384abc9..1cb7c607a 100644
--- a/devices/plutosdr/deviceplutosdrscan.h
+++ b/devices/plutosdr/deviceplutosdrscan.h
@@ -17,6 +17,10 @@
#ifndef DEVICES_PLUTOSDR_DEVICEPLUTOSDRSCAN_H_
#define DEVICES_PLUTOSDR_DEVICEPLUTOSDRSCAN_H_
+#include
+#include
+#include