mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-02-03 09:44:01 -05:00
Multiple audio support: Web API: new GET and PATCHes to set input and output parameters
This commit is contained in:
parent
231cb45aa6
commit
249ea735c8
File diff suppressed because it is too large
Load Diff
@ -182,9 +182,11 @@ paths:
|
||||
$ref: "#/responses/Response_500"
|
||||
"501":
|
||||
$ref: "#/responses/Response_501"
|
||||
/sdrangel/audio/input/set:
|
||||
x-swagger-router-controller: instance
|
||||
patch:
|
||||
description: Set audio devices
|
||||
operationId: instanceAudioPatch
|
||||
description: Set audio input device paramaters
|
||||
operationId: instanceAudioInputSetPatch
|
||||
tags:
|
||||
- Instance
|
||||
consumes:
|
||||
@ -192,15 +194,49 @@ paths:
|
||||
parameters:
|
||||
- name: body
|
||||
in: body
|
||||
description: Select audio devices to use for this instance
|
||||
description: Audio input parameters. Index is used to identify the device. Only settable fields are considered.
|
||||
required: true
|
||||
schema:
|
||||
$ref: "#/definitions/AudioDevicesSelect"
|
||||
$ref: "#/definitions/AudioInputDevice"
|
||||
responses:
|
||||
"200":
|
||||
description: Success
|
||||
description: Success. Returns actual data in particular the actual sample rate.
|
||||
schema:
|
||||
$ref: "#/definitions/AudioDevicesSelect"
|
||||
$ref: "#/definitions/AudioInputDevice"
|
||||
"404":
|
||||
description: Audio input device not found
|
||||
schema:
|
||||
$ref: "#/definitions/ErrorResponse"
|
||||
"500":
|
||||
$ref: "#/responses/Response_500"
|
||||
"501":
|
||||
$ref: "#/responses/Response_501"
|
||||
|
||||
/sdrangel/audio/output/set:
|
||||
x-swagger-router-controller: instance
|
||||
patch:
|
||||
description: Set audio output device parameters
|
||||
operationId: instanceAudioOutputSetPatch
|
||||
tags:
|
||||
- Instance
|
||||
consumes:
|
||||
- application/json
|
||||
parameters:
|
||||
- name: body
|
||||
in: body
|
||||
description: Audio output parameters. Index is used to identify the device. Only settable fields are considered.
|
||||
required: true
|
||||
schema:
|
||||
$ref: "#/definitions/AudioOutputDevice"
|
||||
responses:
|
||||
"200":
|
||||
description: Success. Returns actual data in particular the actual sample rate.
|
||||
schema:
|
||||
$ref: "#/definitions/AudioOutputDevice"
|
||||
"404":
|
||||
description: Audio output device not found
|
||||
schema:
|
||||
$ref: "#/definitions/ErrorResponse"
|
||||
"500":
|
||||
$ref: "#/responses/Response_500"
|
||||
"501":
|
||||
@ -1355,64 +1391,83 @@ definitions:
|
||||
AudioDevices:
|
||||
description: "List of audio devices available in the system"
|
||||
required:
|
||||
- inputVolume
|
||||
- nbInputDevices
|
||||
- inputDeviceSelectedIndex
|
||||
- nbOutputDevices
|
||||
- outputDeviceSelectedIndex
|
||||
properties:
|
||||
inputVolume:
|
||||
description: "Audio input volume [0.0..1.0]"
|
||||
type: number
|
||||
format: float
|
||||
nbInputDevices:
|
||||
description: "Number of input audio devices"
|
||||
type: integer
|
||||
inputDeviceSelectedIndex:
|
||||
description: "Index of selected input audio devices (-1 if default)"
|
||||
type: integer
|
||||
inputDevices:
|
||||
description: "List of input devices"
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/definitions/AudioDevice"
|
||||
$ref: "#/definitions/AudioInputDevice"
|
||||
nbOutputDevices:
|
||||
description: "Number of output audio devices"
|
||||
type: integer
|
||||
outputDeviceSelectedIndex:
|
||||
description: "Index of selected output audio devices (-1 if default)"
|
||||
type: integer
|
||||
outputDevices:
|
||||
description: "List of output devices"
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/definitions/AudioDevice"
|
||||
$ref: "#/definitions/AudioOutputDevice"
|
||||
|
||||
AudioDevice:
|
||||
description: "Audio device"
|
||||
AudioInputDevice:
|
||||
description: "Audio input device"
|
||||
properties:
|
||||
name:
|
||||
description: "Displayable name of the device"
|
||||
type: string
|
||||
|
||||
AudioDevicesSelect:
|
||||
description: "Audio devices selected"
|
||||
required:
|
||||
- inputVolume
|
||||
- inputIndex
|
||||
- outputIndex
|
||||
properties:
|
||||
inputVolume:
|
||||
index:
|
||||
description: "Index in attached devices list. -1 for system default"
|
||||
type: integer
|
||||
sampleRate:
|
||||
description: "Device sample rate in S/s"
|
||||
type: integer
|
||||
isSystemDefault:
|
||||
description: "1 if this device is the system default else 0"
|
||||
type: integer
|
||||
defaultUnregistered:
|
||||
description: "1 if this device is unregistered and therefore will inherit default values else 0"
|
||||
type: integer
|
||||
volume:
|
||||
description: "Audio input volume [0.0..1.0]"
|
||||
type: number
|
||||
format: float
|
||||
inputIndex:
|
||||
description: "Index of the audio input device (-1 for default)"
|
||||
|
||||
AudioOutputDevice:
|
||||
description: "Audio output device"
|
||||
properties:
|
||||
name:
|
||||
description: "Displayable name of the device"
|
||||
type: string
|
||||
index:
|
||||
description: "Index in attached devices list. -1 for system default"
|
||||
type: integer
|
||||
outputIndex:
|
||||
description: "Index of the audio output device (-1 for default)"
|
||||
sampleRate:
|
||||
description: "Device sample rate in S/s"
|
||||
type: integer
|
||||
|
||||
isSystemDefault:
|
||||
description: "1 if this device is the system default else 0"
|
||||
type: integer
|
||||
defaultUnregistered:
|
||||
description: "1 if this device is unregistered and therefore will inherit default values else 0"
|
||||
type: integer
|
||||
copyToUDP:
|
||||
description: '1 if audio is copied to UDP else 0'
|
||||
type: integer
|
||||
udpUsesRTP:
|
||||
description: '1 if RTP protocol is used over UDP else 0'
|
||||
type: integer
|
||||
udpChannelMode:
|
||||
description: 'How audio data is copied to UDP: 0: left 1: right 2: mixed 3: stereo'
|
||||
type: integer
|
||||
udpAddress:
|
||||
description: "UDP destination address"
|
||||
type: string
|
||||
udpPort:
|
||||
description: "UDP destination port"
|
||||
type: integer
|
||||
|
||||
LocationInformation:
|
||||
description: "Instance geolocation information"
|
||||
required:
|
||||
|
@ -23,6 +23,10 @@ QString WebAPIAdapterInterface::instanceDevicesURL = "/sdrangel/devices";
|
||||
QString WebAPIAdapterInterface::instanceChannelsURL = "/sdrangel/channels";
|
||||
QString WebAPIAdapterInterface::instanceLoggingURL = "/sdrangel/logging";
|
||||
QString WebAPIAdapterInterface::instanceAudioURL = "/sdrangel/audio";
|
||||
QString WebAPIAdapterInterface::instanceAudioInputSetURL = "/sdrangel/audio/input/set";
|
||||
QString WebAPIAdapterInterface::instanceAudioOutputSetURL = "/sdrangel/audio/output/set";
|
||||
QString WebAPIAdapterInterface::instanceAudioInputUnsetURL = "/sdrangel/audio/input/unset";
|
||||
QString WebAPIAdapterInterface::instanceAudioOutputUnsetURL = "/sdrangel/audio/output/unset";
|
||||
QString WebAPIAdapterInterface::instanceLocationURL = "/sdrangel/location";
|
||||
QString WebAPIAdapterInterface::instanceDVSerialURL = "/sdrangel/dvserial";
|
||||
QString WebAPIAdapterInterface::instancePresetsURL = "/sdrangel/presets";
|
||||
|
@ -33,7 +33,8 @@ namespace SWGSDRangel
|
||||
class SWGInstanceChannelsResponse;
|
||||
class SWGLoggingInfo;
|
||||
class SWGAudioDevices;
|
||||
class SWGAudioDevicesSelect;
|
||||
class SWGAudioInputDevice;
|
||||
class SWGAudioOutputDevice;
|
||||
class SWGLocationInformation;
|
||||
class SWGDVSeralDevices;
|
||||
class SWGPresets;
|
||||
@ -152,11 +153,12 @@ public:
|
||||
}
|
||||
|
||||
/**
|
||||
* Handler of /sdrangel/audio (PATCH) swagger/sdrangel/code/html2/index.html#api-Default-instanceChannels
|
||||
* Handler of /sdrangel/audio/input (PATCH) swagger/sdrangel/code/html2/index.html#api-Default-instanceChannels
|
||||
* returns the Http status code (default 501: not implemented)
|
||||
*/
|
||||
virtual int instanceAudioPatch(
|
||||
SWGSDRangel::SWGAudioDevicesSelect& response __attribute__((unused)),
|
||||
virtual int instanceAudioInputPatch(
|
||||
SWGSDRangel::SWGAudioInputDevice& response __attribute__((unused)),
|
||||
const QStringList& audioInputKeys __attribute__((unused)),
|
||||
SWGSDRangel::SWGErrorResponse& error)
|
||||
{
|
||||
error.init();
|
||||
@ -164,6 +166,20 @@ public:
|
||||
return 501;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handler of /sdrangel/audio/output (PATCH) swagger/sdrangel/code/html2/index.html#api-Default-instanceChannels
|
||||
* returns the Http status code (default 501: not implemented)
|
||||
*/
|
||||
virtual int instanceAudioOutputPatch(
|
||||
SWGSDRangel::SWGAudioOutputDevice& response __attribute__((unused)),
|
||||
const QStringList& audioOutputKeys __attribute__((unused)),
|
||||
SWGSDRangel::SWGErrorResponse& error)
|
||||
{
|
||||
error.init();
|
||||
*error.getMessage() = QString("Function not implemented");
|
||||
return 501;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handler of /sdrangel/location (GET) swagger/sdrangel/code/html2/index.html#api-Default-instanceChannels
|
||||
* returns the Http status code (default 501: not implemented)
|
||||
@ -552,6 +568,10 @@ public:
|
||||
static QString instanceChannelsURL;
|
||||
static QString instanceLoggingURL;
|
||||
static QString instanceAudioURL;
|
||||
static QString instanceAudioInputSetURL;
|
||||
static QString instanceAudioOutputSetURL;
|
||||
static QString instanceAudioInputUnsetURL;
|
||||
static QString instanceAudioOutputUnsetURL;
|
||||
static QString instanceLocationURL;
|
||||
static QString instanceDVSerialURL;
|
||||
static QString instancePresetsURL;
|
||||
|
@ -84,6 +84,10 @@ void WebAPIRequestMapper::service(qtwebapp::HttpRequest& request, qtwebapp::Http
|
||||
instanceLoggingService(request, response);
|
||||
} else if (path == WebAPIAdapterInterface::instanceAudioURL) {
|
||||
instanceAudioService(request, response);
|
||||
} else if (path == WebAPIAdapterInterface::instanceAudioInputSetURL) {
|
||||
instanceAudioInputSetService(request, response);
|
||||
} else if (path == WebAPIAdapterInterface::instanceAudioOutputSetURL) {
|
||||
instanceAudioOutputSetService(request, response);
|
||||
} else if (path == WebAPIAdapterInterface::instanceLocationURL) {
|
||||
instanceLocationService(request, response);
|
||||
} else if (path == WebAPIAdapterInterface::instanceDVSerialURL) {
|
||||
@ -315,21 +319,106 @@ void WebAPIRequestMapper::instanceAudioService(qtwebapp::HttpRequest& request, q
|
||||
response.write(errorResponse.asJson().toUtf8());
|
||||
}
|
||||
}
|
||||
else if (request.getMethod() == "PATCH")
|
||||
else
|
||||
{
|
||||
response.setStatus(405,"Invalid HTTP method");
|
||||
errorResponse.init();
|
||||
*errorResponse.getMessage() = "Invalid HTTP method";
|
||||
response.write(errorResponse.asJson().toUtf8());
|
||||
}
|
||||
}
|
||||
|
||||
void WebAPIRequestMapper::instanceAudioInputSetService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
|
||||
{
|
||||
// TODO
|
||||
SWGSDRangel::SWGErrorResponse errorResponse;
|
||||
response.setHeader("Content-Type", "application/json");
|
||||
|
||||
if (request.getMethod() == "PATCH")
|
||||
{
|
||||
SWGSDRangel::SWGAudioDevicesSelect normalResponse;
|
||||
QString jsonStr = request.getBody();
|
||||
QJsonObject jsonObject;
|
||||
|
||||
if (parseJsonBody(jsonStr, jsonObject, response))
|
||||
{
|
||||
normalResponse.fromJson(jsonStr);
|
||||
int status = m_adapter->instanceAudioPatch(normalResponse, errorResponse);
|
||||
response.setStatus(status);
|
||||
SWGSDRangel::SWGAudioInputDevice normalResponse;
|
||||
resetAudioInputDevice(normalResponse);
|
||||
QStringList audioInputDeviceKeys;
|
||||
|
||||
if (status/100 == 2) {
|
||||
response.write(normalResponse.asJson().toUtf8());
|
||||
} else {
|
||||
if (validateAudioInputDevice(normalResponse, jsonObject, audioInputDeviceKeys))
|
||||
{
|
||||
int status = m_adapter->instanceAudioInputPatch(
|
||||
normalResponse,
|
||||
audioInputDeviceKeys,
|
||||
errorResponse);
|
||||
response.setStatus(status);
|
||||
|
||||
if (status/100 == 2) {
|
||||
response.write(normalResponse.asJson().toUtf8());
|
||||
} else {
|
||||
response.write(errorResponse.asJson().toUtf8());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
response.setStatus(400,"Invalid JSON request");
|
||||
errorResponse.init();
|
||||
*errorResponse.getMessage() = "Invalid JSON request";
|
||||
response.write(errorResponse.asJson().toUtf8());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
response.setStatus(400,"Invalid JSON format");
|
||||
errorResponse.init();
|
||||
*errorResponse.getMessage() = "Invalid JSON format";
|
||||
response.write(errorResponse.asJson().toUtf8());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
response.setStatus(405,"Invalid HTTP method");
|
||||
errorResponse.init();
|
||||
*errorResponse.getMessage() = "Invalid HTTP method";
|
||||
response.write(errorResponse.asJson().toUtf8());
|
||||
}
|
||||
}
|
||||
|
||||
void WebAPIRequestMapper::instanceAudioOutputSetService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
|
||||
{
|
||||
SWGSDRangel::SWGErrorResponse errorResponse;
|
||||
response.setHeader("Content-Type", "application/json");
|
||||
|
||||
if (request.getMethod() == "PATCH")
|
||||
{
|
||||
QString jsonStr = request.getBody();
|
||||
QJsonObject jsonObject;
|
||||
|
||||
if (parseJsonBody(jsonStr, jsonObject, response))
|
||||
{
|
||||
SWGSDRangel::SWGAudioOutputDevice normalResponse;
|
||||
resetAudioOutputDevice(normalResponse);
|
||||
QStringList audioOutputDeviceKeys;
|
||||
|
||||
if (validateAudioOutputDevice(normalResponse, jsonObject, audioOutputDeviceKeys))
|
||||
{
|
||||
int status = m_adapter->instanceAudioOutputPatch(
|
||||
normalResponse,
|
||||
audioOutputDeviceKeys,
|
||||
errorResponse);
|
||||
response.setStatus(status);
|
||||
|
||||
if (status/100 == 2) {
|
||||
response.write(normalResponse.asJson().toUtf8());
|
||||
} else {
|
||||
response.write(errorResponse.asJson().toUtf8());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
response.setStatus(400,"Invalid JSON request");
|
||||
errorResponse.init();
|
||||
*errorResponse.getMessage() = "Invalid JSON request";
|
||||
response.write(errorResponse.asJson().toUtf8());
|
||||
}
|
||||
}
|
||||
@ -1745,6 +1834,72 @@ bool WebAPIRequestMapper::validateChannelReport(
|
||||
}
|
||||
}
|
||||
|
||||
bool WebAPIRequestMapper::validateAudioInputDevice(
|
||||
SWGSDRangel::SWGAudioInputDevice& audioInputDevice,
|
||||
QJsonObject& jsonObject,
|
||||
QStringList& audioInputDeviceKeys)
|
||||
{
|
||||
if (jsonObject.contains("index")) {
|
||||
audioInputDevice.setIndex(jsonObject["index"].toInt());
|
||||
} else {
|
||||
audioInputDevice.setIndex(-1); // assume systam default
|
||||
}
|
||||
if (jsonObject.contains("sampleRate"))
|
||||
{
|
||||
audioInputDevice.setSampleRate(jsonObject["sampleRate"].toInt());
|
||||
audioInputDeviceKeys.append("sampleRate");
|
||||
}
|
||||
if (jsonObject.contains("volume"))
|
||||
{
|
||||
audioInputDevice.setVolume(jsonObject["volume"].toDouble());
|
||||
audioInputDeviceKeys.append("volume");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool WebAPIRequestMapper::validateAudioOutputDevice(
|
||||
SWGSDRangel::SWGAudioOutputDevice& audioOutputDevice,
|
||||
QJsonObject& jsonObject,
|
||||
QStringList& audioOutputDeviceKeys)
|
||||
{
|
||||
if (jsonObject.contains("index")) {
|
||||
audioOutputDevice.setIndex(jsonObject["index"].toInt());
|
||||
} else {
|
||||
audioOutputDevice.setIndex(-1); // assume systam default
|
||||
}
|
||||
if (jsonObject.contains("sampleRate"))
|
||||
{
|
||||
audioOutputDevice.setSampleRate(jsonObject["sampleRate"].toInt());
|
||||
audioOutputDeviceKeys.append("sampleRate");
|
||||
}
|
||||
if (jsonObject.contains("copyToUDP"))
|
||||
{
|
||||
audioOutputDevice.setCopyToUdp(jsonObject["copyToUDP"].toInt() == 0 ? 0 : 1);
|
||||
audioOutputDeviceKeys.append("copyToUDP");
|
||||
}
|
||||
if (jsonObject.contains("udpUsesRTP"))
|
||||
{
|
||||
audioOutputDevice.setUdpUsesRtp(jsonObject["udpUsesRTP"].toInt() == 0 ? 0 : 1);
|
||||
audioOutputDeviceKeys.append("udpUsesRTP");
|
||||
}
|
||||
if (jsonObject.contains("udpChannelMode"))
|
||||
{
|
||||
audioOutputDevice.setUdpChannelMode(jsonObject["udpChannelMode"].toInt());
|
||||
audioOutputDeviceKeys.append("udpChannelMode");
|
||||
}
|
||||
if (jsonObject.contains("udpAddress"))
|
||||
{
|
||||
audioOutputDevice.setUdpAddress(new QString(jsonObject["udpAddress"].toString()));
|
||||
audioOutputDeviceKeys.append("udpAddress");
|
||||
}
|
||||
if (jsonObject.contains("udpPort"))
|
||||
{
|
||||
audioOutputDevice.setUdpPort(jsonObject["udpPort"].toInt());
|
||||
audioOutputDeviceKeys.append("udpPort");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void WebAPIRequestMapper::appendSettingsSubKeys(
|
||||
const QJsonObject& parentSettingsJsonObject,
|
||||
QJsonObject& childSettingsJsonObject,
|
||||
@ -1786,3 +1941,16 @@ void WebAPIRequestMapper::resetChannelReport(SWGSDRangel::SWGChannelReport& chan
|
||||
channelReport.setNfmDemodReport(0);
|
||||
channelReport.setNfmModReport(0);
|
||||
}
|
||||
|
||||
void WebAPIRequestMapper::resetAudioInputDevice(SWGSDRangel::SWGAudioInputDevice& audioInputDevice)
|
||||
{
|
||||
audioInputDevice.cleanup();
|
||||
audioInputDevice.setName(0);
|
||||
}
|
||||
|
||||
void WebAPIRequestMapper::resetAudioOutputDevice(SWGSDRangel::SWGAudioOutputDevice& audioOutputDevice)
|
||||
{
|
||||
audioOutputDevice.cleanup();
|
||||
audioOutputDevice.setName(0);
|
||||
audioOutputDevice.setUdpAddress(0);
|
||||
}
|
||||
|
@ -52,6 +52,8 @@ private:
|
||||
void instanceChannelsService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response);
|
||||
void instanceLoggingService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response);
|
||||
void instanceAudioService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response);
|
||||
void instanceAudioInputSetService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response);
|
||||
void instanceAudioOutputSetService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response);
|
||||
void instanceLocationService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response);
|
||||
void instanceDVSerialService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response);
|
||||
void instancePresetsService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response);
|
||||
@ -78,6 +80,8 @@ private:
|
||||
bool validateDeviceSettings(SWGSDRangel::SWGDeviceSettings& deviceSettings, QJsonObject& jsonObject, QStringList& deviceSettingsKeys);
|
||||
bool validateChannelSettings(SWGSDRangel::SWGChannelSettings& deviceSettings, QJsonObject& jsonObject, QStringList& channelSettingsKeys);
|
||||
bool validateChannelReport(SWGSDRangel::SWGChannelReport& deviceReport, QJsonObject& jsonObject, QStringList& channelReportKeys);
|
||||
bool validateAudioInputDevice(SWGSDRangel::SWGAudioInputDevice& audioInputDevice, QJsonObject& jsonObject, QStringList& audioInputDeviceKeys);
|
||||
bool validateAudioOutputDevice(SWGSDRangel::SWGAudioOutputDevice& audioOutputDevice, QJsonObject& jsonObject, QStringList& audioOutputDeviceKeys);
|
||||
|
||||
void appendSettingsSubKeys(
|
||||
const QJsonObject& parentSettingsJsonObject,
|
||||
@ -90,6 +94,8 @@ private:
|
||||
void resetDeviceSettings(SWGSDRangel::SWGDeviceSettings& deviceSettings);
|
||||
void resetChannelSettings(SWGSDRangel::SWGChannelSettings& deviceSettings);
|
||||
void resetChannelReport(SWGSDRangel::SWGChannelReport& deviceSettings);
|
||||
void resetAudioInputDevice(SWGSDRangel::SWGAudioInputDevice& audioInputDevice);
|
||||
void resetAudioOutputDevice(SWGSDRangel::SWGAudioOutputDevice& audioOutputDevice);
|
||||
};
|
||||
|
||||
#endif /* SDRBASE_WEBAPI_WEBAPIREQUESTMAPPER_H_ */
|
||||
|
@ -234,51 +234,162 @@ int WebAPIAdapterGUI::instanceAudioGet(
|
||||
|
||||
response.init();
|
||||
response.setNbInputDevices(nbInputDevices);
|
||||
response.setInputDeviceSelectedIndex(-1); // FIXME: remove
|
||||
response.setNbOutputDevices(nbOutputDevices);
|
||||
response.setOutputDeviceSelectedIndex(-1); // FIXME: remove
|
||||
response.setInputVolume(1.0f); // FIXME: remove
|
||||
QList<SWGSDRangel::SWGAudioDevice*> *inputDevices = response.getInputDevices();
|
||||
QList<SWGSDRangel::SWGAudioDevice*> *outputDevices = response.getOutputDevices();
|
||||
QList<SWGSDRangel::SWGAudioInputDevice*> *inputDevices = response.getInputDevices();
|
||||
QList<SWGSDRangel::SWGAudioOutputDevice*> *outputDevices = response.getOutputDevices();
|
||||
AudioDeviceManager::InputDeviceInfo inputDeviceInfo;
|
||||
AudioDeviceManager::OutputDeviceInfo outputDeviceInfo;
|
||||
|
||||
// system default input device
|
||||
inputDevices->append(new SWGSDRangel::SWGAudioInputDevice);
|
||||
inputDevices->back()->init();
|
||||
bool found = m_mainWindow.m_dspEngine->getAudioDeviceManager()->getInputDeviceInfo(AudioDeviceManager::m_defaultDeviceName, inputDeviceInfo);
|
||||
*inputDevices->back()->getName() = AudioDeviceManager::m_defaultDeviceName;
|
||||
inputDevices->back()->setIndex(-1);
|
||||
inputDevices->back()->setSampleRate(inputDeviceInfo.sampleRate);
|
||||
inputDevices->back()->setIsSystemDefault(0);
|
||||
inputDevices->back()->setDefaultUnregistered(found ? 0 : 1);
|
||||
inputDevices->back()->setVolume(inputDeviceInfo.volume);
|
||||
|
||||
// real input devices
|
||||
for (int i = 0; i < nbInputDevices; i++)
|
||||
{
|
||||
inputDevices->append(new SWGSDRangel::SWGAudioDevice);
|
||||
inputDevices->append(new SWGSDRangel::SWGAudioInputDevice);
|
||||
inputDevices->back()->init();
|
||||
inputDeviceInfo.resetToDefaults();
|
||||
found = m_mainWindow.m_dspEngine->getAudioDeviceManager()->getInputDeviceInfo(audioInputDevices.at(i).deviceName(), inputDeviceInfo);
|
||||
*inputDevices->back()->getName() = audioInputDevices.at(i).deviceName();
|
||||
inputDevices->back()->setIndex(i);
|
||||
inputDevices->back()->setSampleRate(inputDeviceInfo.sampleRate);
|
||||
inputDevices->back()->setIsSystemDefault(audioInputDevices.at(i).deviceName() == QAudioDeviceInfo::defaultInputDevice().deviceName() ? 1 : 0);
|
||||
inputDevices->back()->setDefaultUnregistered(found ? 0 : 1);
|
||||
inputDevices->back()->setVolume(inputDeviceInfo.volume);
|
||||
}
|
||||
|
||||
// system default output device
|
||||
outputDevices->append(new SWGSDRangel::SWGAudioOutputDevice);
|
||||
outputDevices->back()->init();
|
||||
found = m_mainWindow.m_dspEngine->getAudioDeviceManager()->getOutputDeviceInfo(AudioDeviceManager::m_defaultDeviceName, outputDeviceInfo);
|
||||
*outputDevices->back()->getName() = AudioDeviceManager::m_defaultDeviceName;
|
||||
outputDevices->back()->setIndex(-1);
|
||||
outputDevices->back()->setSampleRate(outputDeviceInfo.sampleRate);
|
||||
inputDevices->back()->setIsSystemDefault(0);
|
||||
outputDevices->back()->setDefaultUnregistered(found ? 0 : 1);
|
||||
outputDevices->back()->setCopyToUdp(outputDeviceInfo.copyToUDP ? 1 : 0);
|
||||
outputDevices->back()->setUdpUsesRtp(outputDeviceInfo.udpUseRTP ? 1 : 0);
|
||||
outputDevices->back()->setUdpChannelMode((int) outputDeviceInfo.udpChannelMode);
|
||||
*outputDevices->back()->getUdpAddress() = outputDeviceInfo.udpAddress;
|
||||
outputDevices->back()->setUdpPort(outputDeviceInfo.udpPort);
|
||||
|
||||
// real output devices
|
||||
for (int i = 0; i < nbOutputDevices; i++)
|
||||
{
|
||||
outputDevices->append(new SWGSDRangel::SWGAudioDevice);
|
||||
outputDevices->append(new SWGSDRangel::SWGAudioOutputDevice);
|
||||
outputDevices->back()->init();
|
||||
outputDeviceInfo.resetToDefaults();
|
||||
found = m_mainWindow.m_dspEngine->getAudioDeviceManager()->getOutputDeviceInfo(audioOutputDevices.at(i).deviceName(), outputDeviceInfo);
|
||||
*outputDevices->back()->getName() = audioOutputDevices.at(i).deviceName();
|
||||
outputDevices->back()->setIndex(i);
|
||||
outputDevices->back()->setSampleRate(outputDeviceInfo.sampleRate);
|
||||
outputDevices->back()->setIsSystemDefault(audioOutputDevices.at(i).deviceName() == QAudioDeviceInfo::defaultOutputDevice().deviceName() ? 1 : 0);
|
||||
outputDevices->back()->setDefaultUnregistered(found ? 0 : 1);
|
||||
outputDevices->back()->setCopyToUdp(outputDeviceInfo.copyToUDP ? 1 : 0);
|
||||
outputDevices->back()->setUdpUsesRtp(outputDeviceInfo.udpUseRTP ? 1 : 0);
|
||||
outputDevices->back()->setUdpChannelMode((int) outputDeviceInfo.udpChannelMode);
|
||||
*outputDevices->back()->getUdpAddress() = outputDeviceInfo.udpAddress;
|
||||
outputDevices->back()->setUdpPort(outputDeviceInfo.udpPort);
|
||||
}
|
||||
|
||||
return 200;
|
||||
}
|
||||
|
||||
int WebAPIAdapterGUI::instanceAudioPatch(
|
||||
SWGSDRangel::SWGAudioDevicesSelect& response,
|
||||
SWGSDRangel::SWGErrorResponse& error __attribute__((unused)))
|
||||
int WebAPIAdapterGUI::instanceAudioInputPatch(
|
||||
SWGSDRangel::SWGAudioInputDevice& response,
|
||||
const QStringList& audioInputKeys,
|
||||
SWGSDRangel::SWGErrorResponse& error)
|
||||
{
|
||||
// response input is the query actually
|
||||
float inputVolume = response.getInputVolume();
|
||||
int inputIndex = response.getInputIndex();
|
||||
int outputIndex = response.getOutputIndex();
|
||||
// TODO
|
||||
AudioDeviceManager::InputDeviceInfo inputDeviceInfo;
|
||||
QString deviceName;
|
||||
int deviceIndex = response.getIndex();
|
||||
|
||||
const QList<QAudioDeviceInfo>& audioInputDevices = m_mainWindow.m_dspEngine->getAudioDeviceManager()->getInputDevices();
|
||||
const QList<QAudioDeviceInfo>& audioOutputDevices = m_mainWindow.m_dspEngine->getAudioDeviceManager()->getOutputDevices();
|
||||
int nbInputDevices = audioInputDevices.size();
|
||||
int nbOutputDevices = audioOutputDevices.size();
|
||||
if (!m_mainWindow.m_dspEngine->getAudioDeviceManager()->getInputDeviceName(deviceIndex, deviceName))
|
||||
{
|
||||
error.init();
|
||||
*error.getMessage() = QString("There is no audio input device at index %1").arg(deviceIndex);
|
||||
return 404;
|
||||
}
|
||||
|
||||
inputVolume = inputVolume < 0.0 ? 0.0 : inputVolume > 1.0 ? 1.0 : inputVolume;
|
||||
inputIndex = inputIndex < -1 ? -1 : inputIndex > nbInputDevices ? nbInputDevices-1 : inputIndex;
|
||||
outputIndex = outputIndex < -1 ? -1 : outputIndex > nbOutputDevices ? nbOutputDevices-1 : outputIndex;
|
||||
m_mainWindow.m_dspEngine->getAudioDeviceManager()->getInputDeviceInfo(deviceName, inputDeviceInfo);
|
||||
|
||||
response.setInputVolume(1.0f); // FIXME: remove
|
||||
response.setInputIndex(-1); // FIXME: remove
|
||||
response.setOutputIndex(-1); // FIXME: remove
|
||||
if (audioInputKeys.contains("sampleRate")) {
|
||||
inputDeviceInfo.sampleRate = response.getSampleRate();
|
||||
}
|
||||
if (audioInputKeys.contains("volume")) {
|
||||
inputDeviceInfo.volume = response.getVolume();
|
||||
}
|
||||
|
||||
m_mainWindow.m_dspEngine->getAudioDeviceManager()->setInputDeviceInfo(deviceIndex, inputDeviceInfo);
|
||||
m_mainWindow.m_dspEngine->getAudioDeviceManager()->getInputDeviceInfo(deviceName, inputDeviceInfo);
|
||||
|
||||
response.setSampleRate(inputDeviceInfo.sampleRate);
|
||||
response.setVolume(inputDeviceInfo.volume);
|
||||
|
||||
return 200;
|
||||
}
|
||||
|
||||
int WebAPIAdapterGUI::instanceAudioOutputPatch(
|
||||
SWGSDRangel::SWGAudioOutputDevice& response,
|
||||
const QStringList& audioOutputKeys,
|
||||
SWGSDRangel::SWGErrorResponse& error)
|
||||
{
|
||||
AudioDeviceManager::OutputDeviceInfo outputDeviceInfo;
|
||||
QString deviceName;
|
||||
int deviceIndex = response.getIndex();
|
||||
|
||||
if (!m_mainWindow.m_dspEngine->getAudioDeviceManager()->getOutputDeviceName(deviceIndex, deviceName))
|
||||
{
|
||||
error.init();
|
||||
*error.getMessage() = QString("There is no audio output device at index %1").arg(deviceIndex);
|
||||
return 404;
|
||||
}
|
||||
|
||||
m_mainWindow.m_dspEngine->getAudioDeviceManager()->getOutputDeviceInfo(deviceName, outputDeviceInfo);
|
||||
|
||||
if (audioOutputKeys.contains("sampleRate")) {
|
||||
outputDeviceInfo.sampleRate = response.getSampleRate();
|
||||
}
|
||||
if (audioOutputKeys.contains("copyToUDP")) {
|
||||
outputDeviceInfo.copyToUDP = response.getCopyToUdp() == 0 ? 0 : 1;
|
||||
}
|
||||
if (audioOutputKeys.contains("udpUsesRTP")) {
|
||||
outputDeviceInfo.udpUseRTP = response.getUdpUsesRtp() == 0 ? 0 : 1;
|
||||
}
|
||||
if (audioOutputKeys.contains("udpChannelMode")) {
|
||||
outputDeviceInfo.udpChannelMode = static_cast<AudioOutput::UDPChannelMode>(response.getUdpChannelMode() % 4);
|
||||
}
|
||||
if (audioOutputKeys.contains("udpAddress")) {
|
||||
outputDeviceInfo.udpAddress = *response.getUdpAddress();
|
||||
}
|
||||
if (audioOutputKeys.contains("udpPort")) {
|
||||
outputDeviceInfo.udpPort = response.getUdpPort() % (1<<16);
|
||||
}
|
||||
|
||||
m_mainWindow.m_dspEngine->getAudioDeviceManager()->setOutputDeviceInfo(deviceIndex, outputDeviceInfo);
|
||||
m_mainWindow.m_dspEngine->getAudioDeviceManager()->getOutputDeviceInfo(deviceName, outputDeviceInfo);
|
||||
|
||||
response.setSampleRate(outputDeviceInfo.sampleRate);
|
||||
response.setCopyToUdp(outputDeviceInfo.copyToUDP == 0 ? 0 : 1);
|
||||
response.setUdpUsesRtp(outputDeviceInfo.udpUseRTP == 0 ? 0 : 1);
|
||||
response.setUdpChannelMode(outputDeviceInfo.udpChannelMode % 4);
|
||||
|
||||
if (response.getUdpAddress()) {
|
||||
*response.getUdpAddress() = outputDeviceInfo.udpAddress;
|
||||
} else {
|
||||
response.setUdpAddress(new QString(outputDeviceInfo.udpAddress));
|
||||
}
|
||||
|
||||
response.setUdpPort(outputDeviceInfo.udpPort % (1<<16));
|
||||
|
||||
return 200;
|
||||
}
|
||||
|
@ -63,8 +63,14 @@ public:
|
||||
SWGSDRangel::SWGAudioDevices& response,
|
||||
SWGSDRangel::SWGErrorResponse& error);
|
||||
|
||||
virtual int instanceAudioPatch(
|
||||
SWGSDRangel::SWGAudioDevicesSelect& response,
|
||||
virtual int instanceAudioInputPatch(
|
||||
SWGSDRangel::SWGAudioInputDevice& response,
|
||||
const QStringList& audioInputKeys,
|
||||
SWGSDRangel::SWGErrorResponse& error);
|
||||
|
||||
virtual int instanceAudioOutputPatch(
|
||||
SWGSDRangel::SWGAudioOutputDevice& response,
|
||||
const QStringList& audioOutputKeys,
|
||||
SWGSDRangel::SWGErrorResponse& error);
|
||||
|
||||
virtual int instanceLocationGet(
|
||||
|
@ -235,51 +235,162 @@ int WebAPIAdapterSrv::instanceAudioGet(
|
||||
|
||||
response.init();
|
||||
response.setNbInputDevices(nbInputDevices);
|
||||
response.setInputDeviceSelectedIndex(-1); // FIXME: remove
|
||||
response.setNbOutputDevices(nbOutputDevices);
|
||||
response.setOutputDeviceSelectedIndex(-1); // FIXME: remove
|
||||
response.setInputVolume(1.0f); // FIXME: remove
|
||||
QList<SWGSDRangel::SWGAudioDevice*> *inputDevices = response.getInputDevices();
|
||||
QList<SWGSDRangel::SWGAudioDevice*> *outputDevices = response.getOutputDevices();
|
||||
QList<SWGSDRangel::SWGAudioInputDevice*> *inputDevices = response.getInputDevices();
|
||||
QList<SWGSDRangel::SWGAudioOutputDevice*> *outputDevices = response.getOutputDevices();
|
||||
AudioDeviceManager::InputDeviceInfo inputDeviceInfo;
|
||||
AudioDeviceManager::OutputDeviceInfo outputDeviceInfo;
|
||||
|
||||
// system default input device
|
||||
inputDevices->append(new SWGSDRangel::SWGAudioInputDevice);
|
||||
inputDevices->back()->init();
|
||||
bool found = m_mainCore.m_dspEngine->getAudioDeviceManager()->getInputDeviceInfo(AudioDeviceManager::m_defaultDeviceName, inputDeviceInfo);
|
||||
*inputDevices->back()->getName() = AudioDeviceManager::m_defaultDeviceName;
|
||||
inputDevices->back()->setIndex(-1);
|
||||
inputDevices->back()->setSampleRate(inputDeviceInfo.sampleRate);
|
||||
inputDevices->back()->setIsSystemDefault(0);
|
||||
inputDevices->back()->setDefaultUnregistered(found ? 0 : 1);
|
||||
inputDevices->back()->setVolume(inputDeviceInfo.volume);
|
||||
|
||||
// real input devices
|
||||
for (int i = 0; i < nbInputDevices; i++)
|
||||
{
|
||||
inputDevices->append(new SWGSDRangel::SWGAudioDevice);
|
||||
inputDevices->append(new SWGSDRangel::SWGAudioInputDevice);
|
||||
inputDevices->back()->init();
|
||||
inputDeviceInfo.resetToDefaults();
|
||||
found = m_mainCore.m_dspEngine->getAudioDeviceManager()->getInputDeviceInfo(audioInputDevices.at(i).deviceName(), inputDeviceInfo);
|
||||
*inputDevices->back()->getName() = audioInputDevices.at(i).deviceName();
|
||||
inputDevices->back()->setIndex(i);
|
||||
inputDevices->back()->setSampleRate(inputDeviceInfo.sampleRate);
|
||||
inputDevices->back()->setIsSystemDefault(audioInputDevices.at(i).deviceName() == QAudioDeviceInfo::defaultInputDevice().deviceName() ? 1 : 0);
|
||||
inputDevices->back()->setDefaultUnregistered(found ? 0 : 1);
|
||||
inputDevices->back()->setVolume(inputDeviceInfo.volume);
|
||||
}
|
||||
|
||||
// system default output device
|
||||
outputDevices->append(new SWGSDRangel::SWGAudioOutputDevice);
|
||||
outputDevices->back()->init();
|
||||
found = m_mainCore.m_dspEngine->getAudioDeviceManager()->getOutputDeviceInfo(AudioDeviceManager::m_defaultDeviceName, outputDeviceInfo);
|
||||
*outputDevices->back()->getName() = AudioDeviceManager::m_defaultDeviceName;
|
||||
outputDevices->back()->setIndex(-1);
|
||||
outputDevices->back()->setSampleRate(outputDeviceInfo.sampleRate);
|
||||
inputDevices->back()->setIsSystemDefault(0);
|
||||
outputDevices->back()->setDefaultUnregistered(found ? 0 : 1);
|
||||
outputDevices->back()->setCopyToUdp(outputDeviceInfo.copyToUDP ? 1 : 0);
|
||||
outputDevices->back()->setUdpUsesRtp(outputDeviceInfo.udpUseRTP ? 1 : 0);
|
||||
outputDevices->back()->setUdpChannelMode((int) outputDeviceInfo.udpChannelMode);
|
||||
*outputDevices->back()->getUdpAddress() = outputDeviceInfo.udpAddress;
|
||||
outputDevices->back()->setUdpPort(outputDeviceInfo.udpPort);
|
||||
|
||||
// real output devices
|
||||
for (int i = 0; i < nbOutputDevices; i++)
|
||||
{
|
||||
outputDevices->append(new SWGSDRangel::SWGAudioDevice);
|
||||
outputDevices->append(new SWGSDRangel::SWGAudioOutputDevice);
|
||||
outputDevices->back()->init();
|
||||
outputDeviceInfo.resetToDefaults();
|
||||
found = m_mainCore.m_dspEngine->getAudioDeviceManager()->getOutputDeviceInfo(audioOutputDevices.at(i).deviceName(), outputDeviceInfo);
|
||||
*outputDevices->back()->getName() = audioOutputDevices.at(i).deviceName();
|
||||
outputDevices->back()->setIndex(i);
|
||||
outputDevices->back()->setSampleRate(outputDeviceInfo.sampleRate);
|
||||
outputDevices->back()->setIsSystemDefault(audioOutputDevices.at(i).deviceName() == QAudioDeviceInfo::defaultOutputDevice().deviceName() ? 1 : 0);
|
||||
outputDevices->back()->setDefaultUnregistered(found ? 0 : 1);
|
||||
outputDevices->back()->setCopyToUdp(outputDeviceInfo.copyToUDP ? 1 : 0);
|
||||
outputDevices->back()->setUdpUsesRtp(outputDeviceInfo.udpUseRTP ? 1 : 0);
|
||||
outputDevices->back()->setUdpChannelMode((int) outputDeviceInfo.udpChannelMode);
|
||||
*outputDevices->back()->getUdpAddress() = outputDeviceInfo.udpAddress;
|
||||
outputDevices->back()->setUdpPort(outputDeviceInfo.udpPort);
|
||||
}
|
||||
|
||||
return 200;
|
||||
}
|
||||
|
||||
int WebAPIAdapterSrv::instanceAudioPatch(
|
||||
SWGSDRangel::SWGAudioDevicesSelect& response,
|
||||
SWGSDRangel::SWGErrorResponse& error __attribute__((unused)))
|
||||
int WebAPIAdapterSrv::instanceAudioInputPatch(
|
||||
SWGSDRangel::SWGAudioInputDevice& response,
|
||||
const QStringList& audioInputKeys,
|
||||
SWGSDRangel::SWGErrorResponse& error)
|
||||
{
|
||||
// response input is the query actually
|
||||
float inputVolume = response.getInputVolume();
|
||||
int inputIndex = response.getInputIndex();
|
||||
int outputIndex = response.getOutputIndex();
|
||||
// TODO
|
||||
AudioDeviceManager::InputDeviceInfo inputDeviceInfo;
|
||||
QString deviceName;
|
||||
int deviceIndex = response.getIndex();
|
||||
|
||||
const QList<QAudioDeviceInfo>& audioInputDevices = m_mainCore.m_dspEngine->getAudioDeviceManager()->getInputDevices();
|
||||
const QList<QAudioDeviceInfo>& audioOutputDevices = m_mainCore.m_dspEngine->getAudioDeviceManager()->getOutputDevices();
|
||||
int nbInputDevices = audioInputDevices.size();
|
||||
int nbOutputDevices = audioOutputDevices.size();
|
||||
if (!m_mainCore.m_dspEngine->getAudioDeviceManager()->getInputDeviceName(deviceIndex, deviceName))
|
||||
{
|
||||
error.init();
|
||||
*error.getMessage() = QString("There is no input audio device at index %1").arg(deviceIndex);
|
||||
return 404;
|
||||
}
|
||||
|
||||
inputVolume = inputVolume < 0.0 ? 0.0 : inputVolume > 1.0 ? 1.0 : inputVolume;
|
||||
inputIndex = inputIndex < -1 ? -1 : inputIndex > nbInputDevices ? nbInputDevices-1 : inputIndex;
|
||||
outputIndex = outputIndex < -1 ? -1 : outputIndex > nbOutputDevices ? nbOutputDevices-1 : outputIndex;
|
||||
m_mainCore.m_dspEngine->getAudioDeviceManager()->getInputDeviceInfo(deviceName, inputDeviceInfo);
|
||||
|
||||
response.setInputVolume(1.0f); // FIXME: remove
|
||||
response.setInputIndex(-1); // FIXME: remove
|
||||
response.setOutputIndex(-1); // FIXME: remove
|
||||
if (audioInputKeys.contains("sampleRate")) {
|
||||
inputDeviceInfo.sampleRate = response.getSampleRate();
|
||||
}
|
||||
if (audioInputKeys.contains("volume")) {
|
||||
inputDeviceInfo.volume = response.getVolume();
|
||||
}
|
||||
|
||||
m_mainCore.m_dspEngine->getAudioDeviceManager()->setInputDeviceInfo(deviceIndex, inputDeviceInfo);
|
||||
m_mainCore.m_dspEngine->getAudioDeviceManager()->getInputDeviceInfo(deviceName, inputDeviceInfo);
|
||||
|
||||
response.setSampleRate(inputDeviceInfo.sampleRate);
|
||||
response.setVolume(inputDeviceInfo.volume);
|
||||
|
||||
return 200;
|
||||
}
|
||||
|
||||
int WebAPIAdapterSrv::instanceAudioOutputPatch(
|
||||
SWGSDRangel::SWGAudioOutputDevice& response,
|
||||
const QStringList& audioOutputKeys,
|
||||
SWGSDRangel::SWGErrorResponse& error)
|
||||
{
|
||||
AudioDeviceManager::OutputDeviceInfo outputDeviceInfo;
|
||||
QString deviceName;
|
||||
int deviceIndex = response.getIndex();
|
||||
|
||||
if (!m_mainCore.m_dspEngine->getAudioDeviceManager()->getOutputDeviceName(deviceIndex, deviceName))
|
||||
{
|
||||
error.init();
|
||||
*error.getMessage() = QString("There is no output audio device at index %1").arg(deviceIndex);
|
||||
return 404;
|
||||
}
|
||||
|
||||
m_mainCore.m_dspEngine->getAudioDeviceManager()->getOutputDeviceInfo(deviceName, outputDeviceInfo);
|
||||
|
||||
if (audioOutputKeys.contains("sampleRate")) {
|
||||
outputDeviceInfo.sampleRate = response.getSampleRate();
|
||||
}
|
||||
if (audioOutputKeys.contains("copyToUDP")) {
|
||||
outputDeviceInfo.copyToUDP = response.getCopyToUdp() == 0 ? 0 : 1;
|
||||
}
|
||||
if (audioOutputKeys.contains("udpUsesRTP")) {
|
||||
outputDeviceInfo.udpUseRTP = response.getUdpUsesRtp() == 0 ? 0 : 1;
|
||||
}
|
||||
if (audioOutputKeys.contains("udpChannelMode")) {
|
||||
outputDeviceInfo.udpChannelMode = static_cast<AudioOutput::UDPChannelMode>(response.getUdpChannelMode() % 4);
|
||||
}
|
||||
if (audioOutputKeys.contains("udpAddress")) {
|
||||
outputDeviceInfo.udpAddress = *response.getUdpAddress();
|
||||
}
|
||||
if (audioOutputKeys.contains("udpPort")) {
|
||||
outputDeviceInfo.udpPort = response.getUdpPort() % (1<<16);
|
||||
}
|
||||
|
||||
m_mainCore.m_dspEngine->getAudioDeviceManager()->setOutputDeviceInfo(deviceIndex, outputDeviceInfo);
|
||||
m_mainCore.m_dspEngine->getAudioDeviceManager()->getOutputDeviceInfo(deviceName, outputDeviceInfo);
|
||||
|
||||
response.setSampleRate(outputDeviceInfo.sampleRate);
|
||||
response.setCopyToUdp(outputDeviceInfo.copyToUDP == 0 ? 0 : 1);
|
||||
response.setUdpUsesRtp(outputDeviceInfo.udpUseRTP == 0 ? 0 : 1);
|
||||
response.setUdpChannelMode(outputDeviceInfo.udpChannelMode % 4);
|
||||
|
||||
if (response.getUdpAddress()) {
|
||||
*response.getUdpAddress() = outputDeviceInfo.udpAddress;
|
||||
} else {
|
||||
response.setUdpAddress(new QString(outputDeviceInfo.udpAddress));
|
||||
}
|
||||
|
||||
response.setUdpPort(outputDeviceInfo.udpPort % (1<<16));
|
||||
|
||||
return 200;
|
||||
}
|
||||
|
@ -63,8 +63,14 @@ public:
|
||||
SWGSDRangel::SWGAudioDevices& response,
|
||||
SWGSDRangel::SWGErrorResponse& error);
|
||||
|
||||
virtual int instanceAudioPatch(
|
||||
SWGSDRangel::SWGAudioDevicesSelect& response,
|
||||
virtual int instanceAudioInputPatch(
|
||||
SWGSDRangel::SWGAudioInputDevice& response,
|
||||
const QStringList& audioInputKeys,
|
||||
SWGSDRangel::SWGErrorResponse& error);
|
||||
|
||||
virtual int instanceAudioOutputPatch(
|
||||
SWGSDRangel::SWGAudioOutputDevice& response,
|
||||
const QStringList& audioOutputKeys,
|
||||
SWGSDRangel::SWGErrorResponse& error);
|
||||
|
||||
virtual int instanceLocationGet(
|
||||
|
@ -182,9 +182,11 @@ paths:
|
||||
$ref: "#/responses/Response_500"
|
||||
"501":
|
||||
$ref: "#/responses/Response_501"
|
||||
/sdrangel/audio/input/set:
|
||||
x-swagger-router-controller: instance
|
||||
patch:
|
||||
description: Set audio devices
|
||||
operationId: instanceAudioPatch
|
||||
description: Set audio input device paramaters
|
||||
operationId: instanceAudioInputSetPatch
|
||||
tags:
|
||||
- Instance
|
||||
consumes:
|
||||
@ -192,15 +194,49 @@ paths:
|
||||
parameters:
|
||||
- name: body
|
||||
in: body
|
||||
description: Select audio devices to use for this instance
|
||||
description: Audio input parameters. Index is used to identify the device. Only settable fields are considered.
|
||||
required: true
|
||||
schema:
|
||||
$ref: "#/definitions/AudioDevicesSelect"
|
||||
$ref: "#/definitions/AudioInputDevice"
|
||||
responses:
|
||||
"200":
|
||||
description: Success
|
||||
description: Success. Returns actual data in particular the actual sample rate.
|
||||
schema:
|
||||
$ref: "#/definitions/AudioDevicesSelect"
|
||||
$ref: "#/definitions/AudioInputDevice"
|
||||
"404":
|
||||
description: Audio input device not found
|
||||
schema:
|
||||
$ref: "#/definitions/ErrorResponse"
|
||||
"500":
|
||||
$ref: "#/responses/Response_500"
|
||||
"501":
|
||||
$ref: "#/responses/Response_501"
|
||||
|
||||
/sdrangel/audio/output/set:
|
||||
x-swagger-router-controller: instance
|
||||
patch:
|
||||
description: Set audio output device parameters
|
||||
operationId: instanceAudioOutputSetPatch
|
||||
tags:
|
||||
- Instance
|
||||
consumes:
|
||||
- application/json
|
||||
parameters:
|
||||
- name: body
|
||||
in: body
|
||||
description: Audio output parameters. Index is used to identify the device. Only settable fields are considered.
|
||||
required: true
|
||||
schema:
|
||||
$ref: "#/definitions/AudioOutputDevice"
|
||||
responses:
|
||||
"200":
|
||||
description: Success. Returns actual data in particular the actual sample rate.
|
||||
schema:
|
||||
$ref: "#/definitions/AudioOutputDevice"
|
||||
"404":
|
||||
description: Audio output device not found
|
||||
schema:
|
||||
$ref: "#/definitions/ErrorResponse"
|
||||
"500":
|
||||
$ref: "#/responses/Response_500"
|
||||
"501":
|
||||
@ -1355,64 +1391,83 @@ definitions:
|
||||
AudioDevices:
|
||||
description: "List of audio devices available in the system"
|
||||
required:
|
||||
- inputVolume
|
||||
- nbInputDevices
|
||||
- inputDeviceSelectedIndex
|
||||
- nbOutputDevices
|
||||
- outputDeviceSelectedIndex
|
||||
properties:
|
||||
inputVolume:
|
||||
description: "Audio input volume [0.0..1.0]"
|
||||
type: number
|
||||
format: float
|
||||
nbInputDevices:
|
||||
description: "Number of input audio devices"
|
||||
type: integer
|
||||
inputDeviceSelectedIndex:
|
||||
description: "Index of selected input audio devices (-1 if default)"
|
||||
type: integer
|
||||
inputDevices:
|
||||
description: "List of input devices"
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/definitions/AudioDevice"
|
||||
$ref: "#/definitions/AudioInputDevice"
|
||||
nbOutputDevices:
|
||||
description: "Number of output audio devices"
|
||||
type: integer
|
||||
outputDeviceSelectedIndex:
|
||||
description: "Index of selected output audio devices (-1 if default)"
|
||||
type: integer
|
||||
outputDevices:
|
||||
description: "List of output devices"
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/definitions/AudioDevice"
|
||||
$ref: "#/definitions/AudioOutputDevice"
|
||||
|
||||
AudioDevice:
|
||||
description: "Audio device"
|
||||
AudioInputDevice:
|
||||
description: "Audio input device"
|
||||
properties:
|
||||
name:
|
||||
description: "Displayable name of the device"
|
||||
type: string
|
||||
|
||||
AudioDevicesSelect:
|
||||
description: "Audio devices selected"
|
||||
required:
|
||||
- inputVolume
|
||||
- inputIndex
|
||||
- outputIndex
|
||||
properties:
|
||||
inputVolume:
|
||||
index:
|
||||
description: "Index in attached devices list. -1 for system default"
|
||||
type: integer
|
||||
sampleRate:
|
||||
description: "Device sample rate in S/s"
|
||||
type: integer
|
||||
isSystemDefault:
|
||||
description: "1 if this device is the system default else 0"
|
||||
type: integer
|
||||
defaultUnregistered:
|
||||
description: "1 if this device is unregistered and therefore will inherit default values else 0"
|
||||
type: integer
|
||||
volume:
|
||||
description: "Audio input volume [0.0..1.0]"
|
||||
type: number
|
||||
format: float
|
||||
inputIndex:
|
||||
description: "Index of the audio input device (-1 for default)"
|
||||
|
||||
AudioOutputDevice:
|
||||
description: "Audio output device"
|
||||
properties:
|
||||
name:
|
||||
description: "Displayable name of the device"
|
||||
type: string
|
||||
index:
|
||||
description: "Index in attached devices list. -1 for system default"
|
||||
type: integer
|
||||
outputIndex:
|
||||
description: "Index of the audio output device (-1 for default)"
|
||||
sampleRate:
|
||||
description: "Device sample rate in S/s"
|
||||
type: integer
|
||||
|
||||
isSystemDefault:
|
||||
description: "1 if this device is the system default else 0"
|
||||
type: integer
|
||||
defaultUnregistered:
|
||||
description: "1 if this device is unregistered and therefore will inherit default values else 0"
|
||||
type: integer
|
||||
copyToUDP:
|
||||
description: '1 if audio is copied to UDP else 0'
|
||||
type: integer
|
||||
udpUsesRTP:
|
||||
description: '1 if RTP protocol is used over UDP else 0'
|
||||
type: integer
|
||||
udpChannelMode:
|
||||
description: 'How audio data is copied to UDP: 0: left 1: right 2: mixed 3: stereo'
|
||||
type: integer
|
||||
udpAddress:
|
||||
description: "UDP destination address"
|
||||
type: string
|
||||
udpPort:
|
||||
description: "UDP destination port"
|
||||
type: integer
|
||||
|
||||
LocationInformation:
|
||||
description: "Instance geolocation information"
|
||||
required:
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -28,18 +28,12 @@ SWGAudioDevices::SWGAudioDevices(QString* json) {
|
||||
}
|
||||
|
||||
SWGAudioDevices::SWGAudioDevices() {
|
||||
input_volume = 0.0f;
|
||||
m_input_volume_isSet = false;
|
||||
nb_input_devices = 0;
|
||||
m_nb_input_devices_isSet = false;
|
||||
input_device_selected_index = 0;
|
||||
m_input_device_selected_index_isSet = false;
|
||||
input_devices = nullptr;
|
||||
m_input_devices_isSet = false;
|
||||
nb_output_devices = 0;
|
||||
m_nb_output_devices_isSet = false;
|
||||
output_device_selected_index = 0;
|
||||
m_output_device_selected_index_isSet = false;
|
||||
output_devices = nullptr;
|
||||
m_output_devices_isSet = false;
|
||||
}
|
||||
@ -50,27 +44,19 @@ SWGAudioDevices::~SWGAudioDevices() {
|
||||
|
||||
void
|
||||
SWGAudioDevices::init() {
|
||||
input_volume = 0.0f;
|
||||
m_input_volume_isSet = false;
|
||||
nb_input_devices = 0;
|
||||
m_nb_input_devices_isSet = false;
|
||||
input_device_selected_index = 0;
|
||||
m_input_device_selected_index_isSet = false;
|
||||
input_devices = new QList<SWGAudioDevice*>();
|
||||
input_devices = new QList<SWGAudioInputDevice*>();
|
||||
m_input_devices_isSet = false;
|
||||
nb_output_devices = 0;
|
||||
m_nb_output_devices_isSet = false;
|
||||
output_device_selected_index = 0;
|
||||
m_output_device_selected_index_isSet = false;
|
||||
output_devices = new QList<SWGAudioDevice*>();
|
||||
output_devices = new QList<SWGAudioOutputDevice*>();
|
||||
m_output_devices_isSet = false;
|
||||
}
|
||||
|
||||
void
|
||||
SWGAudioDevices::cleanup() {
|
||||
|
||||
|
||||
|
||||
if(input_devices != nullptr) {
|
||||
auto arr = input_devices;
|
||||
for(auto o: *arr) {
|
||||
@ -79,7 +65,6 @@ SWGAudioDevices::cleanup() {
|
||||
delete input_devices;
|
||||
}
|
||||
|
||||
|
||||
if(output_devices != nullptr) {
|
||||
auto arr = output_devices;
|
||||
for(auto o: *arr) {
|
||||
@ -100,20 +85,14 @@ SWGAudioDevices::fromJson(QString &json) {
|
||||
|
||||
void
|
||||
SWGAudioDevices::fromJsonObject(QJsonObject &pJson) {
|
||||
::SWGSDRangel::setValue(&input_volume, pJson["inputVolume"], "float", "");
|
||||
|
||||
::SWGSDRangel::setValue(&nb_input_devices, pJson["nbInputDevices"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&input_device_selected_index, pJson["inputDeviceSelectedIndex"], "qint32", "");
|
||||
|
||||
|
||||
::SWGSDRangel::setValue(&input_devices, pJson["inputDevices"], "QList", "SWGAudioDevice");
|
||||
::SWGSDRangel::setValue(&input_devices, pJson["inputDevices"], "QList", "SWGAudioInputDevice");
|
||||
::SWGSDRangel::setValue(&nb_output_devices, pJson["nbOutputDevices"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&output_device_selected_index, pJson["outputDeviceSelectedIndex"], "qint32", "");
|
||||
|
||||
|
||||
::SWGSDRangel::setValue(&output_devices, pJson["outputDevices"], "QList", "SWGAudioDevice");
|
||||
::SWGSDRangel::setValue(&output_devices, pJson["outputDevices"], "QList", "SWGAudioOutputDevice");
|
||||
}
|
||||
|
||||
QString
|
||||
@ -130,41 +109,22 @@ SWGAudioDevices::asJson ()
|
||||
QJsonObject*
|
||||
SWGAudioDevices::asJsonObject() {
|
||||
QJsonObject* obj = new QJsonObject();
|
||||
if(m_input_volume_isSet){
|
||||
obj->insert("inputVolume", QJsonValue(input_volume));
|
||||
}
|
||||
if(m_nb_input_devices_isSet){
|
||||
obj->insert("nbInputDevices", QJsonValue(nb_input_devices));
|
||||
}
|
||||
if(m_input_device_selected_index_isSet){
|
||||
obj->insert("inputDeviceSelectedIndex", QJsonValue(input_device_selected_index));
|
||||
}
|
||||
if(input_devices->size() > 0){
|
||||
toJsonArray((QList<void*>*)input_devices, obj, "inputDevices", "SWGAudioDevice");
|
||||
toJsonArray((QList<void*>*)input_devices, obj, "inputDevices", "SWGAudioInputDevice");
|
||||
}
|
||||
if(m_nb_output_devices_isSet){
|
||||
obj->insert("nbOutputDevices", QJsonValue(nb_output_devices));
|
||||
}
|
||||
if(m_output_device_selected_index_isSet){
|
||||
obj->insert("outputDeviceSelectedIndex", QJsonValue(output_device_selected_index));
|
||||
}
|
||||
if(output_devices->size() > 0){
|
||||
toJsonArray((QList<void*>*)output_devices, obj, "outputDevices", "SWGAudioDevice");
|
||||
toJsonArray((QList<void*>*)output_devices, obj, "outputDevices", "SWGAudioOutputDevice");
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
float
|
||||
SWGAudioDevices::getInputVolume() {
|
||||
return input_volume;
|
||||
}
|
||||
void
|
||||
SWGAudioDevices::setInputVolume(float input_volume) {
|
||||
this->input_volume = input_volume;
|
||||
this->m_input_volume_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGAudioDevices::getNbInputDevices() {
|
||||
return nb_input_devices;
|
||||
@ -175,22 +135,12 @@ SWGAudioDevices::setNbInputDevices(qint32 nb_input_devices) {
|
||||
this->m_nb_input_devices_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGAudioDevices::getInputDeviceSelectedIndex() {
|
||||
return input_device_selected_index;
|
||||
}
|
||||
void
|
||||
SWGAudioDevices::setInputDeviceSelectedIndex(qint32 input_device_selected_index) {
|
||||
this->input_device_selected_index = input_device_selected_index;
|
||||
this->m_input_device_selected_index_isSet = true;
|
||||
}
|
||||
|
||||
QList<SWGAudioDevice*>*
|
||||
QList<SWGAudioInputDevice*>*
|
||||
SWGAudioDevices::getInputDevices() {
|
||||
return input_devices;
|
||||
}
|
||||
void
|
||||
SWGAudioDevices::setInputDevices(QList<SWGAudioDevice*>* input_devices) {
|
||||
SWGAudioDevices::setInputDevices(QList<SWGAudioInputDevice*>* input_devices) {
|
||||
this->input_devices = input_devices;
|
||||
this->m_input_devices_isSet = true;
|
||||
}
|
||||
@ -205,22 +155,12 @@ SWGAudioDevices::setNbOutputDevices(qint32 nb_output_devices) {
|
||||
this->m_nb_output_devices_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGAudioDevices::getOutputDeviceSelectedIndex() {
|
||||
return output_device_selected_index;
|
||||
}
|
||||
void
|
||||
SWGAudioDevices::setOutputDeviceSelectedIndex(qint32 output_device_selected_index) {
|
||||
this->output_device_selected_index = output_device_selected_index;
|
||||
this->m_output_device_selected_index_isSet = true;
|
||||
}
|
||||
|
||||
QList<SWGAudioDevice*>*
|
||||
QList<SWGAudioOutputDevice*>*
|
||||
SWGAudioDevices::getOutputDevices() {
|
||||
return output_devices;
|
||||
}
|
||||
void
|
||||
SWGAudioDevices::setOutputDevices(QList<SWGAudioDevice*>* output_devices) {
|
||||
SWGAudioDevices::setOutputDevices(QList<SWGAudioOutputDevice*>* output_devices) {
|
||||
this->output_devices = output_devices;
|
||||
this->m_output_devices_isSet = true;
|
||||
}
|
||||
@ -230,12 +170,9 @@ bool
|
||||
SWGAudioDevices::isSet(){
|
||||
bool isObjectUpdated = false;
|
||||
do{
|
||||
if(m_input_volume_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_nb_input_devices_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_input_device_selected_index_isSet){ isObjectUpdated = true; break;}
|
||||
if(input_devices->size() > 0){ isObjectUpdated = true; break;}
|
||||
if(m_nb_output_devices_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_output_device_selected_index_isSet){ isObjectUpdated = true; break;}
|
||||
if(output_devices->size() > 0){ isObjectUpdated = true; break;}
|
||||
}while(false);
|
||||
return isObjectUpdated;
|
||||
|
@ -22,7 +22,8 @@
|
||||
#include <QJsonObject>
|
||||
|
||||
|
||||
#include "SWGAudioDevice.h"
|
||||
#include "SWGAudioInputDevice.h"
|
||||
#include "SWGAudioOutputDevice.h"
|
||||
#include <QList>
|
||||
|
||||
#include "SWGObject.h"
|
||||
@ -43,50 +44,32 @@ public:
|
||||
virtual void fromJsonObject(QJsonObject &json) override;
|
||||
virtual SWGAudioDevices* fromJson(QString &jsonString) override;
|
||||
|
||||
float getInputVolume();
|
||||
void setInputVolume(float input_volume);
|
||||
|
||||
qint32 getNbInputDevices();
|
||||
void setNbInputDevices(qint32 nb_input_devices);
|
||||
|
||||
qint32 getInputDeviceSelectedIndex();
|
||||
void setInputDeviceSelectedIndex(qint32 input_device_selected_index);
|
||||
|
||||
QList<SWGAudioDevice*>* getInputDevices();
|
||||
void setInputDevices(QList<SWGAudioDevice*>* input_devices);
|
||||
QList<SWGAudioInputDevice*>* getInputDevices();
|
||||
void setInputDevices(QList<SWGAudioInputDevice*>* input_devices);
|
||||
|
||||
qint32 getNbOutputDevices();
|
||||
void setNbOutputDevices(qint32 nb_output_devices);
|
||||
|
||||
qint32 getOutputDeviceSelectedIndex();
|
||||
void setOutputDeviceSelectedIndex(qint32 output_device_selected_index);
|
||||
|
||||
QList<SWGAudioDevice*>* getOutputDevices();
|
||||
void setOutputDevices(QList<SWGAudioDevice*>* output_devices);
|
||||
QList<SWGAudioOutputDevice*>* getOutputDevices();
|
||||
void setOutputDevices(QList<SWGAudioOutputDevice*>* output_devices);
|
||||
|
||||
|
||||
virtual bool isSet() override;
|
||||
|
||||
private:
|
||||
float input_volume;
|
||||
bool m_input_volume_isSet;
|
||||
|
||||
qint32 nb_input_devices;
|
||||
bool m_nb_input_devices_isSet;
|
||||
|
||||
qint32 input_device_selected_index;
|
||||
bool m_input_device_selected_index_isSet;
|
||||
|
||||
QList<SWGAudioDevice*>* input_devices;
|
||||
QList<SWGAudioInputDevice*>* input_devices;
|
||||
bool m_input_devices_isSet;
|
||||
|
||||
qint32 nb_output_devices;
|
||||
bool m_nb_output_devices_isSet;
|
||||
|
||||
qint32 output_device_selected_index;
|
||||
bool m_output_device_selected_index_isSet;
|
||||
|
||||
QList<SWGAudioDevice*>* output_devices;
|
||||
QList<SWGAudioOutputDevice*>* output_devices;
|
||||
bool m_output_devices_isSet;
|
||||
|
||||
};
|
||||
|
213
swagger/sdrangel/code/qt5/client/SWGAudioInputDevice.cpp
Normal file
213
swagger/sdrangel/code/qt5/client/SWGAudioInputDevice.cpp
Normal file
@ -0,0 +1,213 @@
|
||||
/**
|
||||
* SDRangel
|
||||
* This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Stopping instance i.e. /sdrangel with DELETE method is a server only feature. It allows stopping the instance nicely. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV demodulator, Channel Analyzer, Channel Analyzer NG, LoRa demodulator, TCP source * The content type returned is always application/json except in the following cases: * An incorrect URL was specified: this document is returned as text/html with a status 400 ---
|
||||
*
|
||||
* OpenAPI spec version: 4.0.0
|
||||
* Contact: f4exb06@gmail.com
|
||||
*
|
||||
* NOTE: This class is auto generated by the swagger code generator program.
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
|
||||
#include "SWGAudioInputDevice.h"
|
||||
|
||||
#include "SWGHelpers.h"
|
||||
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonArray>
|
||||
#include <QObject>
|
||||
#include <QDebug>
|
||||
|
||||
namespace SWGSDRangel {
|
||||
|
||||
SWGAudioInputDevice::SWGAudioInputDevice(QString* json) {
|
||||
init();
|
||||
this->fromJson(*json);
|
||||
}
|
||||
|
||||
SWGAudioInputDevice::SWGAudioInputDevice() {
|
||||
name = nullptr;
|
||||
m_name_isSet = false;
|
||||
index = 0;
|
||||
m_index_isSet = false;
|
||||
sample_rate = 0;
|
||||
m_sample_rate_isSet = false;
|
||||
is_system_default = 0;
|
||||
m_is_system_default_isSet = false;
|
||||
default_unregistered = 0;
|
||||
m_default_unregistered_isSet = false;
|
||||
volume = 0.0f;
|
||||
m_volume_isSet = false;
|
||||
}
|
||||
|
||||
SWGAudioInputDevice::~SWGAudioInputDevice() {
|
||||
this->cleanup();
|
||||
}
|
||||
|
||||
void
|
||||
SWGAudioInputDevice::init() {
|
||||
name = new QString("");
|
||||
m_name_isSet = false;
|
||||
index = 0;
|
||||
m_index_isSet = false;
|
||||
sample_rate = 0;
|
||||
m_sample_rate_isSet = false;
|
||||
is_system_default = 0;
|
||||
m_is_system_default_isSet = false;
|
||||
default_unregistered = 0;
|
||||
m_default_unregistered_isSet = false;
|
||||
volume = 0.0f;
|
||||
m_volume_isSet = false;
|
||||
}
|
||||
|
||||
void
|
||||
SWGAudioInputDevice::cleanup() {
|
||||
if(name != nullptr) {
|
||||
delete name;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
SWGAudioInputDevice*
|
||||
SWGAudioInputDevice::fromJson(QString &json) {
|
||||
QByteArray array (json.toStdString().c_str());
|
||||
QJsonDocument doc = QJsonDocument::fromJson(array);
|
||||
QJsonObject jsonObject = doc.object();
|
||||
this->fromJsonObject(jsonObject);
|
||||
return this;
|
||||
}
|
||||
|
||||
void
|
||||
SWGAudioInputDevice::fromJsonObject(QJsonObject &pJson) {
|
||||
::SWGSDRangel::setValue(&name, pJson["name"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&index, pJson["index"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&sample_rate, pJson["sampleRate"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&is_system_default, pJson["isSystemDefault"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&default_unregistered, pJson["defaultUnregistered"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&volume, pJson["volume"], "float", "");
|
||||
|
||||
}
|
||||
|
||||
QString
|
||||
SWGAudioInputDevice::asJson ()
|
||||
{
|
||||
QJsonObject* obj = this->asJsonObject();
|
||||
|
||||
QJsonDocument doc(*obj);
|
||||
QByteArray bytes = doc.toJson();
|
||||
delete obj;
|
||||
return QString(bytes);
|
||||
}
|
||||
|
||||
QJsonObject*
|
||||
SWGAudioInputDevice::asJsonObject() {
|
||||
QJsonObject* obj = new QJsonObject();
|
||||
if(name != nullptr && *name != QString("")){
|
||||
toJsonValue(QString("name"), name, obj, QString("QString"));
|
||||
}
|
||||
if(m_index_isSet){
|
||||
obj->insert("index", QJsonValue(index));
|
||||
}
|
||||
if(m_sample_rate_isSet){
|
||||
obj->insert("sampleRate", QJsonValue(sample_rate));
|
||||
}
|
||||
if(m_is_system_default_isSet){
|
||||
obj->insert("isSystemDefault", QJsonValue(is_system_default));
|
||||
}
|
||||
if(m_default_unregistered_isSet){
|
||||
obj->insert("defaultUnregistered", QJsonValue(default_unregistered));
|
||||
}
|
||||
if(m_volume_isSet){
|
||||
obj->insert("volume", QJsonValue(volume));
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGAudioInputDevice::getName() {
|
||||
return name;
|
||||
}
|
||||
void
|
||||
SWGAudioInputDevice::setName(QString* name) {
|
||||
this->name = name;
|
||||
this->m_name_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGAudioInputDevice::getIndex() {
|
||||
return index;
|
||||
}
|
||||
void
|
||||
SWGAudioInputDevice::setIndex(qint32 index) {
|
||||
this->index = index;
|
||||
this->m_index_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGAudioInputDevice::getSampleRate() {
|
||||
return sample_rate;
|
||||
}
|
||||
void
|
||||
SWGAudioInputDevice::setSampleRate(qint32 sample_rate) {
|
||||
this->sample_rate = sample_rate;
|
||||
this->m_sample_rate_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGAudioInputDevice::getIsSystemDefault() {
|
||||
return is_system_default;
|
||||
}
|
||||
void
|
||||
SWGAudioInputDevice::setIsSystemDefault(qint32 is_system_default) {
|
||||
this->is_system_default = is_system_default;
|
||||
this->m_is_system_default_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGAudioInputDevice::getDefaultUnregistered() {
|
||||
return default_unregistered;
|
||||
}
|
||||
void
|
||||
SWGAudioInputDevice::setDefaultUnregistered(qint32 default_unregistered) {
|
||||
this->default_unregistered = default_unregistered;
|
||||
this->m_default_unregistered_isSet = true;
|
||||
}
|
||||
|
||||
float
|
||||
SWGAudioInputDevice::getVolume() {
|
||||
return volume;
|
||||
}
|
||||
void
|
||||
SWGAudioInputDevice::setVolume(float volume) {
|
||||
this->volume = volume;
|
||||
this->m_volume_isSet = true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
SWGAudioInputDevice::isSet(){
|
||||
bool isObjectUpdated = false;
|
||||
do{
|
||||
if(name != nullptr && *name != QString("")){ isObjectUpdated = true; break;}
|
||||
if(m_index_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_sample_rate_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_is_system_default_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_default_unregistered_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_volume_isSet){ isObjectUpdated = true; break;}
|
||||
}while(false);
|
||||
return isObjectUpdated;
|
||||
}
|
||||
}
|
||||
|
89
swagger/sdrangel/code/qt5/client/SWGAudioInputDevice.h
Normal file
89
swagger/sdrangel/code/qt5/client/SWGAudioInputDevice.h
Normal file
@ -0,0 +1,89 @@
|
||||
/**
|
||||
* SDRangel
|
||||
* This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Stopping instance i.e. /sdrangel with DELETE method is a server only feature. It allows stopping the instance nicely. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV demodulator, Channel Analyzer, Channel Analyzer NG, LoRa demodulator, TCP source * The content type returned is always application/json except in the following cases: * An incorrect URL was specified: this document is returned as text/html with a status 400 ---
|
||||
*
|
||||
* OpenAPI spec version: 4.0.0
|
||||
* Contact: f4exb06@gmail.com
|
||||
*
|
||||
* NOTE: This class is auto generated by the swagger code generator program.
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
/*
|
||||
* SWGAudioInputDevice.h
|
||||
*
|
||||
* Audio input device
|
||||
*/
|
||||
|
||||
#ifndef SWGAudioInputDevice_H_
|
||||
#define SWGAudioInputDevice_H_
|
||||
|
||||
#include <QJsonObject>
|
||||
|
||||
|
||||
#include <QString>
|
||||
|
||||
#include "SWGObject.h"
|
||||
#include "export.h"
|
||||
|
||||
namespace SWGSDRangel {
|
||||
|
||||
class SWG_API SWGAudioInputDevice: public SWGObject {
|
||||
public:
|
||||
SWGAudioInputDevice();
|
||||
SWGAudioInputDevice(QString* json);
|
||||
virtual ~SWGAudioInputDevice();
|
||||
void init();
|
||||
void cleanup();
|
||||
|
||||
virtual QString asJson () override;
|
||||
virtual QJsonObject* asJsonObject() override;
|
||||
virtual void fromJsonObject(QJsonObject &json) override;
|
||||
virtual SWGAudioInputDevice* fromJson(QString &jsonString) override;
|
||||
|
||||
QString* getName();
|
||||
void setName(QString* name);
|
||||
|
||||
qint32 getIndex();
|
||||
void setIndex(qint32 index);
|
||||
|
||||
qint32 getSampleRate();
|
||||
void setSampleRate(qint32 sample_rate);
|
||||
|
||||
qint32 getIsSystemDefault();
|
||||
void setIsSystemDefault(qint32 is_system_default);
|
||||
|
||||
qint32 getDefaultUnregistered();
|
||||
void setDefaultUnregistered(qint32 default_unregistered);
|
||||
|
||||
float getVolume();
|
||||
void setVolume(float volume);
|
||||
|
||||
|
||||
virtual bool isSet() override;
|
||||
|
||||
private:
|
||||
QString* name;
|
||||
bool m_name_isSet;
|
||||
|
||||
qint32 index;
|
||||
bool m_index_isSet;
|
||||
|
||||
qint32 sample_rate;
|
||||
bool m_sample_rate_isSet;
|
||||
|
||||
qint32 is_system_default;
|
||||
bool m_is_system_default_isSet;
|
||||
|
||||
qint32 default_unregistered;
|
||||
bool m_default_unregistered_isSet;
|
||||
|
||||
float volume;
|
||||
bool m_volume_isSet;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* SWGAudioInputDevice_H_ */
|
299
swagger/sdrangel/code/qt5/client/SWGAudioOutputDevice.cpp
Normal file
299
swagger/sdrangel/code/qt5/client/SWGAudioOutputDevice.cpp
Normal file
@ -0,0 +1,299 @@
|
||||
/**
|
||||
* SDRangel
|
||||
* This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Stopping instance i.e. /sdrangel with DELETE method is a server only feature. It allows stopping the instance nicely. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV demodulator, Channel Analyzer, Channel Analyzer NG, LoRa demodulator, TCP source * The content type returned is always application/json except in the following cases: * An incorrect URL was specified: this document is returned as text/html with a status 400 ---
|
||||
*
|
||||
* OpenAPI spec version: 4.0.0
|
||||
* Contact: f4exb06@gmail.com
|
||||
*
|
||||
* NOTE: This class is auto generated by the swagger code generator program.
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
|
||||
#include "SWGAudioOutputDevice.h"
|
||||
|
||||
#include "SWGHelpers.h"
|
||||
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonArray>
|
||||
#include <QObject>
|
||||
#include <QDebug>
|
||||
|
||||
namespace SWGSDRangel {
|
||||
|
||||
SWGAudioOutputDevice::SWGAudioOutputDevice(QString* json) {
|
||||
init();
|
||||
this->fromJson(*json);
|
||||
}
|
||||
|
||||
SWGAudioOutputDevice::SWGAudioOutputDevice() {
|
||||
name = nullptr;
|
||||
m_name_isSet = false;
|
||||
index = 0;
|
||||
m_index_isSet = false;
|
||||
sample_rate = 0;
|
||||
m_sample_rate_isSet = false;
|
||||
is_system_default = 0;
|
||||
m_is_system_default_isSet = false;
|
||||
default_unregistered = 0;
|
||||
m_default_unregistered_isSet = false;
|
||||
copy_to_udp = 0;
|
||||
m_copy_to_udp_isSet = false;
|
||||
udp_uses_rtp = 0;
|
||||
m_udp_uses_rtp_isSet = false;
|
||||
udp_channel_mode = 0;
|
||||
m_udp_channel_mode_isSet = false;
|
||||
udp_address = nullptr;
|
||||
m_udp_address_isSet = false;
|
||||
udp_port = 0;
|
||||
m_udp_port_isSet = false;
|
||||
}
|
||||
|
||||
SWGAudioOutputDevice::~SWGAudioOutputDevice() {
|
||||
this->cleanup();
|
||||
}
|
||||
|
||||
void
|
||||
SWGAudioOutputDevice::init() {
|
||||
name = new QString("");
|
||||
m_name_isSet = false;
|
||||
index = 0;
|
||||
m_index_isSet = false;
|
||||
sample_rate = 0;
|
||||
m_sample_rate_isSet = false;
|
||||
is_system_default = 0;
|
||||
m_is_system_default_isSet = false;
|
||||
default_unregistered = 0;
|
||||
m_default_unregistered_isSet = false;
|
||||
copy_to_udp = 0;
|
||||
m_copy_to_udp_isSet = false;
|
||||
udp_uses_rtp = 0;
|
||||
m_udp_uses_rtp_isSet = false;
|
||||
udp_channel_mode = 0;
|
||||
m_udp_channel_mode_isSet = false;
|
||||
udp_address = new QString("");
|
||||
m_udp_address_isSet = false;
|
||||
udp_port = 0;
|
||||
m_udp_port_isSet = false;
|
||||
}
|
||||
|
||||
void
|
||||
SWGAudioOutputDevice::cleanup() {
|
||||
if(name != nullptr) {
|
||||
delete name;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if(udp_address != nullptr) {
|
||||
delete udp_address;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
SWGAudioOutputDevice*
|
||||
SWGAudioOutputDevice::fromJson(QString &json) {
|
||||
QByteArray array (json.toStdString().c_str());
|
||||
QJsonDocument doc = QJsonDocument::fromJson(array);
|
||||
QJsonObject jsonObject = doc.object();
|
||||
this->fromJsonObject(jsonObject);
|
||||
return this;
|
||||
}
|
||||
|
||||
void
|
||||
SWGAudioOutputDevice::fromJsonObject(QJsonObject &pJson) {
|
||||
::SWGSDRangel::setValue(&name, pJson["name"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&index, pJson["index"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&sample_rate, pJson["sampleRate"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&is_system_default, pJson["isSystemDefault"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&default_unregistered, pJson["defaultUnregistered"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(©_to_udp, pJson["copyToUDP"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&udp_uses_rtp, pJson["udpUsesRTP"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&udp_channel_mode, pJson["udpChannelMode"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&udp_address, pJson["udpAddress"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&udp_port, pJson["udpPort"], "qint32", "");
|
||||
|
||||
}
|
||||
|
||||
QString
|
||||
SWGAudioOutputDevice::asJson ()
|
||||
{
|
||||
QJsonObject* obj = this->asJsonObject();
|
||||
|
||||
QJsonDocument doc(*obj);
|
||||
QByteArray bytes = doc.toJson();
|
||||
delete obj;
|
||||
return QString(bytes);
|
||||
}
|
||||
|
||||
QJsonObject*
|
||||
SWGAudioOutputDevice::asJsonObject() {
|
||||
QJsonObject* obj = new QJsonObject();
|
||||
if(name != nullptr && *name != QString("")){
|
||||
toJsonValue(QString("name"), name, obj, QString("QString"));
|
||||
}
|
||||
if(m_index_isSet){
|
||||
obj->insert("index", QJsonValue(index));
|
||||
}
|
||||
if(m_sample_rate_isSet){
|
||||
obj->insert("sampleRate", QJsonValue(sample_rate));
|
||||
}
|
||||
if(m_is_system_default_isSet){
|
||||
obj->insert("isSystemDefault", QJsonValue(is_system_default));
|
||||
}
|
||||
if(m_default_unregistered_isSet){
|
||||
obj->insert("defaultUnregistered", QJsonValue(default_unregistered));
|
||||
}
|
||||
if(m_copy_to_udp_isSet){
|
||||
obj->insert("copyToUDP", QJsonValue(copy_to_udp));
|
||||
}
|
||||
if(m_udp_uses_rtp_isSet){
|
||||
obj->insert("udpUsesRTP", QJsonValue(udp_uses_rtp));
|
||||
}
|
||||
if(m_udp_channel_mode_isSet){
|
||||
obj->insert("udpChannelMode", QJsonValue(udp_channel_mode));
|
||||
}
|
||||
if(udp_address != nullptr && *udp_address != QString("")){
|
||||
toJsonValue(QString("udpAddress"), udp_address, obj, QString("QString"));
|
||||
}
|
||||
if(m_udp_port_isSet){
|
||||
obj->insert("udpPort", QJsonValue(udp_port));
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGAudioOutputDevice::getName() {
|
||||
return name;
|
||||
}
|
||||
void
|
||||
SWGAudioOutputDevice::setName(QString* name) {
|
||||
this->name = name;
|
||||
this->m_name_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGAudioOutputDevice::getIndex() {
|
||||
return index;
|
||||
}
|
||||
void
|
||||
SWGAudioOutputDevice::setIndex(qint32 index) {
|
||||
this->index = index;
|
||||
this->m_index_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGAudioOutputDevice::getSampleRate() {
|
||||
return sample_rate;
|
||||
}
|
||||
void
|
||||
SWGAudioOutputDevice::setSampleRate(qint32 sample_rate) {
|
||||
this->sample_rate = sample_rate;
|
||||
this->m_sample_rate_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGAudioOutputDevice::getIsSystemDefault() {
|
||||
return is_system_default;
|
||||
}
|
||||
void
|
||||
SWGAudioOutputDevice::setIsSystemDefault(qint32 is_system_default) {
|
||||
this->is_system_default = is_system_default;
|
||||
this->m_is_system_default_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGAudioOutputDevice::getDefaultUnregistered() {
|
||||
return default_unregistered;
|
||||
}
|
||||
void
|
||||
SWGAudioOutputDevice::setDefaultUnregistered(qint32 default_unregistered) {
|
||||
this->default_unregistered = default_unregistered;
|
||||
this->m_default_unregistered_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGAudioOutputDevice::getCopyToUdp() {
|
||||
return copy_to_udp;
|
||||
}
|
||||
void
|
||||
SWGAudioOutputDevice::setCopyToUdp(qint32 copy_to_udp) {
|
||||
this->copy_to_udp = copy_to_udp;
|
||||
this->m_copy_to_udp_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGAudioOutputDevice::getUdpUsesRtp() {
|
||||
return udp_uses_rtp;
|
||||
}
|
||||
void
|
||||
SWGAudioOutputDevice::setUdpUsesRtp(qint32 udp_uses_rtp) {
|
||||
this->udp_uses_rtp = udp_uses_rtp;
|
||||
this->m_udp_uses_rtp_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGAudioOutputDevice::getUdpChannelMode() {
|
||||
return udp_channel_mode;
|
||||
}
|
||||
void
|
||||
SWGAudioOutputDevice::setUdpChannelMode(qint32 udp_channel_mode) {
|
||||
this->udp_channel_mode = udp_channel_mode;
|
||||
this->m_udp_channel_mode_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGAudioOutputDevice::getUdpAddress() {
|
||||
return udp_address;
|
||||
}
|
||||
void
|
||||
SWGAudioOutputDevice::setUdpAddress(QString* udp_address) {
|
||||
this->udp_address = udp_address;
|
||||
this->m_udp_address_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGAudioOutputDevice::getUdpPort() {
|
||||
return udp_port;
|
||||
}
|
||||
void
|
||||
SWGAudioOutputDevice::setUdpPort(qint32 udp_port) {
|
||||
this->udp_port = udp_port;
|
||||
this->m_udp_port_isSet = true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
SWGAudioOutputDevice::isSet(){
|
||||
bool isObjectUpdated = false;
|
||||
do{
|
||||
if(name != nullptr && *name != QString("")){ isObjectUpdated = true; break;}
|
||||
if(m_index_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_sample_rate_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_is_system_default_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_default_unregistered_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_copy_to_udp_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_udp_uses_rtp_isSet){ isObjectUpdated = true; break;}
|
||||
if(m_udp_channel_mode_isSet){ isObjectUpdated = true; break;}
|
||||
if(udp_address != nullptr && *udp_address != QString("")){ isObjectUpdated = true; break;}
|
||||
if(m_udp_port_isSet){ isObjectUpdated = true; break;}
|
||||
}while(false);
|
||||
return isObjectUpdated;
|
||||
}
|
||||
}
|
||||
|
113
swagger/sdrangel/code/qt5/client/SWGAudioOutputDevice.h
Normal file
113
swagger/sdrangel/code/qt5/client/SWGAudioOutputDevice.h
Normal file
@ -0,0 +1,113 @@
|
||||
/**
|
||||
* SDRangel
|
||||
* This is the web REST/JSON API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ (4.3+ in Windows) GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube --- Limitations and specifcities: * In SDRangel GUI the first Rx device set cannot be deleted. Conversely the server starts with no device sets and its number of device sets can be reduced to zero by as many calls as necessary to /sdrangel/deviceset with DELETE method. * Stopping instance i.e. /sdrangel with DELETE method is a server only feature. It allows stopping the instance nicely. * Preset import and export from/to file is a server only feature. * Device set focus is a GUI only feature. * The following channels are not implemented (status 501 is returned): ATV demodulator, Channel Analyzer, Channel Analyzer NG, LoRa demodulator, TCP source * The content type returned is always application/json except in the following cases: * An incorrect URL was specified: this document is returned as text/html with a status 400 ---
|
||||
*
|
||||
* OpenAPI spec version: 4.0.0
|
||||
* Contact: f4exb06@gmail.com
|
||||
*
|
||||
* NOTE: This class is auto generated by the swagger code generator program.
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
/*
|
||||
* SWGAudioOutputDevice.h
|
||||
*
|
||||
* Audio output device
|
||||
*/
|
||||
|
||||
#ifndef SWGAudioOutputDevice_H_
|
||||
#define SWGAudioOutputDevice_H_
|
||||
|
||||
#include <QJsonObject>
|
||||
|
||||
|
||||
#include <QString>
|
||||
|
||||
#include "SWGObject.h"
|
||||
#include "export.h"
|
||||
|
||||
namespace SWGSDRangel {
|
||||
|
||||
class SWG_API SWGAudioOutputDevice: public SWGObject {
|
||||
public:
|
||||
SWGAudioOutputDevice();
|
||||
SWGAudioOutputDevice(QString* json);
|
||||
virtual ~SWGAudioOutputDevice();
|
||||
void init();
|
||||
void cleanup();
|
||||
|
||||
virtual QString asJson () override;
|
||||
virtual QJsonObject* asJsonObject() override;
|
||||
virtual void fromJsonObject(QJsonObject &json) override;
|
||||
virtual SWGAudioOutputDevice* fromJson(QString &jsonString) override;
|
||||
|
||||
QString* getName();
|
||||
void setName(QString* name);
|
||||
|
||||
qint32 getIndex();
|
||||
void setIndex(qint32 index);
|
||||
|
||||
qint32 getSampleRate();
|
||||
void setSampleRate(qint32 sample_rate);
|
||||
|
||||
qint32 getIsSystemDefault();
|
||||
void setIsSystemDefault(qint32 is_system_default);
|
||||
|
||||
qint32 getDefaultUnregistered();
|
||||
void setDefaultUnregistered(qint32 default_unregistered);
|
||||
|
||||
qint32 getCopyToUdp();
|
||||
void setCopyToUdp(qint32 copy_to_udp);
|
||||
|
||||
qint32 getUdpUsesRtp();
|
||||
void setUdpUsesRtp(qint32 udp_uses_rtp);
|
||||
|
||||
qint32 getUdpChannelMode();
|
||||
void setUdpChannelMode(qint32 udp_channel_mode);
|
||||
|
||||
QString* getUdpAddress();
|
||||
void setUdpAddress(QString* udp_address);
|
||||
|
||||
qint32 getUdpPort();
|
||||
void setUdpPort(qint32 udp_port);
|
||||
|
||||
|
||||
virtual bool isSet() override;
|
||||
|
||||
private:
|
||||
QString* name;
|
||||
bool m_name_isSet;
|
||||
|
||||
qint32 index;
|
||||
bool m_index_isSet;
|
||||
|
||||
qint32 sample_rate;
|
||||
bool m_sample_rate_isSet;
|
||||
|
||||
qint32 is_system_default;
|
||||
bool m_is_system_default_isSet;
|
||||
|
||||
qint32 default_unregistered;
|
||||
bool m_default_unregistered_isSet;
|
||||
|
||||
qint32 copy_to_udp;
|
||||
bool m_copy_to_udp_isSet;
|
||||
|
||||
qint32 udp_uses_rtp;
|
||||
bool m_udp_uses_rtp_isSet;
|
||||
|
||||
qint32 udp_channel_mode;
|
||||
bool m_udp_channel_mode_isSet;
|
||||
|
||||
QString* udp_address;
|
||||
bool m_udp_address_isSet;
|
||||
|
||||
qint32 udp_port;
|
||||
bool m_udp_port_isSet;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* SWGAudioOutputDevice_H_ */
|
@ -81,9 +81,9 @@ SWGInstanceApi::instanceAudioGetCallback(SWGHttpRequestWorker * worker) {
|
||||
}
|
||||
|
||||
void
|
||||
SWGInstanceApi::instanceAudioPatch(SWGAudioDevicesSelect& body) {
|
||||
SWGInstanceApi::instanceAudioInputSetPatch(SWGAudioInputDevice& body) {
|
||||
QString fullPath;
|
||||
fullPath.append(this->host).append(this->basePath).append("/sdrangel/audio");
|
||||
fullPath.append(this->host).append(this->basePath).append("/sdrangel/audio/input/set");
|
||||
|
||||
|
||||
|
||||
@ -104,13 +104,13 @@ SWGInstanceApi::instanceAudioPatch(SWGAudioDevicesSelect& body) {
|
||||
connect(worker,
|
||||
&SWGHttpRequestWorker::on_execution_finished,
|
||||
this,
|
||||
&SWGInstanceApi::instanceAudioPatchCallback);
|
||||
&SWGInstanceApi::instanceAudioInputSetPatchCallback);
|
||||
|
||||
worker->execute(&input);
|
||||
}
|
||||
|
||||
void
|
||||
SWGInstanceApi::instanceAudioPatchCallback(SWGHttpRequestWorker * worker) {
|
||||
SWGInstanceApi::instanceAudioInputSetPatchCallback(SWGHttpRequestWorker * worker) {
|
||||
QString msg;
|
||||
QString error_str = worker->error_str;
|
||||
QNetworkReply::NetworkError error_type = worker->error_type;
|
||||
@ -124,14 +124,69 @@ SWGInstanceApi::instanceAudioPatchCallback(SWGHttpRequestWorker * worker) {
|
||||
|
||||
|
||||
QString json(worker->response);
|
||||
SWGAudioDevicesSelect* output = static_cast<SWGAudioDevicesSelect*>(create(json, QString("SWGAudioDevicesSelect")));
|
||||
SWGAudioInputDevice* output = static_cast<SWGAudioInputDevice*>(create(json, QString("SWGAudioInputDevice")));
|
||||
worker->deleteLater();
|
||||
|
||||
if (worker->error_type == QNetworkReply::NoError) {
|
||||
emit instanceAudioPatchSignal(output);
|
||||
emit instanceAudioInputSetPatchSignal(output);
|
||||
} else {
|
||||
emit instanceAudioPatchSignalE(output, error_type, error_str);
|
||||
emit instanceAudioPatchSignalEFull(worker, error_type, error_str);
|
||||
emit instanceAudioInputSetPatchSignalE(output, error_type, error_str);
|
||||
emit instanceAudioInputSetPatchSignalEFull(worker, error_type, error_str);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
SWGInstanceApi::instanceAudioOutputSetPatch(SWGAudioOutputDevice& body) {
|
||||
QString fullPath;
|
||||
fullPath.append(this->host).append(this->basePath).append("/sdrangel/audio/output/set");
|
||||
|
||||
|
||||
|
||||
SWGHttpRequestWorker *worker = new SWGHttpRequestWorker();
|
||||
SWGHttpRequestInput input(fullPath, "PATCH");
|
||||
|
||||
|
||||
|
||||
QString output = body.asJson();
|
||||
input.request_body.append(output);
|
||||
|
||||
|
||||
|
||||
foreach(QString key, this->defaultHeaders.keys()) {
|
||||
input.headers.insert(key, this->defaultHeaders.value(key));
|
||||
}
|
||||
|
||||
connect(worker,
|
||||
&SWGHttpRequestWorker::on_execution_finished,
|
||||
this,
|
||||
&SWGInstanceApi::instanceAudioOutputSetPatchCallback);
|
||||
|
||||
worker->execute(&input);
|
||||
}
|
||||
|
||||
void
|
||||
SWGInstanceApi::instanceAudioOutputSetPatchCallback(SWGHttpRequestWorker * worker) {
|
||||
QString msg;
|
||||
QString error_str = worker->error_str;
|
||||
QNetworkReply::NetworkError error_type = worker->error_type;
|
||||
|
||||
if (worker->error_type == QNetworkReply::NoError) {
|
||||
msg = QString("Success! %1 bytes").arg(worker->response.length());
|
||||
}
|
||||
else {
|
||||
msg = "Error: " + worker->error_str;
|
||||
}
|
||||
|
||||
|
||||
QString json(worker->response);
|
||||
SWGAudioOutputDevice* output = static_cast<SWGAudioOutputDevice*>(create(json, QString("SWGAudioOutputDevice")));
|
||||
worker->deleteLater();
|
||||
|
||||
if (worker->error_type == QNetworkReply::NoError) {
|
||||
emit instanceAudioOutputSetPatchSignal(output);
|
||||
} else {
|
||||
emit instanceAudioOutputSetPatchSignalE(output, error_type, error_str);
|
||||
emit instanceAudioOutputSetPatchSignalEFull(worker, error_type, error_str);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,8 @@
|
||||
#include "SWGHttpRequest.h"
|
||||
|
||||
#include "SWGAudioDevices.h"
|
||||
#include "SWGAudioDevicesSelect.h"
|
||||
#include "SWGAudioInputDevice.h"
|
||||
#include "SWGAudioOutputDevice.h"
|
||||
#include "SWGDVSeralDevices.h"
|
||||
#include "SWGDeviceSetList.h"
|
||||
#include "SWGErrorResponse.h"
|
||||
@ -48,7 +49,8 @@ public:
|
||||
QMap<QString, QString> defaultHeaders;
|
||||
|
||||
void instanceAudioGet();
|
||||
void instanceAudioPatch(SWGAudioDevicesSelect& body);
|
||||
void instanceAudioInputSetPatch(SWGAudioInputDevice& body);
|
||||
void instanceAudioOutputSetPatch(SWGAudioOutputDevice& body);
|
||||
void instanceChannels(qint32 tx);
|
||||
void instanceDVSerialPatch(qint32 dvserial);
|
||||
void instanceDelete();
|
||||
@ -69,7 +71,8 @@ public:
|
||||
|
||||
private:
|
||||
void instanceAudioGetCallback (SWGHttpRequestWorker * worker);
|
||||
void instanceAudioPatchCallback (SWGHttpRequestWorker * worker);
|
||||
void instanceAudioInputSetPatchCallback (SWGHttpRequestWorker * worker);
|
||||
void instanceAudioOutputSetPatchCallback (SWGHttpRequestWorker * worker);
|
||||
void instanceChannelsCallback (SWGHttpRequestWorker * worker);
|
||||
void instanceDVSerialPatchCallback (SWGHttpRequestWorker * worker);
|
||||
void instanceDeleteCallback (SWGHttpRequestWorker * worker);
|
||||
@ -90,7 +93,8 @@ private:
|
||||
|
||||
signals:
|
||||
void instanceAudioGetSignal(SWGAudioDevices* summary);
|
||||
void instanceAudioPatchSignal(SWGAudioDevicesSelect* summary);
|
||||
void instanceAudioInputSetPatchSignal(SWGAudioInputDevice* summary);
|
||||
void instanceAudioOutputSetPatchSignal(SWGAudioOutputDevice* summary);
|
||||
void instanceChannelsSignal(SWGInstanceChannelsResponse* summary);
|
||||
void instanceDVSerialPatchSignal(SWGDVSeralDevices* summary);
|
||||
void instanceDeleteSignal(SWGInstanceSummaryResponse* summary);
|
||||
@ -110,7 +114,8 @@ signals:
|
||||
void instanceSummarySignal(SWGInstanceSummaryResponse* summary);
|
||||
|
||||
void instanceAudioGetSignalE(SWGAudioDevices* summary, QNetworkReply::NetworkError error_type, QString& error_str);
|
||||
void instanceAudioPatchSignalE(SWGAudioDevicesSelect* summary, QNetworkReply::NetworkError error_type, QString& error_str);
|
||||
void instanceAudioInputSetPatchSignalE(SWGAudioInputDevice* summary, QNetworkReply::NetworkError error_type, QString& error_str);
|
||||
void instanceAudioOutputSetPatchSignalE(SWGAudioOutputDevice* summary, QNetworkReply::NetworkError error_type, QString& error_str);
|
||||
void instanceChannelsSignalE(SWGInstanceChannelsResponse* summary, QNetworkReply::NetworkError error_type, QString& error_str);
|
||||
void instanceDVSerialPatchSignalE(SWGDVSeralDevices* summary, QNetworkReply::NetworkError error_type, QString& error_str);
|
||||
void instanceDeleteSignalE(SWGInstanceSummaryResponse* summary, QNetworkReply::NetworkError error_type, QString& error_str);
|
||||
@ -130,7 +135,8 @@ signals:
|
||||
void instanceSummarySignalE(SWGInstanceSummaryResponse* summary, QNetworkReply::NetworkError error_type, QString& error_str);
|
||||
|
||||
void instanceAudioGetSignalEFull(SWGHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString& error_str);
|
||||
void instanceAudioPatchSignalEFull(SWGHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString& error_str);
|
||||
void instanceAudioInputSetPatchSignalEFull(SWGHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString& error_str);
|
||||
void instanceAudioOutputSetPatchSignalEFull(SWGHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString& error_str);
|
||||
void instanceChannelsSignalEFull(SWGHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString& error_str);
|
||||
void instanceDVSerialPatchSignalEFull(SWGHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString& error_str);
|
||||
void instanceDeleteSignalEFull(SWGHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString& error_str);
|
||||
|
@ -17,9 +17,9 @@
|
||||
#include "SWGAMDemodReport.h"
|
||||
#include "SWGAMDemodSettings.h"
|
||||
#include "SWGAirspyHFSettings.h"
|
||||
#include "SWGAudioDevice.h"
|
||||
#include "SWGAudioDevices.h"
|
||||
#include "SWGAudioDevicesSelect.h"
|
||||
#include "SWGAudioInputDevice.h"
|
||||
#include "SWGAudioOutputDevice.h"
|
||||
#include "SWGCWKeyerSettings.h"
|
||||
#include "SWGChannel.h"
|
||||
#include "SWGChannelListItem.h"
|
||||
@ -71,14 +71,14 @@ namespace SWGSDRangel {
|
||||
if(QString("SWGAirspyHFSettings").compare(type) == 0) {
|
||||
return new SWGAirspyHFSettings();
|
||||
}
|
||||
if(QString("SWGAudioDevice").compare(type) == 0) {
|
||||
return new SWGAudioDevice();
|
||||
}
|
||||
if(QString("SWGAudioDevices").compare(type) == 0) {
|
||||
return new SWGAudioDevices();
|
||||
}
|
||||
if(QString("SWGAudioDevicesSelect").compare(type) == 0) {
|
||||
return new SWGAudioDevicesSelect();
|
||||
if(QString("SWGAudioInputDevice").compare(type) == 0) {
|
||||
return new SWGAudioInputDevice();
|
||||
}
|
||||
if(QString("SWGAudioOutputDevice").compare(type) == 0) {
|
||||
return new SWGAudioOutputDevice();
|
||||
}
|
||||
if(QString("SWGCWKeyerSettings").compare(type) == 0) {
|
||||
return new SWGCWKeyerSettings();
|
||||
|
Loading…
Reference in New Issue
Block a user