2017-01-02 21:07:43 -05:00
|
|
|
// Copyright (c) Charles J. Cliffe
|
|
|
|
// SPDX-License-Identifier: GPL-2.0+
|
|
|
|
|
2015-07-29 22:19:00 -04:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <string>
|
2015-09-13 22:18:29 -04:00
|
|
|
#include <vector>
|
2016-02-04 18:05:33 -05:00
|
|
|
#include <atomic>
|
2015-09-13 22:18:29 -04:00
|
|
|
|
2015-09-20 21:48:37 -04:00
|
|
|
#include <SoapySDR/Types.hpp>
|
2016-01-31 15:11:54 -05:00
|
|
|
#include <SoapySDR/Device.hpp>
|
2015-09-20 21:48:37 -04:00
|
|
|
|
2021-04-04 22:19:24 -04:00
|
|
|
typedef struct SDRManualDef {
|
2016-01-22 00:40:00 -05:00
|
|
|
std::string factory;
|
|
|
|
std::string params;
|
|
|
|
} SDRManualDef;
|
2015-09-13 22:18:29 -04:00
|
|
|
|
2016-01-31 15:11:54 -05:00
|
|
|
typedef std::map<std::string, SoapySDR::Range> SDRRangeMap;
|
2015-07-29 22:19:00 -04:00
|
|
|
|
|
|
|
class SDRDeviceInfo {
|
|
|
|
public:
|
|
|
|
SDRDeviceInfo();
|
2016-01-31 15:11:54 -05:00
|
|
|
~SDRDeviceInfo();
|
2015-07-29 22:19:00 -04:00
|
|
|
|
2021-04-04 22:19:24 -04:00
|
|
|
std::string getDeviceId() const;
|
2015-07-29 22:19:00 -04:00
|
|
|
|
2016-01-26 19:39:17 -05:00
|
|
|
int getIndex() const;
|
2021-04-04 22:19:24 -04:00
|
|
|
void setIndex(int index_in);
|
2015-09-13 22:18:29 -04:00
|
|
|
|
2015-07-29 22:19:00 -04:00
|
|
|
bool isAvailable() const;
|
2021-04-04 22:19:24 -04:00
|
|
|
void setAvailable(bool available_in);
|
2016-02-02 20:05:32 -05:00
|
|
|
|
|
|
|
bool isActive() const;
|
2021-04-04 22:19:24 -04:00
|
|
|
void setActive(bool active_in);
|
2016-02-02 20:05:32 -05:00
|
|
|
|
2015-07-29 22:19:00 -04:00
|
|
|
const std::string& getName() const;
|
2021-04-04 22:19:24 -04:00
|
|
|
void setName(const std::string& name_in);
|
2015-07-29 22:19:00 -04:00
|
|
|
|
|
|
|
const std::string& getSerial() const;
|
2021-04-04 22:19:24 -04:00
|
|
|
void setSerial(const std::string& serial_in);
|
2015-07-29 22:19:00 -04:00
|
|
|
|
|
|
|
const std::string& getTuner() const;
|
2021-04-04 22:19:24 -04:00
|
|
|
void setTuner(const std::string& tuner_in);
|
2015-07-29 22:19:00 -04:00
|
|
|
|
|
|
|
const std::string& getManufacturer() const;
|
2021-04-04 22:19:24 -04:00
|
|
|
void setManufacturer(const std::string& manufacturer_in);
|
2015-07-29 22:19:00 -04:00
|
|
|
|
|
|
|
const std::string& getProduct() const;
|
2021-04-04 22:19:24 -04:00
|
|
|
void setProduct(const std::string& product_in);
|
2015-09-13 22:18:29 -04:00
|
|
|
|
|
|
|
const std::string& getDriver() const;
|
2021-04-04 22:19:24 -04:00
|
|
|
void setDriver(const std::string& driver_in);
|
2015-09-13 22:18:29 -04:00
|
|
|
|
|
|
|
const std::string& getHardware() const;
|
2021-04-04 22:19:24 -04:00
|
|
|
void setHardware(const std::string& hardware_in);
|
2015-07-29 22:19:00 -04:00
|
|
|
|
2015-09-13 22:18:29 -04:00
|
|
|
bool hasTimestamps() const;
|
2021-04-04 22:19:24 -04:00
|
|
|
void setTimestamps(bool timestamps_in);
|
2015-11-11 00:16:26 -05:00
|
|
|
|
|
|
|
bool isRemote() const;
|
2021-04-04 22:19:24 -04:00
|
|
|
void setRemote(bool remote_in);
|
2016-01-20 00:43:31 -05:00
|
|
|
|
|
|
|
bool isManual() const;
|
2021-04-04 22:19:24 -04:00
|
|
|
void setManual(bool manual_in);
|
2015-09-13 22:18:29 -04:00
|
|
|
|
2021-04-04 22:19:24 -04:00
|
|
|
void setManualParams(std::string manualParams_in);
|
2016-01-20 00:43:31 -05:00
|
|
|
std::string getManualParams();
|
2015-09-13 22:18:29 -04:00
|
|
|
|
2021-04-04 22:19:24 -04:00
|
|
|
void setDeviceArgs(SoapySDR::Kwargs deviceArgs_in);
|
2015-09-20 21:48:37 -04:00
|
|
|
SoapySDR::Kwargs getDeviceArgs();
|
2015-09-30 23:45:06 -04:00
|
|
|
|
2021-04-04 22:19:24 -04:00
|
|
|
void setStreamArgs(SoapySDR::Kwargs streamArgs_in);
|
2015-09-30 23:45:06 -04:00
|
|
|
SoapySDR::Kwargs getStreamArgs();
|
|
|
|
|
2016-01-31 15:11:54 -05:00
|
|
|
// void setSettingsInfo(SoapySDR::ArgInfoList settingsArgs);
|
|
|
|
// SoapySDR::ArgInfoList getSettingsArgInfo();
|
2015-10-23 02:53:51 -04:00
|
|
|
|
2016-01-31 15:11:54 -05:00
|
|
|
// std::vector<std::string> getSettingNames();
|
|
|
|
|
|
|
|
void setSoapyDevice(SoapySDR::Device *dev);
|
|
|
|
SoapySDR::Device *getSoapyDevice();
|
|
|
|
|
|
|
|
bool hasCORR(int direction, size_t channel);
|
2015-10-23 02:53:51 -04:00
|
|
|
|
2016-01-31 15:11:54 -05:00
|
|
|
std::vector<long> getSampleRates(int direction, size_t channel);
|
2017-08-23 17:27:49 -04:00
|
|
|
|
|
|
|
std::vector<std::string> getAntennaNames(int direction, size_t channel);
|
2017-08-25 01:27:30 -04:00
|
|
|
|
|
|
|
std::string getAntennaName(int direction, size_t channel);
|
2016-01-31 15:11:54 -05:00
|
|
|
|
|
|
|
long getSampleRateNear(int direction, size_t channel, long sampleRate_in);
|
|
|
|
|
|
|
|
SDRRangeMap getGains(int direction, size_t channel);
|
|
|
|
|
2017-11-18 16:38:05 -05:00
|
|
|
//read the current gain of name gainName (must exist in getGains(), else return 0)
|
|
|
|
//in the device.
|
|
|
|
double getCurrentGain(int direction, size_t channel, const std::string& gainName);
|
|
|
|
|
2015-07-29 22:19:00 -04:00
|
|
|
private:
|
2017-01-28 08:57:27 -05:00
|
|
|
int index = 0;
|
2015-09-13 22:18:29 -04:00
|
|
|
std::string name, serial, product, manufacturer, tuner;
|
2016-01-20 00:43:31 -05:00
|
|
|
std::string driver, hardware, manual_params;
|
2021-04-04 22:19:24 -04:00
|
|
|
bool timestamps{}, available, remote, manual;
|
|
|
|
std::atomic_bool active{};
|
2015-09-13 22:18:29 -04:00
|
|
|
|
2015-09-30 23:45:06 -04:00
|
|
|
SoapySDR::Kwargs deviceArgs, streamArgs;
|
2016-01-31 15:11:54 -05:00
|
|
|
SoapySDR::Device *soapyDevice;
|
2015-07-29 22:19:00 -04:00
|
|
|
};
|