From a8b318de6259b8897002eb33615b56ab710b9417 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 2 Sep 2017 04:35:17 +0200 Subject: [PATCH] PlutoSDR: added PlutoSDR common device classes --- devices/plutosdr/CMakeLists.txt | 2 ++ devices/plutosdr/deviceplutosdr.cpp | 51 +++++++++++++++++++++++++++ devices/plutosdr/deviceplutosdr.h | 43 ++++++++++++++++++++++ devices/plutosdr/deviceplutosdrscan.h | 4 +++ 4 files changed, 100 insertions(+) create mode 100644 devices/plutosdr/deviceplutosdr.cpp create mode 100644 devices/plutosdr/deviceplutosdr.h 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 + class DevicePlutoSDRScan { public: