mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-03 13:11:20 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			2886 lines
		
	
	
		
			106 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			2886 lines
		
	
	
		
			106 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
///////////////////////////////////////////////////////////////////////////////////
 | 
						|
// Copyright (C) 2017 Edouard Griffiths, F4EXB.                                  //
 | 
						|
//                                                                               //
 | 
						|
// Swagger server adapter interface                                              //
 | 
						|
//                                                                               //
 | 
						|
// This program is free software; you can redistribute it and/or modify          //
 | 
						|
// it under the terms of the GNU General Public License as published by          //
 | 
						|
// the Free Software Foundation as version 3 of the License, or                  //
 | 
						|
// (at your option) any later version.                                           //
 | 
						|
//                                                                               //
 | 
						|
// This program is distributed in the hope that it will be useful,               //
 | 
						|
// but WITHOUT ANY WARRANTY; without even the implied warranty of                //
 | 
						|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the                  //
 | 
						|
// GNU General Public License V3 for more details.                               //
 | 
						|
//                                                                               //
 | 
						|
// You should have received a copy of the GNU General Public License             //
 | 
						|
// along with this program. If not, see <http://www.gnu.org/licenses/>.          //
 | 
						|
///////////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#include <QDirIterator>
 | 
						|
#include <QJsonDocument>
 | 
						|
#include <QJsonArray>
 | 
						|
 | 
						|
#include <boost/lexical_cast.hpp>
 | 
						|
 | 
						|
#include "httpdocrootsettings.h"
 | 
						|
#include "webapirequestmapper.h"
 | 
						|
#include "SWGInstanceSummaryResponse.h"
 | 
						|
#include "SWGInstanceDevicesResponse.h"
 | 
						|
#include "SWGInstanceChannelsResponse.h"
 | 
						|
#include "SWGAudioDevices.h"
 | 
						|
#include "SWGLocationInformation.h"
 | 
						|
#include "SWGDVSerialDevices.h"
 | 
						|
#include "SWGAMBEDevices.h"
 | 
						|
#include "SWGPresets.h"
 | 
						|
#include "SWGPresetTransfer.h"
 | 
						|
#include "SWGPresetIdentifier.h"
 | 
						|
#include "SWGPresetImport.h"
 | 
						|
#include "SWGPresetExport.h"
 | 
						|
#include "SWGDeviceSettings.h"
 | 
						|
#include "SWGDeviceState.h"
 | 
						|
#include "SWGDeviceReport.h"
 | 
						|
#include "SWGChannelsDetail.h"
 | 
						|
#include "SWGChannelSettings.h"
 | 
						|
#include "SWGChannelReport.h"
 | 
						|
#include "SWGSuccessResponse.h"
 | 
						|
#include "SWGErrorResponse.h"
 | 
						|
 | 
						|
WebAPIRequestMapper::WebAPIRequestMapper(QObject* parent) :
 | 
						|
    HttpRequestHandler(parent),
 | 
						|
    m_adapter(0)
 | 
						|
{
 | 
						|
#ifndef _MSC_VER
 | 
						|
    Q_INIT_RESOURCE(webapi);
 | 
						|
#endif
 | 
						|
    qtwebapp::HttpDocrootSettings docrootSettings;
 | 
						|
    docrootSettings.path = ":/webapi";
 | 
						|
    m_staticFileController = new qtwebapp::StaticFileController(docrootSettings, parent);
 | 
						|
}
 | 
						|
 | 
						|
WebAPIRequestMapper::~WebAPIRequestMapper()
 | 
						|
{
 | 
						|
    delete m_staticFileController;
 | 
						|
#ifndef _MSC_VER
 | 
						|
    Q_CLEANUP_RESOURCE(webapi);
 | 
						|
#endif
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::service(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    if (m_adapter == 0) // format service unavailable if adapter is null
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
        response.setHeader("Content-Type", "application/json");
 | 
						|
        response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
        response.setStatus(500,"Service not available");
 | 
						|
 | 
						|
        errorResponse.init();
 | 
						|
        *errorResponse.getMessage() = "Service not available";
 | 
						|
        response.write(errorResponse.asJson().toUtf8());
 | 
						|
    }
 | 
						|
    else // normal processing
 | 
						|
    {
 | 
						|
        QByteArray path=request.getPath();
 | 
						|
 | 
						|
        // Handle pre-flight requests
 | 
						|
        if (request.getMethod() == "OPTIONS")
 | 
						|
        {
 | 
						|
            qDebug("WebAPIRequestMapper::service: method OPTIONS: assume pre-flight");
 | 
						|
            response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
            response.setHeader("Access-Control-Allow-Headers", "*");
 | 
						|
            response.setHeader("Access-Control-Allow-Methods", "*");
 | 
						|
            response.setStatus(200, "OK");
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        if (path == WebAPIAdapterInterface::instanceSummaryURL) {
 | 
						|
            instanceSummaryService(request, response);
 | 
						|
        } else if (path == WebAPIAdapterInterface::instanceDevicesURL) {
 | 
						|
            instanceDevicesService(request, response);
 | 
						|
        } else if (path == WebAPIAdapterInterface::instanceChannelsURL) {
 | 
						|
            instanceChannelsService(request, response);
 | 
						|
        } else if (path == WebAPIAdapterInterface::instanceLoggingURL) {
 | 
						|
            instanceLoggingService(request, response);
 | 
						|
        } else if (path == WebAPIAdapterInterface::instanceAudioURL) {
 | 
						|
            instanceAudioService(request, response);
 | 
						|
        } else if (path == WebAPIAdapterInterface::instanceAudioInputParametersURL) {
 | 
						|
            instanceAudioInputParametersService(request, response);
 | 
						|
        } else if (path == WebAPIAdapterInterface::instanceAudioOutputParametersURL) {
 | 
						|
            instanceAudioOutputParametersService(request, response);
 | 
						|
        } else if (path == WebAPIAdapterInterface::instanceAudioInputCleanupURL) {
 | 
						|
            instanceAudioInputCleanupService(request, response);
 | 
						|
        } else if (path == WebAPIAdapterInterface::instanceAudioOutputCleanupURL) {
 | 
						|
            instanceAudioOutputCleanupService(request, response);
 | 
						|
        } else if (path == WebAPIAdapterInterface::instanceLocationURL) {
 | 
						|
            instanceLocationService(request, response);
 | 
						|
        } else if (path == WebAPIAdapterInterface::instanceAMBESerialURL) {
 | 
						|
            instanceAMBESerialService(request, response);
 | 
						|
        } else if (path == WebAPIAdapterInterface::instanceAMBEDevicesURL) {
 | 
						|
            instanceAMBEDevicesService(request, response);
 | 
						|
        } else if (path == WebAPIAdapterInterface::instancePresetsURL) {
 | 
						|
            instancePresetsService(request, response);
 | 
						|
        } else if (path == WebAPIAdapterInterface::instancePresetURL) {
 | 
						|
            instancePresetService(request, response);
 | 
						|
        } else if (path == WebAPIAdapterInterface::instancePresetFileURL) {
 | 
						|
            instancePresetFileService(request, response);
 | 
						|
        } else if (path == WebAPIAdapterInterface::instanceDeviceSetsURL) {
 | 
						|
            instanceDeviceSetsService(request, response);
 | 
						|
        } else if (path == WebAPIAdapterInterface::instanceDeviceSetURL) {
 | 
						|
            instanceDeviceSetService(request, response);
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            std::smatch desc_match;
 | 
						|
            std::string pathStr(path.constData(), path.length());
 | 
						|
 | 
						|
            if (std::regex_match(pathStr, desc_match, WebAPIAdapterInterface::devicesetURLRe)) {
 | 
						|
                devicesetService(std::string(desc_match[1]), request, response);
 | 
						|
            } else if (std::regex_match(pathStr, desc_match, WebAPIAdapterInterface::devicesetDeviceURLRe)) {
 | 
						|
                devicesetDeviceService(std::string(desc_match[1]), request, response);
 | 
						|
            } else if (std::regex_match(pathStr, desc_match, WebAPIAdapterInterface::devicesetFocusURLRe)) {
 | 
						|
                devicesetFocusService(std::string(desc_match[1]), request, response);
 | 
						|
            } else if (std::regex_match(pathStr, desc_match, WebAPIAdapterInterface::devicesetDeviceSettingsURLRe)) {
 | 
						|
                devicesetDeviceSettingsService(std::string(desc_match[1]), request, response);
 | 
						|
            } else if (std::regex_match(pathStr, desc_match, WebAPIAdapterInterface::devicesetDeviceRunURLRe)) {
 | 
						|
                devicesetDeviceRunService(std::string(desc_match[1]), request, response);
 | 
						|
            } else if (std::regex_match(pathStr, desc_match, WebAPIAdapterInterface::devicesetDeviceReportURLRe)) {
 | 
						|
                devicesetDeviceReportService(std::string(desc_match[1]), request, response);
 | 
						|
            } else if (std::regex_match(pathStr, desc_match, WebAPIAdapterInterface::devicesetChannelsReportURLRe)) {
 | 
						|
                devicesetChannelsReportService(std::string(desc_match[1]), request, response);
 | 
						|
            } else if (std::regex_match(pathStr, desc_match, WebAPIAdapterInterface::devicesetChannelURLRe)) {
 | 
						|
                devicesetChannelService(std::string(desc_match[1]), request, response);
 | 
						|
            } else if (std::regex_match(pathStr, desc_match, WebAPIAdapterInterface::devicesetChannelIndexURLRe)) {
 | 
						|
                devicesetChannelIndexService(std::string(desc_match[1]), std::string(desc_match[2]), request, response);
 | 
						|
            } else if (std::regex_match(pathStr, desc_match, WebAPIAdapterInterface::devicesetChannelSettingsURLRe)) {
 | 
						|
                devicesetChannelSettingsService(std::string(desc_match[1]), std::string(desc_match[2]), request, response);
 | 
						|
            } else if (std::regex_match(pathStr, desc_match, WebAPIAdapterInterface::devicesetChannelReportURLRe)) {
 | 
						|
                devicesetChannelReportService(std::string(desc_match[1]), std::string(desc_match[2]), request, response);
 | 
						|
            }
 | 
						|
            else // serve static documentation pages
 | 
						|
            {
 | 
						|
                m_staticFileController->service(request, response);
 | 
						|
            }
 | 
						|
 | 
						|
//            QDirIterator it(":", QDirIterator::Subdirectories);
 | 
						|
//            while (it.hasNext()) {
 | 
						|
//                qDebug() << "WebAPIRequestMapper::service: " << it.next();
 | 
						|
//            }
 | 
						|
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::instanceSummaryService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "GET")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGInstanceSummaryResponse normalResponse;
 | 
						|
 | 
						|
        int status = m_adapter->instanceSummary(normalResponse, errorResponse);
 | 
						|
        response.setStatus(status);
 | 
						|
 | 
						|
        if (status/100 == 2) {
 | 
						|
            response.write(normalResponse.asJson().toUtf8());
 | 
						|
        } else {
 | 
						|
            response.write(errorResponse.asJson().toUtf8());
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (request.getMethod() == "DELETE")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGSuccessResponse normalResponse;
 | 
						|
 | 
						|
        int status = m_adapter->instanceDelete(normalResponse, errorResponse);
 | 
						|
        response.setStatus(status);
 | 
						|
 | 
						|
        if (status/100 == 2) {
 | 
						|
            response.write(normalResponse.asJson().toUtf8());
 | 
						|
        } else {
 | 
						|
            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::instanceDevicesService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGInstanceDevicesResponse normalResponse;
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "GET")
 | 
						|
    {
 | 
						|
        QByteArray dirStr = request.getParameter("direction");
 | 
						|
        int direction = 0;
 | 
						|
 | 
						|
        if (dirStr.length() != 0)
 | 
						|
        {
 | 
						|
            bool ok;
 | 
						|
            int tmp = dirStr.toInt(&ok);
 | 
						|
            if (ok) {
 | 
						|
                direction = tmp;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        int status = m_adapter->instanceDevices(direction, normalResponse, errorResponse);
 | 
						|
        response.setStatus(status);
 | 
						|
 | 
						|
        if (status/100 == 2) {
 | 
						|
            response.write(normalResponse.asJson().toUtf8());
 | 
						|
        } else {
 | 
						|
            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::instanceChannelsService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGInstanceChannelsResponse normalResponse;
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "GET")
 | 
						|
    {
 | 
						|
        QByteArray dirStr = request.getParameter("direction");
 | 
						|
        int direction = 0;
 | 
						|
 | 
						|
        if (dirStr.length() != 0)
 | 
						|
        {
 | 
						|
            bool ok;
 | 
						|
            int tmp = dirStr.toInt(&ok);
 | 
						|
            if (ok) {
 | 
						|
                direction = tmp;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        int status = m_adapter->instanceChannels(direction, normalResponse, errorResponse);
 | 
						|
        response.setStatus(status);
 | 
						|
 | 
						|
        if (status/100 == 2) {
 | 
						|
            response.write(normalResponse.asJson().toUtf8());
 | 
						|
        } else {
 | 
						|
            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::instanceLoggingService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGLoggingInfo query;
 | 
						|
    SWGSDRangel::SWGLoggingInfo normalResponse;
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "GET")
 | 
						|
    {
 | 
						|
        int status = m_adapter->instanceLoggingGet(normalResponse, errorResponse);
 | 
						|
        response.setStatus(status);
 | 
						|
 | 
						|
        if (status/100 == 2) {
 | 
						|
            response.write(normalResponse.asJson().toUtf8());
 | 
						|
        } else {
 | 
						|
            response.write(errorResponse.asJson().toUtf8());
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (request.getMethod() == "PUT")
 | 
						|
    {
 | 
						|
        QString jsonStr = request.getBody();
 | 
						|
        QJsonObject jsonObject;
 | 
						|
 | 
						|
        if (parseJsonBody(jsonStr, jsonObject, response))
 | 
						|
        {
 | 
						|
            query.fromJson(jsonStr);
 | 
						|
            int status = m_adapter->instanceLoggingPut(query, normalResponse, 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 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::instanceAudioService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "GET")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGAudioDevices normalResponse;
 | 
						|
 | 
						|
        int status = m_adapter->instanceAudioGet(normalResponse, errorResponse);
 | 
						|
        response.setStatus(status);
 | 
						|
 | 
						|
        if (status/100 == 2) {
 | 
						|
            response.write(normalResponse.asJson().toUtf8());
 | 
						|
        } else {
 | 
						|
            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::instanceAudioInputParametersService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    QString jsonStr = request.getBody();
 | 
						|
    QJsonObject jsonObject;
 | 
						|
 | 
						|
    if (parseJsonBody(jsonStr, jsonObject, response))
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGAudioInputDevice normalResponse;
 | 
						|
        resetAudioInputDevice(normalResponse);
 | 
						|
        QStringList audioInputDeviceKeys;
 | 
						|
 | 
						|
        if (validateAudioInputDevice(normalResponse, jsonObject, audioInputDeviceKeys))
 | 
						|
        {
 | 
						|
            if (request.getMethod() == "PATCH")
 | 
						|
            {
 | 
						|
                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 if (request.getMethod() == "DELETE")
 | 
						|
            {
 | 
						|
                int status = m_adapter->instanceAudioInputDelete(
 | 
						|
                        normalResponse,
 | 
						|
                        errorResponse);
 | 
						|
                response.setStatus(status);
 | 
						|
 | 
						|
                if (status/100 == 2) {
 | 
						|
                    response.write(normalResponse.asJson().toUtf8());
 | 
						|
                } else {
 | 
						|
                    response.write(errorResponse.asJson().toUtf8());
 | 
						|
                }
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                response.setStatus(405,"Invalid HTTP method");
 | 
						|
                errorResponse.init();
 | 
						|
                *errorResponse.getMessage() = "Invalid HTTP method";
 | 
						|
                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());
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::instanceAudioOutputParametersService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    QString jsonStr = request.getBody();
 | 
						|
    QJsonObject jsonObject;
 | 
						|
 | 
						|
    if (parseJsonBody(jsonStr, jsonObject, response))
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGAudioOutputDevice normalResponse;
 | 
						|
        resetAudioOutputDevice(normalResponse);
 | 
						|
        QStringList audioOutputDeviceKeys;
 | 
						|
 | 
						|
        if (validateAudioOutputDevice(normalResponse, jsonObject, audioOutputDeviceKeys))
 | 
						|
        {
 | 
						|
            if (request.getMethod() == "PATCH")
 | 
						|
            {
 | 
						|
                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 if (request.getMethod() == "DELETE")
 | 
						|
            {
 | 
						|
                int status = m_adapter->instanceAudioOutputDelete(
 | 
						|
                        normalResponse,
 | 
						|
                        errorResponse);
 | 
						|
                response.setStatus(status);
 | 
						|
 | 
						|
                if (status/100 == 2) {
 | 
						|
                    response.write(normalResponse.asJson().toUtf8());
 | 
						|
                } else {
 | 
						|
                    response.write(errorResponse.asJson().toUtf8());
 | 
						|
                }
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                response.setStatus(405,"Invalid HTTP method");
 | 
						|
                errorResponse.init();
 | 
						|
                *errorResponse.getMessage() = "Invalid HTTP method";
 | 
						|
                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());
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::instanceAudioInputCleanupService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "PATCH")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGSuccessResponse normalResponse;
 | 
						|
 | 
						|
        int status = m_adapter->instanceAudioInputCleanupPatch(normalResponse, errorResponse);
 | 
						|
        response.setStatus(status);
 | 
						|
 | 
						|
        if (status/100 == 2) {
 | 
						|
            response.write(normalResponse.asJson().toUtf8());
 | 
						|
        } else {
 | 
						|
            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::instanceAudioOutputCleanupService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "PATCH")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGSuccessResponse normalResponse;
 | 
						|
 | 
						|
        int status = m_adapter->instanceAudioOutputCleanupPatch(normalResponse, errorResponse);
 | 
						|
        response.setStatus(status);
 | 
						|
 | 
						|
        if (status/100 == 2) {
 | 
						|
            response.write(normalResponse.asJson().toUtf8());
 | 
						|
        } else {
 | 
						|
            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::instanceLocationService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "GET")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGLocationInformation normalResponse;
 | 
						|
 | 
						|
        int status = m_adapter->instanceLocationGet(normalResponse, errorResponse);
 | 
						|
        response.setStatus(status);
 | 
						|
 | 
						|
        if (status/100 == 2) {
 | 
						|
            response.write(normalResponse.asJson().toUtf8());
 | 
						|
        } else {
 | 
						|
            response.write(errorResponse.asJson().toUtf8());
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (request.getMethod() == "PUT")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGLocationInformation normalResponse;
 | 
						|
        QString jsonStr = request.getBody();
 | 
						|
        QJsonObject jsonObject;
 | 
						|
 | 
						|
        if (parseJsonBody(jsonStr, jsonObject, response))
 | 
						|
        {
 | 
						|
            normalResponse.fromJson(jsonStr);
 | 
						|
            int status = m_adapter->instanceLocationPut(normalResponse, 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 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::instanceAMBESerialService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "GET")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGDVSerialDevices normalResponse;
 | 
						|
 | 
						|
        int status = m_adapter->instanceAMBESerialGet(normalResponse, errorResponse);
 | 
						|
        response.setStatus(status);
 | 
						|
 | 
						|
        if (status/100 == 2) {
 | 
						|
            response.write(normalResponse.asJson().toUtf8());
 | 
						|
        } else {
 | 
						|
            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::instanceAMBEDevicesService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "GET")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGAMBEDevices normalResponse;
 | 
						|
 | 
						|
        int status = m_adapter->instanceAMBEDevicesGet(normalResponse, errorResponse);
 | 
						|
        response.setStatus(status);
 | 
						|
 | 
						|
        if (status/100 == 2) {
 | 
						|
            response.write(normalResponse.asJson().toUtf8());
 | 
						|
        } else {
 | 
						|
            response.write(errorResponse.asJson().toUtf8());
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((request.getMethod() == "PATCH") || (request.getMethod() == "PUT"))
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGAMBEDevices query;
 | 
						|
        SWGSDRangel::SWGAMBEDevices normalResponse;
 | 
						|
        QString jsonStr = request.getBody();
 | 
						|
        QJsonObject jsonObject;
 | 
						|
 | 
						|
        if (parseJsonBody(jsonStr, jsonObject, response))
 | 
						|
        {
 | 
						|
            if (validateAMBEDevices(query, jsonObject))
 | 
						|
            {
 | 
						|
                int status;
 | 
						|
 | 
						|
                if (request.getMethod() == "PATCH") {
 | 
						|
                    status = m_adapter->instanceAMBEDevicesPatch(query, normalResponse, errorResponse);
 | 
						|
                } else {
 | 
						|
                    status = m_adapter->instanceAMBEDevicesPut(query, normalResponse, 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 if (request.getMethod() == "DELETE")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGSuccessResponse normalResponse;
 | 
						|
 | 
						|
        int status = m_adapter->instanceAMBEDevicesDelete(normalResponse, errorResponse);
 | 
						|
        response.setStatus(status);
 | 
						|
 | 
						|
        if (status/100 == 2) {
 | 
						|
            response.write(normalResponse.asJson().toUtf8());
 | 
						|
        } else {
 | 
						|
            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::instancePresetsService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "GET")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGPresets normalResponse;
 | 
						|
        int status = m_adapter->instancePresetsGet(normalResponse, errorResponse);
 | 
						|
        response.setStatus(status);
 | 
						|
 | 
						|
        if (status/100 == 2) {
 | 
						|
            response.write(normalResponse.asJson().toUtf8());
 | 
						|
        } else {
 | 
						|
            response.write(errorResponse.asJson().toUtf8());
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::instancePresetService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "PATCH")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGPresetTransfer query;
 | 
						|
        SWGSDRangel::SWGPresetIdentifier normalResponse;
 | 
						|
        QString jsonStr = request.getBody();
 | 
						|
        QJsonObject jsonObject;
 | 
						|
 | 
						|
        if (parseJsonBody(jsonStr, jsonObject, response))
 | 
						|
        {
 | 
						|
            query.fromJson(jsonStr);
 | 
						|
 | 
						|
            if (validatePresetTransfer(query))
 | 
						|
            {
 | 
						|
                int status = m_adapter->instancePresetPatch(query, normalResponse, 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 if (request.getMethod() == "PUT")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGPresetTransfer query;
 | 
						|
        SWGSDRangel::SWGPresetIdentifier normalResponse;
 | 
						|
        QString jsonStr = request.getBody();
 | 
						|
        QJsonObject jsonObject;
 | 
						|
 | 
						|
        if (parseJsonBody(jsonStr, jsonObject, response))
 | 
						|
        {
 | 
						|
            query.fromJson(jsonStr);
 | 
						|
 | 
						|
            if (validatePresetTransfer(query))
 | 
						|
            {
 | 
						|
                int status = m_adapter->instancePresetPut(query, normalResponse, 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 if (request.getMethod() == "POST")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGPresetTransfer query;
 | 
						|
        SWGSDRangel::SWGPresetIdentifier normalResponse;
 | 
						|
        QString jsonStr = request.getBody();
 | 
						|
        QJsonObject jsonObject;
 | 
						|
 | 
						|
        if (parseJsonBody(jsonStr, jsonObject, response))
 | 
						|
        {
 | 
						|
            query.fromJson(jsonStr);
 | 
						|
 | 
						|
            if (validatePresetTransfer(query))
 | 
						|
            {
 | 
						|
                int status = m_adapter->instancePresetPost(query, normalResponse, 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 if (request.getMethod() == "DELETE")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGPresetIdentifier normalResponse;
 | 
						|
        QString jsonStr = request.getBody();
 | 
						|
        QJsonObject jsonObject;
 | 
						|
 | 
						|
        if (parseJsonBody(jsonStr, jsonObject, response))
 | 
						|
        {
 | 
						|
            normalResponse.fromJson(jsonStr);
 | 
						|
 | 
						|
            if (validatePresetIdentifer(normalResponse))
 | 
						|
            {
 | 
						|
                int status = m_adapter->instancePresetDelete(normalResponse, 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::instancePresetFileService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "PUT")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGPresetImport query;
 | 
						|
        SWGSDRangel::SWGPresetIdentifier normalResponse;
 | 
						|
        QString jsonStr = request.getBody();
 | 
						|
        QJsonObject jsonObject;
 | 
						|
 | 
						|
        if (parseJsonBody(jsonStr, jsonObject, response))
 | 
						|
        {
 | 
						|
            query.fromJson(jsonStr);
 | 
						|
 | 
						|
            if (query.getFilePath())
 | 
						|
            {
 | 
						|
                int status = m_adapter->instancePresetFilePut(query, normalResponse, 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 if (request.getMethod() == "POST")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGPresetExport query;
 | 
						|
        SWGSDRangel::SWGPresetIdentifier normalResponse;
 | 
						|
        QString jsonStr = request.getBody();
 | 
						|
        QJsonObject jsonObject;
 | 
						|
 | 
						|
        if (parseJsonBody(jsonStr, jsonObject, response))
 | 
						|
        {
 | 
						|
            query.fromJson(jsonStr);
 | 
						|
 | 
						|
            if (validatePresetExport(query))
 | 
						|
            {
 | 
						|
                int status = m_adapter->instancePresetFilePost(query, normalResponse, 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::instanceDeviceSetsService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "GET")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGDeviceSetList normalResponse;
 | 
						|
        int status = m_adapter->instanceDeviceSetsGet(normalResponse, errorResponse);
 | 
						|
        response.setStatus(status);
 | 
						|
 | 
						|
        if (status/100 == 2) {
 | 
						|
            response.write(normalResponse.asJson().toUtf8());
 | 
						|
        } else {
 | 
						|
            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::instanceDeviceSetService(qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "POST")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGSuccessResponse normalResponse;
 | 
						|
        QByteArray dirStr = request.getParameter("direction");
 | 
						|
        int direction = 0;
 | 
						|
 | 
						|
        if (dirStr.length() != 0)
 | 
						|
        {
 | 
						|
            bool ok;
 | 
						|
            int tmp = dirStr.toInt(&ok);
 | 
						|
            if (ok) {
 | 
						|
                direction = tmp;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        int status = m_adapter->instanceDeviceSetPost(direction, normalResponse, errorResponse);
 | 
						|
        response.setStatus(status);
 | 
						|
 | 
						|
        if (status/100 == 2) {
 | 
						|
            response.write(normalResponse.asJson().toUtf8());
 | 
						|
        } else {
 | 
						|
            response.write(errorResponse.asJson().toUtf8());
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (request.getMethod() == "DELETE")
 | 
						|
    {
 | 
						|
        SWGSDRangel::SWGSuccessResponse normalResponse;
 | 
						|
        int status = m_adapter->instanceDeviceSetDelete(normalResponse, errorResponse);
 | 
						|
        response.setStatus(status);
 | 
						|
 | 
						|
        if (status/100 == 2) {
 | 
						|
            response.write(normalResponse.asJson().toUtf8());
 | 
						|
        } else {
 | 
						|
            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::devicesetService(const std::string& indexStr, qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "GET")
 | 
						|
    {
 | 
						|
        try
 | 
						|
        {
 | 
						|
            SWGSDRangel::SWGDeviceSet normalResponse;
 | 
						|
            int deviceSetIndex = boost::lexical_cast<int>(indexStr);
 | 
						|
            int status = m_adapter->devicesetGet(deviceSetIndex, normalResponse, errorResponse);
 | 
						|
            response.setStatus(status);
 | 
						|
 | 
						|
            if (status/100 == 2) {
 | 
						|
                response.write(normalResponse.asJson().toUtf8());
 | 
						|
            } else {
 | 
						|
                response.write(errorResponse.asJson().toUtf8());
 | 
						|
            }
 | 
						|
        }
 | 
						|
        catch (const boost::bad_lexical_cast &e)
 | 
						|
        {
 | 
						|
            errorResponse.init();
 | 
						|
            *errorResponse.getMessage() = "Wrong integer conversion on device set index";
 | 
						|
            response.setStatus(400,"Invalid data");
 | 
						|
            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::devicesetFocusService(const std::string& indexStr, qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    try
 | 
						|
    {
 | 
						|
        int deviceSetIndex = boost::lexical_cast<int>(indexStr);
 | 
						|
 | 
						|
        if (request.getMethod() == "PATCH")
 | 
						|
        {
 | 
						|
            SWGSDRangel::SWGSuccessResponse normalResponse;
 | 
						|
            int status = m_adapter->devicesetFocusPatch(deviceSetIndex, normalResponse, errorResponse);
 | 
						|
 | 
						|
            response.setStatus(status);
 | 
						|
 | 
						|
            if (status/100 == 2) {
 | 
						|
                response.write(normalResponse.asJson().toUtf8());
 | 
						|
            } else {
 | 
						|
                response.write(errorResponse.asJson().toUtf8());
 | 
						|
            }
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            response.setStatus(405,"Invalid HTTP method");
 | 
						|
            errorResponse.init();
 | 
						|
            *errorResponse.getMessage() = "Invalid HTTP method";
 | 
						|
            response.write(errorResponse.asJson().toUtf8());
 | 
						|
        }
 | 
						|
    }
 | 
						|
    catch (const boost::bad_lexical_cast &e)
 | 
						|
    {
 | 
						|
        errorResponse.init();
 | 
						|
        *errorResponse.getMessage() = "Wrong integer conversion on device set index";
 | 
						|
        response.setStatus(400,"Invalid data");
 | 
						|
        response.write(errorResponse.asJson().toUtf8());
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::devicesetDeviceService(const std::string& indexStr, qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    try
 | 
						|
    {
 | 
						|
        int deviceSetIndex = boost::lexical_cast<int>(indexStr);
 | 
						|
 | 
						|
        if (request.getMethod() == "PUT")
 | 
						|
        {
 | 
						|
            QString jsonStr = request.getBody();
 | 
						|
            QJsonObject jsonObject;
 | 
						|
 | 
						|
            if (parseJsonBody(jsonStr, jsonObject, response))
 | 
						|
            {
 | 
						|
                SWGSDRangel::SWGDeviceListItem query;
 | 
						|
                SWGSDRangel::SWGDeviceListItem normalResponse;
 | 
						|
 | 
						|
                if (validateDeviceListItem(query, jsonObject))
 | 
						|
                {
 | 
						|
                    int status = m_adapter->devicesetDevicePut(deviceSetIndex, query, normalResponse, errorResponse);
 | 
						|
                    response.setStatus(status);
 | 
						|
 | 
						|
                    if (status/100 == 2) {
 | 
						|
                        response.write(normalResponse.asJson().toUtf8());
 | 
						|
                    } else {
 | 
						|
                        response.write(errorResponse.asJson().toUtf8());
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    response.setStatus(400,"Missing device identification");
 | 
						|
                    errorResponse.init();
 | 
						|
                    *errorResponse.getMessage() = "Missing device identification";
 | 
						|
                    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());
 | 
						|
        }
 | 
						|
    }
 | 
						|
    catch (const boost::bad_lexical_cast &e)
 | 
						|
    {
 | 
						|
        errorResponse.init();
 | 
						|
        *errorResponse.getMessage() = "Wrong integer conversion on device set index";
 | 
						|
        response.setStatus(400,"Invalid data");
 | 
						|
        response.write(errorResponse.asJson().toUtf8());
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::devicesetDeviceSettingsService(const std::string& indexStr, qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    try
 | 
						|
    {
 | 
						|
        int deviceSetIndex = boost::lexical_cast<int>(indexStr);
 | 
						|
 | 
						|
        if ((request.getMethod() == "PUT") || (request.getMethod() == "PATCH"))
 | 
						|
        {
 | 
						|
            QString jsonStr = request.getBody();
 | 
						|
            QJsonObject jsonObject;
 | 
						|
 | 
						|
            if (parseJsonBody(jsonStr, jsonObject, response))
 | 
						|
            {
 | 
						|
                SWGSDRangel::SWGDeviceSettings normalResponse;
 | 
						|
                resetDeviceSettings(normalResponse);
 | 
						|
                QStringList deviceSettingsKeys;
 | 
						|
 | 
						|
                if (validateDeviceSettings(normalResponse, jsonObject, deviceSettingsKeys))
 | 
						|
                {
 | 
						|
                    int status = m_adapter->devicesetDeviceSettingsPutPatch(
 | 
						|
                            deviceSetIndex,
 | 
						|
                            (request.getMethod() == "PUT"), // force settings on PUT
 | 
						|
                            deviceSettingsKeys,
 | 
						|
                            normalResponse,
 | 
						|
                            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 if (request.getMethod() == "GET")
 | 
						|
        {
 | 
						|
            SWGSDRangel::SWGDeviceSettings normalResponse;
 | 
						|
            resetDeviceSettings(normalResponse);
 | 
						|
            int status = m_adapter->devicesetDeviceSettingsGet(deviceSetIndex, normalResponse, errorResponse);
 | 
						|
            response.setStatus(status);
 | 
						|
 | 
						|
            if (status/100 == 2) {
 | 
						|
                response.write(normalResponse.asJson().toUtf8());
 | 
						|
            } else {
 | 
						|
                response.write(errorResponse.asJson().toUtf8());
 | 
						|
            }
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            response.setStatus(405,"Invalid HTTP method");
 | 
						|
            errorResponse.init();
 | 
						|
            *errorResponse.getMessage() = "Invalid HTTP method";
 | 
						|
            response.write(errorResponse.asJson().toUtf8());
 | 
						|
        }
 | 
						|
    }
 | 
						|
    catch (const boost::bad_lexical_cast &e)
 | 
						|
    {
 | 
						|
        errorResponse.init();
 | 
						|
        *errorResponse.getMessage() = "Wrong integer conversion on device set index";
 | 
						|
        response.setStatus(400,"Invalid data");
 | 
						|
        response.write(errorResponse.asJson().toUtf8());
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::devicesetDeviceRunService(const std::string& indexStr, qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    try
 | 
						|
    {
 | 
						|
        int deviceSetIndex = boost::lexical_cast<int>(indexStr);
 | 
						|
 | 
						|
        if (request.getMethod() == "GET")
 | 
						|
        {
 | 
						|
            SWGSDRangel::SWGDeviceState normalResponse;
 | 
						|
            int status = m_adapter->devicesetDeviceRunGet(deviceSetIndex, normalResponse, errorResponse);
 | 
						|
 | 
						|
            response.setStatus(status);
 | 
						|
 | 
						|
            if (status/100 == 2) {
 | 
						|
                response.write(normalResponse.asJson().toUtf8());
 | 
						|
            } else {
 | 
						|
                response.write(errorResponse.asJson().toUtf8());
 | 
						|
            }
 | 
						|
        }
 | 
						|
        else if (request.getMethod() == "POST")
 | 
						|
        {
 | 
						|
            SWGSDRangel::SWGDeviceState normalResponse;
 | 
						|
            int status = m_adapter->devicesetDeviceRunPost(deviceSetIndex, normalResponse, errorResponse);
 | 
						|
 | 
						|
            response.setStatus(status);
 | 
						|
 | 
						|
            if (status/100 == 2) {
 | 
						|
                response.write(normalResponse.asJson().toUtf8());
 | 
						|
            } else {
 | 
						|
                response.write(errorResponse.asJson().toUtf8());
 | 
						|
            }
 | 
						|
        }
 | 
						|
        else if (request.getMethod() == "DELETE")
 | 
						|
        {
 | 
						|
            SWGSDRangel::SWGDeviceState normalResponse;
 | 
						|
            int status = m_adapter->devicesetDeviceRunDelete(deviceSetIndex, normalResponse, errorResponse);
 | 
						|
 | 
						|
            response.setStatus(status);
 | 
						|
 | 
						|
            if (status/100 == 2) {
 | 
						|
                response.write(normalResponse.asJson().toUtf8());
 | 
						|
            } else {
 | 
						|
                response.write(errorResponse.asJson().toUtf8());
 | 
						|
            }
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            response.setStatus(405,"Invalid HTTP method");
 | 
						|
            errorResponse.init();
 | 
						|
            *errorResponse.getMessage() = "Invalid HTTP method";
 | 
						|
            response.write(errorResponse.asJson().toUtf8());
 | 
						|
        }
 | 
						|
    }
 | 
						|
    catch (const boost::bad_lexical_cast &e)
 | 
						|
    {
 | 
						|
        errorResponse.init();
 | 
						|
        *errorResponse.getMessage() = "Wrong integer conversion on device set index";
 | 
						|
        response.setStatus(400,"Invalid data");
 | 
						|
        response.write(errorResponse.asJson().toUtf8());
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::devicesetDeviceReportService(const std::string& indexStr, qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "GET")
 | 
						|
    {
 | 
						|
        try
 | 
						|
        {
 | 
						|
            SWGSDRangel::SWGDeviceReport normalResponse;
 | 
						|
            resetDeviceReport(normalResponse);
 | 
						|
            int deviceSetIndex = boost::lexical_cast<int>(indexStr);
 | 
						|
            int status = m_adapter->devicesetDeviceReportGet(deviceSetIndex, normalResponse, errorResponse);
 | 
						|
            response.setStatus(status);
 | 
						|
 | 
						|
            if (status/100 == 2) {
 | 
						|
                response.write(normalResponse.asJson().toUtf8());
 | 
						|
            } else {
 | 
						|
                response.write(errorResponse.asJson().toUtf8());
 | 
						|
            }
 | 
						|
        }
 | 
						|
        catch (const boost::bad_lexical_cast &e)
 | 
						|
        {
 | 
						|
            errorResponse.init();
 | 
						|
            *errorResponse.getMessage() = "Wrong integer conversion on device set index";
 | 
						|
            response.setStatus(400,"Invalid data");
 | 
						|
            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::devicesetChannelsReportService(const std::string& indexStr, qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    if (request.getMethod() == "GET")
 | 
						|
    {
 | 
						|
        try
 | 
						|
        {
 | 
						|
            SWGSDRangel::SWGChannelsDetail normalResponse;
 | 
						|
            int deviceSetIndex = boost::lexical_cast<int>(indexStr);
 | 
						|
            int status = m_adapter->devicesetChannelsReportGet(deviceSetIndex, normalResponse, errorResponse);
 | 
						|
            response.setStatus(status);
 | 
						|
 | 
						|
            if (status/100 == 2) {
 | 
						|
                response.write(normalResponse.asJson().toUtf8());
 | 
						|
            } else {
 | 
						|
                response.write(errorResponse.asJson().toUtf8());
 | 
						|
            }
 | 
						|
        }
 | 
						|
        catch (const boost::bad_lexical_cast &e)
 | 
						|
        {
 | 
						|
            errorResponse.init();
 | 
						|
            *errorResponse.getMessage() = "Wrong integer conversion on device set index";
 | 
						|
            response.setStatus(400,"Invalid data");
 | 
						|
            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::devicesetChannelService(
 | 
						|
        const std::string& deviceSetIndexStr,
 | 
						|
        qtwebapp::HttpRequest& request,
 | 
						|
        qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    try
 | 
						|
    {
 | 
						|
        int deviceSetIndex = boost::lexical_cast<int>(deviceSetIndexStr);
 | 
						|
 | 
						|
        if (request.getMethod() == "POST")
 | 
						|
        {
 | 
						|
            QString jsonStr = request.getBody();
 | 
						|
            QJsonObject jsonObject;
 | 
						|
 | 
						|
            if (parseJsonBody(jsonStr, jsonObject, response))
 | 
						|
            {
 | 
						|
                SWGSDRangel::SWGChannelSettings query;
 | 
						|
                SWGSDRangel::SWGSuccessResponse normalResponse;
 | 
						|
                resetChannelSettings(query);
 | 
						|
 | 
						|
                if (jsonObject.contains("direction")) {
 | 
						|
                    query.setDirection(jsonObject["direction"].toInt());
 | 
						|
                } else {
 | 
						|
                    query.setDirection(0); // assume Rx
 | 
						|
                }
 | 
						|
 | 
						|
                if (jsonObject.contains("channelType") && jsonObject["channelType"].isString())
 | 
						|
                {
 | 
						|
                    query.setChannelType(new QString(jsonObject["channelType"].toString()));
 | 
						|
 | 
						|
                    int status = m_adapter->devicesetChannelPost(deviceSetIndex, query, normalResponse, 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());
 | 
						|
        }
 | 
						|
    }
 | 
						|
    catch (const boost::bad_lexical_cast &e)
 | 
						|
    {
 | 
						|
        errorResponse.init();
 | 
						|
        *errorResponse.getMessage() = "Wrong integer conversion on index";
 | 
						|
        response.setStatus(400,"Invalid data");
 | 
						|
        response.write(errorResponse.asJson().toUtf8());
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::devicesetChannelIndexService(
 | 
						|
        const std::string& deviceSetIndexStr,
 | 
						|
        const std::string& channelIndexStr,
 | 
						|
        qtwebapp::HttpRequest& request,
 | 
						|
        qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    try
 | 
						|
    {
 | 
						|
        int deviceSetIndex = boost::lexical_cast<int>(deviceSetIndexStr);
 | 
						|
        int channelIndex = boost::lexical_cast<int>(channelIndexStr);
 | 
						|
 | 
						|
        if (request.getMethod() == "DELETE")
 | 
						|
        {
 | 
						|
            SWGSDRangel::SWGSuccessResponse normalResponse;
 | 
						|
            int status = m_adapter->devicesetChannelDelete(deviceSetIndex, channelIndex, normalResponse, errorResponse);
 | 
						|
 | 
						|
            response.setStatus(status);
 | 
						|
 | 
						|
            if (status/100 == 2) {
 | 
						|
                response.write(normalResponse.asJson().toUtf8());
 | 
						|
            } else {
 | 
						|
                response.write(errorResponse.asJson().toUtf8());
 | 
						|
            }
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            response.setStatus(405,"Invalid HTTP method");
 | 
						|
            errorResponse.init();
 | 
						|
            *errorResponse.getMessage() = "Invalid HTTP method";
 | 
						|
            response.write(errorResponse.asJson().toUtf8());
 | 
						|
        }
 | 
						|
    }
 | 
						|
    catch (const boost::bad_lexical_cast &e)
 | 
						|
    {
 | 
						|
        errorResponse.init();
 | 
						|
        *errorResponse.getMessage() = "Wrong integer conversion on index";
 | 
						|
        response.setStatus(400,"Invalid data");
 | 
						|
        response.write(errorResponse.asJson().toUtf8());
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::devicesetChannelSettingsService(
 | 
						|
        const std::string& deviceSetIndexStr,
 | 
						|
        const std::string& channelIndexStr,
 | 
						|
        qtwebapp::HttpRequest& request,
 | 
						|
        qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    try
 | 
						|
    {
 | 
						|
        int deviceSetIndex = boost::lexical_cast<int>(deviceSetIndexStr);
 | 
						|
        int channelIndex = boost::lexical_cast<int>(channelIndexStr);
 | 
						|
 | 
						|
        if (request.getMethod() == "GET")
 | 
						|
        {
 | 
						|
            SWGSDRangel::SWGChannelSettings normalResponse;
 | 
						|
            resetChannelSettings(normalResponse);
 | 
						|
            int status = m_adapter->devicesetChannelSettingsGet(deviceSetIndex, channelIndex, normalResponse, errorResponse);
 | 
						|
            response.setStatus(status);
 | 
						|
 | 
						|
            if (status/100 == 2) {
 | 
						|
                response.write(normalResponse.asJson().toUtf8());
 | 
						|
            } else {
 | 
						|
                response.write(errorResponse.asJson().toUtf8());
 | 
						|
            }
 | 
						|
        }
 | 
						|
        else if ((request.getMethod() == "PUT") || (request.getMethod() == "PATCH"))
 | 
						|
        {
 | 
						|
            QString jsonStr = request.getBody();
 | 
						|
            QJsonObject jsonObject;
 | 
						|
 | 
						|
            if (parseJsonBody(jsonStr, jsonObject, response))
 | 
						|
            {
 | 
						|
                SWGSDRangel::SWGChannelSettings normalResponse;
 | 
						|
                resetChannelSettings(normalResponse);
 | 
						|
                QStringList channelSettingsKeys;
 | 
						|
 | 
						|
                if (validateChannelSettings(normalResponse, jsonObject, channelSettingsKeys))
 | 
						|
                {
 | 
						|
                    int status = m_adapter->devicesetChannelSettingsPutPatch(
 | 
						|
                            deviceSetIndex,
 | 
						|
                            channelIndex,
 | 
						|
                            (request.getMethod() == "PUT"), // force settings on PUT
 | 
						|
                            channelSettingsKeys,
 | 
						|
                            normalResponse,
 | 
						|
                            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());
 | 
						|
        }
 | 
						|
    }
 | 
						|
    catch (const boost::bad_lexical_cast &e)
 | 
						|
    {
 | 
						|
        errorResponse.init();
 | 
						|
        *errorResponse.getMessage() = "Wrong integer conversion on index";
 | 
						|
        response.setStatus(400,"Invalid data");
 | 
						|
        response.write(errorResponse.asJson().toUtf8());
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::devicesetChannelReportService(
 | 
						|
        const std::string& deviceSetIndexStr,
 | 
						|
        const std::string& channelIndexStr,
 | 
						|
        qtwebapp::HttpRequest& request,
 | 
						|
        qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
    response.setHeader("Content-Type", "application/json");
 | 
						|
    response.setHeader("Access-Control-Allow-Origin", "*");
 | 
						|
 | 
						|
    try
 | 
						|
    {
 | 
						|
        int deviceSetIndex = boost::lexical_cast<int>(deviceSetIndexStr);
 | 
						|
        int channelIndex = boost::lexical_cast<int>(channelIndexStr);
 | 
						|
 | 
						|
        if (request.getMethod() == "GET")
 | 
						|
        {
 | 
						|
            SWGSDRangel::SWGChannelReport normalResponse;
 | 
						|
            resetChannelReport(normalResponse);
 | 
						|
            int status = m_adapter->devicesetChannelReportGet(deviceSetIndex, channelIndex, normalResponse, errorResponse);
 | 
						|
            response.setStatus(status);
 | 
						|
 | 
						|
            if (status/100 == 2) {
 | 
						|
                response.write(normalResponse.asJson().toUtf8());
 | 
						|
            } else {
 | 
						|
                response.write(errorResponse.asJson().toUtf8());
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
    catch (const boost::bad_lexical_cast &e)
 | 
						|
    {
 | 
						|
        errorResponse.init();
 | 
						|
        *errorResponse.getMessage() = "Wrong integer conversion on index";
 | 
						|
        response.setStatus(400,"Invalid data");
 | 
						|
        response.write(errorResponse.asJson().toUtf8());
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
bool WebAPIRequestMapper::parseJsonBody(QString& jsonStr, QJsonObject& jsonObject, qtwebapp::HttpResponse& response)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGErrorResponse errorResponse;
 | 
						|
 | 
						|
    try
 | 
						|
    {
 | 
						|
        QByteArray jsonBytes(jsonStr.toStdString().c_str());
 | 
						|
        QJsonParseError error;
 | 
						|
        QJsonDocument doc = QJsonDocument::fromJson(jsonBytes, &error);
 | 
						|
 | 
						|
        if (error.error == QJsonParseError::NoError)
 | 
						|
        {
 | 
						|
            jsonObject = doc.object();
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            QString errorMsg = QString("Input JSON error: ") + error.errorString() + QString(" at offset ") + QString::number(error.offset);
 | 
						|
            errorResponse.init();
 | 
						|
            *errorResponse.getMessage() = errorMsg;
 | 
						|
            response.setStatus(400, errorMsg.toUtf8());
 | 
						|
            response.write(errorResponse.asJson().toUtf8());
 | 
						|
        }
 | 
						|
 | 
						|
        return (error.error == QJsonParseError::NoError);
 | 
						|
    }
 | 
						|
    catch (const std::exception& ex)
 | 
						|
    {
 | 
						|
        QString errorMsg = QString("Error parsing request: ") + ex.what();
 | 
						|
        errorResponse.init();
 | 
						|
        *errorResponse.getMessage() = errorMsg;
 | 
						|
        response.setStatus(500, errorMsg.toUtf8());
 | 
						|
        response.write(errorResponse.asJson().toUtf8());
 | 
						|
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
bool WebAPIRequestMapper::validatePresetTransfer(SWGSDRangel::SWGPresetTransfer& presetTransfer)
 | 
						|
{
 | 
						|
    SWGSDRangel::SWGPresetIdentifier *presetIdentifier = presetTransfer.getPreset();
 | 
						|
 | 
						|
    if (presetIdentifier == 0) {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
    return validatePresetIdentifer(*presetIdentifier);
 | 
						|
}
 | 
						|
 | 
						|
bool WebAPIRequestMapper::validatePresetIdentifer(SWGSDRangel::SWGPresetIdentifier& presetIdentifier)
 | 
						|
{
 | 
						|
    return (presetIdentifier.getGroupName() && presetIdentifier.getName() && presetIdentifier.getType());
 | 
						|
}
 | 
						|
 | 
						|
bool WebAPIRequestMapper::validatePresetExport(SWGSDRangel::SWGPresetExport& presetExport)
 | 
						|
{
 | 
						|
    if (presetExport.getFilePath() == 0) {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
    SWGSDRangel::SWGPresetIdentifier *presetIdentifier =  presetExport.getPreset();
 | 
						|
 | 
						|
    if (presetIdentifier == 0) {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
    return validatePresetIdentifer(*presetIdentifier);
 | 
						|
}
 | 
						|
 | 
						|
bool WebAPIRequestMapper::validateDeviceListItem(SWGSDRangel::SWGDeviceListItem& deviceListItem, QJsonObject& jsonObject)
 | 
						|
{
 | 
						|
    if (jsonObject.contains("direction")) {
 | 
						|
        deviceListItem.setDirection(jsonObject["direction"].toInt());
 | 
						|
    } else {
 | 
						|
        deviceListItem.setDirection(0); // assume Rx
 | 
						|
    }
 | 
						|
 | 
						|
    bool identified = false;
 | 
						|
 | 
						|
    if (jsonObject.contains("displayedName") && jsonObject["displayedName"].isString())
 | 
						|
    {
 | 
						|
        deviceListItem.setDisplayedName(new QString(jsonObject["displayedName"].toString()));
 | 
						|
        identified = true;
 | 
						|
    } else {
 | 
						|
        deviceListItem.setDisplayedName(0);
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    if (jsonObject.contains("hwType") && jsonObject["hwType"].isString())
 | 
						|
    {
 | 
						|
        deviceListItem.setHwType(new QString(jsonObject["hwType"].toString()));
 | 
						|
        identified = true;
 | 
						|
    } else {
 | 
						|
        deviceListItem.setHwType(0);
 | 
						|
    }
 | 
						|
 | 
						|
    if (jsonObject.contains("serial") && jsonObject["serial"].isString())
 | 
						|
    {
 | 
						|
        deviceListItem.setSerial(new QString(jsonObject["serial"].toString()));
 | 
						|
        identified = true;
 | 
						|
    } else {
 | 
						|
        deviceListItem.setSerial(0);
 | 
						|
    }
 | 
						|
 | 
						|
    if (jsonObject.contains("index")) {
 | 
						|
        deviceListItem.setIndex(jsonObject["index"].toInt(-1));
 | 
						|
    } else {
 | 
						|
        deviceListItem.setIndex(-1);
 | 
						|
    }
 | 
						|
 | 
						|
    if (jsonObject.contains("sequence")){
 | 
						|
        deviceListItem.setSequence(jsonObject["sequence"].toInt(-1));
 | 
						|
    } else {
 | 
						|
        deviceListItem.setSequence(-1);
 | 
						|
    }
 | 
						|
 | 
						|
    if (jsonObject.contains("deviceStreamIndex")) {
 | 
						|
        deviceListItem.setDeviceStreamIndex(jsonObject["deviceStreamIndex"].toInt(-1));
 | 
						|
    } else {
 | 
						|
        deviceListItem.setDeviceStreamIndex(-1);
 | 
						|
    }
 | 
						|
 | 
						|
    return identified;
 | 
						|
}
 | 
						|
 | 
						|
bool WebAPIRequestMapper::validateDeviceSettings(
 | 
						|
        SWGSDRangel::SWGDeviceSettings& deviceSettings,
 | 
						|
        QJsonObject& jsonObject,
 | 
						|
        QStringList& deviceSettingsKeys)
 | 
						|
{
 | 
						|
    if (jsonObject.contains("direction")) {
 | 
						|
        deviceSettings.setDirection(jsonObject["direction"].toInt());
 | 
						|
    } else {
 | 
						|
        deviceSettings.setDirection(0); // assume single Rx
 | 
						|
    }
 | 
						|
 | 
						|
    if (jsonObject.contains("deviceHwType") && jsonObject["deviceHwType"].isString()) {
 | 
						|
        deviceSettings.setDeviceHwType(new QString(jsonObject["deviceHwType"].toString()));
 | 
						|
    } else {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
    QString *deviceHwType = deviceSettings.getDeviceHwType();
 | 
						|
 | 
						|
    if ((*deviceHwType == "Airspy") && (deviceSettings.getDirection() == 0))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("airspySettings") && jsonObject["airspySettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject airspySettingsJsonObject = jsonObject["airspySettings"].toObject();
 | 
						|
            deviceSettingsKeys = airspySettingsJsonObject.keys();
 | 
						|
            deviceSettings.setAirspySettings(new SWGSDRangel::SWGAirspySettings());
 | 
						|
            deviceSettings.getAirspySettings()->fromJsonObject(airspySettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "AirspyHF") && (deviceSettings.getDirection() == 0))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("airspyHFSettings") && jsonObject["airspyHFSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject airspyHFSettingsJsonObject = jsonObject["airspyHFSettings"].toObject();
 | 
						|
            deviceSettingsKeys = airspyHFSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setAirspyHfSettings(new SWGSDRangel::SWGAirspyHFSettings());
 | 
						|
            deviceSettings.getAirspyHfSettings()->fromJsonObject(airspyHFSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "BladeRF1") && (deviceSettings.getDirection() == 0))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("bladeRF1InputSettings") && jsonObject["bladeRF1InputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject bladeRF1InputSettingsJsonObject = jsonObject["bladeRF1InputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = bladeRF1InputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setBladeRf1InputSettings(new SWGSDRangel::SWGBladeRF1InputSettings());
 | 
						|
            deviceSettings.getBladeRf1InputSettings()->fromJsonObject(bladeRF1InputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "BladeRF1") && (deviceSettings.getDirection() == 1))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("bladeRF1OutputSettings") && jsonObject["bladeRF1OutputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject bladeRF1OutputSettingsJsonObject = jsonObject["bladeRF1OutputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = bladeRF1OutputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setBladeRf1OutputSettings(new SWGSDRangel::SWGBladeRF1OutputSettings());
 | 
						|
            deviceSettings.getBladeRf1OutputSettings()->fromJsonObject(bladeRF1OutputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "BladeRF2") && (deviceSettings.getDirection() == 0))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("bladeRF2InputSettings") && jsonObject["bladeRF2InputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject bladeRF2InputSettingsJsonObject = jsonObject["bladeRF2InputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = bladeRF2InputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setBladeRf2InputSettings(new SWGSDRangel::SWGBladeRF2InputSettings());
 | 
						|
            deviceSettings.getBladeRf2InputSettings()->fromJsonObject(bladeRF2InputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "BladeRF2") && (deviceSettings.getDirection() == 1))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("bladeRF2OutputSettings") && jsonObject["bladeRF2OutputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject bladeRF2OutputSettingsJsonObject = jsonObject["bladeRF2OutputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = bladeRF2OutputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setBladeRf2OutputSettings(new SWGSDRangel::SWGBladeRF2OutputSettings());
 | 
						|
            deviceSettings.getBladeRf2OutputSettings()->fromJsonObject(bladeRF2OutputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*deviceHwType == "FCDPro")
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("fcdProSettings") && jsonObject["fcdProSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject fcdProSettingsJsonObject = jsonObject["fcdProSettings"].toObject();
 | 
						|
            deviceSettingsKeys = fcdProSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setFcdProSettings(new SWGSDRangel::SWGFCDProSettings());
 | 
						|
            deviceSettings.getFcdProSettings()->fromJsonObject(fcdProSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*deviceHwType == "FCDPro+")
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("fcdProPlusSettings") && jsonObject["fcdProPlusSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject fcdProPlusSettingsJsonObject = jsonObject["fcdProPlusSettings"].toObject();
 | 
						|
            deviceSettingsKeys = fcdProPlusSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setFcdProPlusSettings(new SWGSDRangel::SWGFCDProPlusSettings());
 | 
						|
            deviceSettings.getFcdProPlusSettings()->fromJsonObject(fcdProPlusSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*deviceHwType == "FileInput")
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("fileInputSettings") && jsonObject["fileInputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject fileInputSettingsJsonObject = jsonObject["fileInputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = fileInputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setFileInputSettings(new SWGSDRangel::SWGFileInputSettings());
 | 
						|
            deviceSettings.getFileInputSettings()->fromJsonObject(fileInputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "HackRF") && (deviceSettings.getDirection() == 0))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("hackRFInputSettings") && jsonObject["hackRFInputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject hackRFInputSettingsJsonObject = jsonObject["hackRFInputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = hackRFInputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setHackRfInputSettings(new SWGSDRangel::SWGHackRFInputSettings());
 | 
						|
            deviceSettings.getHackRfInputSettings()->fromJsonObject(hackRFInputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "HackRF") && (deviceSettings.getDirection() == 1))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("hackRFOutputSettings") && jsonObject["hackRFOutputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject hackRFOutputSettingsJsonObject = jsonObject["hackRFOutputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = hackRFOutputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setHackRfOutputSettings(new SWGSDRangel::SWGHackRFOutputSettings());
 | 
						|
            deviceSettings.getHackRfOutputSettings()->fromJsonObject(hackRFOutputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "KiwiSDR") && (deviceSettings.getDirection() == 0))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("kiwiSDRSettings") && jsonObject["kiwiSDRSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject kiwiSDRSettingsJsonObject = jsonObject["kiwiSDRSettings"].toObject();
 | 
						|
            deviceSettingsKeys = kiwiSDRSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setKiwiSdrSettings(new SWGSDRangel::SWGKiwiSDRSettings());
 | 
						|
            deviceSettings.getKiwiSdrSettings()->fromJsonObject(kiwiSDRSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "LimeSDR") && (deviceSettings.getDirection() == 0))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("limeSdrInputSettings") && jsonObject["limeSdrInputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject limeSdrInputSettingsJsonObject = jsonObject["limeSdrInputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = limeSdrInputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setLimeSdrInputSettings(new SWGSDRangel::SWGLimeSdrInputSettings());
 | 
						|
            deviceSettings.getLimeSdrInputSettings()->fromJsonObject(limeSdrInputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "LimeSDR") && (deviceSettings.getDirection() == 1))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("limeSdrOutputSettings") && jsonObject["limeSdrOutputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject limeSdrOutputSettingsJsonObject = jsonObject["limeSdrOutputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = limeSdrOutputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setLimeSdrOutputSettings(new SWGSDRangel::SWGLimeSdrOutputSettings());
 | 
						|
            deviceSettings.getLimeSdrOutputSettings()->fromJsonObject(limeSdrOutputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*deviceHwType == "Perseus")
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("perseusSettings") && jsonObject["perseusSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject perseusSettingsJsonObject = jsonObject["perseusSettings"].toObject();
 | 
						|
            deviceSettingsKeys = perseusSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setPerseusSettings(new SWGSDRangel::SWGPerseusSettings());
 | 
						|
            deviceSettings.getPerseusSettings()->fromJsonObject(perseusSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "PlutoSDR") && (deviceSettings.getDirection() == 0))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("plutoSdrInputSettings") && jsonObject["plutoSdrInputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject plutoSdrInputSettingsJsonObject = jsonObject["plutoSdrInputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = plutoSdrInputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setPlutoSdrInputSettings(new SWGSDRangel::SWGPlutoSdrInputSettings());
 | 
						|
            deviceSettings.getPlutoSdrInputSettings()->fromJsonObject(plutoSdrInputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "PlutoSDR") && (deviceSettings.getDirection() == 1))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("plutoSdrOutputSettings") && jsonObject["plutoSdrOutputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject plutoSdrOutputSettingsJsonObject = jsonObject["plutoSdrOutputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = plutoSdrOutputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setPlutoSdrOutputSettings(new SWGSDRangel::SWGPlutoSdrOutputSettings());
 | 
						|
            deviceSettings.getPlutoSdrOutputSettings()->fromJsonObject(plutoSdrOutputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*deviceHwType == "RTLSDR")
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("rtlSdrSettings") && jsonObject["rtlSdrSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject rtlSdrSettingsJsonObject = jsonObject["rtlSdrSettings"].toObject();
 | 
						|
            deviceSettingsKeys = rtlSdrSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setRtlSdrSettings(new SWGSDRangel::SWGRtlSdrSettings());
 | 
						|
            deviceSettings.getRtlSdrSettings()->fromJsonObject(rtlSdrSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*deviceHwType == "SDRplay1")
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("sdrPlaySettings") && jsonObject["sdrPlaySettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject sdrPlaySettingsJsonObject = jsonObject["sdrPlaySettings"].toObject();
 | 
						|
            deviceSettingsKeys = sdrPlaySettingsJsonObject.keys();
 | 
						|
            deviceSettings.setSdrPlaySettings(new SWGSDRangel::SWGSDRPlaySettings());
 | 
						|
            deviceSettings.getSdrPlaySettings()->fromJsonObject(sdrPlaySettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "SoapySDR")  && (deviceSettings.getDirection() == 0))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("soapySDRInputSettings") && jsonObject["soapySDRInputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject soapySdrInputSettingsJsonObject = jsonObject["soapySDRInputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = soapySdrInputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setSoapySdrInputSettings(new SWGSDRangel::SWGSoapySDRInputSettings());
 | 
						|
            deviceSettings.getSoapySdrInputSettings()->init(); // contains complex objects
 | 
						|
            deviceSettings.getSoapySdrInputSettings()->fromJsonObject(soapySdrInputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "SoapySDR")  && (deviceSettings.getDirection() == 1))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("soapySDROutputSettings") && jsonObject["soapySDROutputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject soapySdrOutputSettingsJsonObject = jsonObject["soapySDROutputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = soapySdrOutputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setSoapySdrOutputSettings(new SWGSDRangel::SWGSoapySDROutputSettings());
 | 
						|
            deviceSettings.getSoapySdrInputSettings()->init(); // contains complex objects
 | 
						|
            deviceSettings.getSoapySdrOutputSettings()->fromJsonObject(soapySdrOutputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*deviceHwType == "TestSource")
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("testSourceSettings") && jsonObject["testSourceSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject testSourceSettingsJsonObject = jsonObject["testSourceSettings"].toObject();
 | 
						|
            deviceSettingsKeys = testSourceSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setTestSourceSettings(new SWGSDRangel::SWGTestSourceSettings());
 | 
						|
            deviceSettings.getTestSourceSettings()->fromJsonObject(testSourceSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "TestMI") && (deviceSettings.getDirection() == 2))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("TestMISettings") && jsonObject["TestMISettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject testMISettingsJsonObject = jsonObject["TestMISettings"].toObject();
 | 
						|
            deviceSettingsKeys = testMISettingsJsonObject.keys();
 | 
						|
 | 
						|
            if (deviceSettingsKeys.contains("streams") && testMISettingsJsonObject["streams"].isArray())
 | 
						|
            {
 | 
						|
                appendSettingsArrayKeys(testMISettingsJsonObject, "streams", deviceSettingsKeys);
 | 
						|
            }
 | 
						|
 | 
						|
            deviceSettings.setTestMiSettings(new SWGSDRangel::SWGTestMISettings());
 | 
						|
            deviceSettings.getTestMiSettings()->fromJsonObject(testMISettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "XTRX") && (deviceSettings.getDirection() == 0))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("xtrxInputSettings") && jsonObject["xtrxInputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject xtrxInputSettingsJsonObject = jsonObject["xtrxInputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = xtrxInputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setXtrxInputSettings(new SWGSDRangel::SWGXtrxInputSettings());
 | 
						|
            deviceSettings.getXtrxInputSettings()->fromJsonObject(xtrxInputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "XTRX") && (deviceSettings.getDirection() == 1))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("xtrxOutputSettings") && jsonObject["xtrxOutputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject xtrxOutputSettingsJsonObject = jsonObject["xtrxOutputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = xtrxOutputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setXtrxOutputSettings(new SWGSDRangel::SWGXtrxOutputSettings());
 | 
						|
            deviceSettings.getXtrxOutputSettings()->fromJsonObject(xtrxOutputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "RemoteInput") && (deviceSettings.getDirection() == 0))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("remoteInputSettings") && jsonObject["remoteInputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject remoteInputSettingsJsonObject = jsonObject["remoteInputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = remoteInputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setRemoteInputSettings(new SWGSDRangel::SWGRemoteInputSettings());
 | 
						|
            deviceSettings.getRemoteInputSettings()->fromJsonObject(remoteInputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "LocalInput") && (deviceSettings.getDirection() == 0))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("localInputSettings") && jsonObject["localInputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject localInputSettingsJsonObject = jsonObject["localInputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = localInputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setLocalInputSettings(new SWGSDRangel::SWGLocalInputSettings());
 | 
						|
            deviceSettings.getLocalInputSettings()->fromJsonObject(localInputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "RemoteOutput") && (deviceSettings.getDirection() == 1))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("remoteOutputSettings") && jsonObject["remoteOutputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject remoteOutputSettingsJsonObject = jsonObject["remoteOutputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = remoteOutputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setRemoteOutputSettings(new SWGSDRangel::SWGRemoteOutputSettings());
 | 
						|
            deviceSettings.getRemoteOutputSettings()->fromJsonObject(remoteOutputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if ((*deviceHwType == "LocalOutput") && (deviceSettings.getDirection() == 1))
 | 
						|
    {
 | 
						|
        if (jsonObject.contains("localOutputSettings") && jsonObject["localOutputSettings"].isObject())
 | 
						|
        {
 | 
						|
            QJsonObject localOutputSettingsJsonObject = jsonObject["localOutputSettings"].toObject();
 | 
						|
            deviceSettingsKeys = localOutputSettingsJsonObject.keys();
 | 
						|
            deviceSettings.setLocalOutputSettings(new SWGSDRangel::SWGLocalOutputSettings());
 | 
						|
            deviceSettings.getLocalOutputSettings()->fromJsonObject(localOutputSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
bool WebAPIRequestMapper::validateChannelSettings(
 | 
						|
        SWGSDRangel::SWGChannelSettings& channelSettings,
 | 
						|
        QJsonObject& jsonObject,
 | 
						|
        QStringList& channelSettingsKeys)
 | 
						|
{
 | 
						|
    if (jsonObject.contains("direction")) {
 | 
						|
        channelSettings.setDirection(jsonObject["direction"].toInt());
 | 
						|
    } else {
 | 
						|
        channelSettings.setDirection(0); // assume single Rx
 | 
						|
    }
 | 
						|
 | 
						|
    if (jsonObject.contains("channelType") && jsonObject["channelType"].isString()) {
 | 
						|
        channelSettings.setChannelType(new QString(jsonObject["channelType"].toString()));
 | 
						|
    } else {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
    QString *channelType = channelSettings.getChannelType();
 | 
						|
 | 
						|
    if (*channelType == "AMDemod")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 0)
 | 
						|
        {
 | 
						|
            QJsonObject amDemodSettingsJsonObject = jsonObject["AMDemodSettings"].toObject();
 | 
						|
            channelSettingsKeys = amDemodSettingsJsonObject.keys();
 | 
						|
            channelSettings.setAmDemodSettings(new SWGSDRangel::SWGAMDemodSettings());
 | 
						|
            channelSettings.getAmDemodSettings()->fromJsonObject(amDemodSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "AMMod")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 1)
 | 
						|
        {
 | 
						|
            QJsonObject amModSettingsJsonObject = jsonObject["AMModSettings"].toObject();
 | 
						|
            channelSettingsKeys = amModSettingsJsonObject.keys();
 | 
						|
 | 
						|
            if (channelSettingsKeys.contains("cwKeyer"))
 | 
						|
            {
 | 
						|
                QJsonObject cwKeyerSettingsJsonObject;
 | 
						|
                appendSettingsSubKeys(amModSettingsJsonObject, cwKeyerSettingsJsonObject, "cwKeyer", channelSettingsKeys);
 | 
						|
            }
 | 
						|
 | 
						|
            channelSettings.setAmModSettings(new SWGSDRangel::SWGAMModSettings());
 | 
						|
            channelSettings.getAmModSettings()->fromJsonObject(amModSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "ATVMod")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 1)
 | 
						|
        {
 | 
						|
            QJsonObject atvModSettingsJsonObject = jsonObject["ATVModSettings"].toObject();
 | 
						|
            channelSettingsKeys = atvModSettingsJsonObject.keys();
 | 
						|
            channelSettings.setAtvModSettings(new SWGSDRangel::SWGATVModSettings());
 | 
						|
            channelSettings.getAtvModSettings()->fromJsonObject(atvModSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "BFMDemod")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 0)
 | 
						|
        {
 | 
						|
            QJsonObject bfmDemodSettingsJsonObject = jsonObject["BFMDemodSettings"].toObject();
 | 
						|
            channelSettingsKeys = bfmDemodSettingsJsonObject.keys();
 | 
						|
            channelSettings.setBfmDemodSettings(new SWGSDRangel::SWGBFMDemodSettings());
 | 
						|
            channelSettings.getBfmDemodSettings()->fromJsonObject(bfmDemodSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "DSDDemod")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 0)
 | 
						|
        {
 | 
						|
            QJsonObject dsdDemodSettingsJsonObject = jsonObject["DSDDemodSettings"].toObject();
 | 
						|
            channelSettingsKeys = dsdDemodSettingsJsonObject.keys();
 | 
						|
            channelSettings.setDsdDemodSettings(new SWGSDRangel::SWGDSDDemodSettings());
 | 
						|
            channelSettings.getDsdDemodSettings()->fromJsonObject(dsdDemodSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "FreeDVDemod")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 0)
 | 
						|
        {
 | 
						|
            QJsonObject freeDVDemodSettingsJsonObject = jsonObject["FreeDVDemodSettings"].toObject();
 | 
						|
            channelSettingsKeys = freeDVDemodSettingsJsonObject.keys();
 | 
						|
            channelSettings.setFreeDvDemodSettings(new SWGSDRangel::SWGFreeDVDemodSettings());
 | 
						|
            channelSettings.getFreeDvDemodSettings()->fromJsonObject(freeDVDemodSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "FreeDVMod")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 1)
 | 
						|
        {
 | 
						|
            QJsonObject freeDVModSettingsJsonObject = jsonObject["FreeDVModSettings"].toObject();
 | 
						|
            channelSettingsKeys = freeDVModSettingsJsonObject.keys();
 | 
						|
            channelSettings.setFreeDvModSettings(new SWGSDRangel::SWGFreeDVModSettings());
 | 
						|
            channelSettings.getFreeDvModSettings()->fromJsonObject(freeDVModSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "FreqTracker")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 0)
 | 
						|
        {
 | 
						|
            QJsonObject freqTrackerSettingsJsonObject = jsonObject["FreqTrackerSettings"].toObject();
 | 
						|
            channelSettingsKeys = freqTrackerSettingsJsonObject.keys();
 | 
						|
            channelSettings.setFreqTrackerSettings(new SWGSDRangel::SWGFreqTrackerSettings());
 | 
						|
            channelSettings.getFreqTrackerSettings()->fromJsonObject(freqTrackerSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "NFMDemod")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 0)
 | 
						|
        {
 | 
						|
            QJsonObject nfmDemodSettingsJsonObject = jsonObject["NFMDemodSettings"].toObject();
 | 
						|
            channelSettingsKeys = nfmDemodSettingsJsonObject.keys();
 | 
						|
            channelSettings.setNfmDemodSettings(new SWGSDRangel::SWGNFMDemodSettings());
 | 
						|
            channelSettings.getNfmDemodSettings()->fromJsonObject(nfmDemodSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "NFMMod")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 1)
 | 
						|
        {
 | 
						|
            QJsonObject nfmModSettingsJsonObject = jsonObject["NFMModSettings"].toObject();
 | 
						|
            channelSettingsKeys = nfmModSettingsJsonObject.keys();
 | 
						|
 | 
						|
            if (channelSettingsKeys.contains("cwKeyer"))
 | 
						|
            {
 | 
						|
                QJsonObject cwKeyerSettingsJsonObject;
 | 
						|
                appendSettingsSubKeys(nfmModSettingsJsonObject, cwKeyerSettingsJsonObject, "cwKeyer", channelSettingsKeys);
 | 
						|
            }
 | 
						|
 | 
						|
            channelSettings.setNfmModSettings(new SWGSDRangel::SWGNFMModSettings());
 | 
						|
            channelSettings.getNfmModSettings()->fromJsonObject(nfmModSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "LocalSink")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 0)
 | 
						|
        {
 | 
						|
            QJsonObject localChannelSinkSettingsJsonObject = jsonObject["LocalSinkSettings"].toObject();
 | 
						|
            channelSettingsKeys = localChannelSinkSettingsJsonObject.keys();
 | 
						|
            channelSettings.setLocalSinkSettings(new SWGSDRangel::SWGLocalSinkSettings());
 | 
						|
            channelSettings.getLocalSinkSettings()->fromJsonObject(localChannelSinkSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "LocalSource")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 1)
 | 
						|
        {
 | 
						|
            QJsonObject localChannelSourceSettingsJsonObject = jsonObject["LocalSourceSettings"].toObject();
 | 
						|
            channelSettingsKeys = localChannelSourceSettingsJsonObject.keys();
 | 
						|
            channelSettings.setLocalSourceSettings(new SWGSDRangel::SWGLocalSourceSettings());
 | 
						|
            channelSettings.getLocalSourceSettings()->fromJsonObject(localChannelSourceSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "RemoteSink")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 0)
 | 
						|
        {
 | 
						|
            QJsonObject remoteChannelSinkSettingsJsonObject = jsonObject["RemoteSinkSettings"].toObject();
 | 
						|
            channelSettingsKeys = remoteChannelSinkSettingsJsonObject.keys();
 | 
						|
            channelSettings.setRemoteSinkSettings(new SWGSDRangel::SWGRemoteSinkSettings());
 | 
						|
            channelSettings.getRemoteSinkSettings()->fromJsonObject(remoteChannelSinkSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "RemoteSource")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 1)
 | 
						|
        {
 | 
						|
            QJsonObject remoteChannelSourceSettingsJsonObject = jsonObject["RemoteSourceSettings"].toObject();
 | 
						|
            channelSettingsKeys = remoteChannelSourceSettingsJsonObject.keys();
 | 
						|
            channelSettings.setRemoteSourceSettings(new SWGSDRangel::SWGRemoteSourceSettings());
 | 
						|
            channelSettings.getRemoteSourceSettings()->fromJsonObject(remoteChannelSourceSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "SSBDemod")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 0)
 | 
						|
        {
 | 
						|
            QJsonObject ssbDemodSettingsJsonObject = jsonObject["SSBDemodSettings"].toObject();
 | 
						|
            channelSettingsKeys = ssbDemodSettingsJsonObject.keys();
 | 
						|
            channelSettings.setSsbDemodSettings(new SWGSDRangel::SWGSSBDemodSettings());
 | 
						|
            channelSettings.getSsbDemodSettings()->fromJsonObject(ssbDemodSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "SSBMod")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 1)
 | 
						|
        {
 | 
						|
            QJsonObject ssbModSettingsJsonObject = jsonObject["SSBModSettings"].toObject();
 | 
						|
            channelSettingsKeys = ssbModSettingsJsonObject.keys();
 | 
						|
 | 
						|
            if (channelSettingsKeys.contains("cwKeyer"))
 | 
						|
            {
 | 
						|
                QJsonObject cwKeyerSettingsJsonObject;
 | 
						|
                appendSettingsSubKeys(ssbModSettingsJsonObject, cwKeyerSettingsJsonObject, "cwKeyer", channelSettingsKeys);
 | 
						|
            }
 | 
						|
 | 
						|
            channelSettings.setSsbModSettings(new SWGSDRangel::SWGSSBModSettings());
 | 
						|
            channelSettings.getSsbModSettings()->fromJsonObject(ssbModSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "UDPSource")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 1)
 | 
						|
        {
 | 
						|
            QJsonObject udpSourceSettingsJsonObject = jsonObject["UDPSourceSettings"].toObject();
 | 
						|
            channelSettingsKeys = udpSourceSettingsJsonObject.keys();
 | 
						|
            channelSettings.setUdpSourceSettings(new SWGSDRangel::SWGUDPSourceSettings());
 | 
						|
            channelSettings.getUdpSourceSettings()->fromJsonObject(udpSourceSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "UDPSink")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 0)
 | 
						|
        {
 | 
						|
            QJsonObject udpSinkSettingsJsonObject = jsonObject["UDPSinkSettings"].toObject();
 | 
						|
            channelSettingsKeys = udpSinkSettingsJsonObject.keys();
 | 
						|
            channelSettings.setUdpSinkSettings(new SWGSDRangel::SWGUDPSinkSettings());
 | 
						|
            channelSettings.getUdpSinkSettings()->fromJsonObject(udpSinkSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "WFMDemod")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 0)
 | 
						|
        {
 | 
						|
            QJsonObject wfmDemodSettingsJsonObject = jsonObject["WFMDemodSettings"].toObject();
 | 
						|
            channelSettingsKeys = wfmDemodSettingsJsonObject.keys();
 | 
						|
            channelSettings.setWfmDemodSettings(new SWGSDRangel::SWGWFMDemodSettings());
 | 
						|
            channelSettings.getWfmDemodSettings()->fromJsonObject(wfmDemodSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else if (*channelType == "WFMMod")
 | 
						|
    {
 | 
						|
        if (channelSettings.getDirection() == 1)
 | 
						|
        {
 | 
						|
            QJsonObject wfmModSettingsJsonObject = jsonObject["WFMModSettings"].toObject();
 | 
						|
            channelSettingsKeys = wfmModSettingsJsonObject.keys();
 | 
						|
 | 
						|
            if (channelSettingsKeys.contains("cwKeyer"))
 | 
						|
            {
 | 
						|
                QJsonObject cwKeyerSettingsJsonObject;
 | 
						|
                appendSettingsSubKeys(wfmModSettingsJsonObject, cwKeyerSettingsJsonObject, "cwKeyer", channelSettingsKeys);
 | 
						|
            }
 | 
						|
 | 
						|
            channelSettings.setWfmModSettings(new SWGSDRangel::SWGWFMModSettings());
 | 
						|
            channelSettings.getWfmModSettings()->fromJsonObject(wfmModSettingsJsonObject);
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
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("udpChannelCodec"))
 | 
						|
    {
 | 
						|
        audioOutputDevice.setUdpChannelCodec(jsonObject["udpChannelCodec"].toInt());
 | 
						|
        audioOutputDeviceKeys.append("udpChannelCodec");
 | 
						|
    }
 | 
						|
    if (jsonObject.contains("udpDecimationFactor"))
 | 
						|
    {
 | 
						|
        audioOutputDevice.setUdpDecimationFactor(jsonObject["udpDecimationFactor"].toInt());
 | 
						|
        audioOutputDeviceKeys.append("udpDecimationFactor");
 | 
						|
    }
 | 
						|
    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;
 | 
						|
}
 | 
						|
 | 
						|
bool WebAPIRequestMapper::validateAMBEDevices(SWGSDRangel::SWGAMBEDevices& ambeDevices, QJsonObject& jsonObject)
 | 
						|
{
 | 
						|
    if (jsonObject.contains("nbDevices"))
 | 
						|
    {
 | 
						|
        int nbDevices = jsonObject["nbDevices"].toInt();
 | 
						|
 | 
						|
        if (jsonObject.contains("ambeDevices"))
 | 
						|
        {
 | 
						|
            QJsonArray ambeDevicesJson = jsonObject["ambeDevices"].toArray();
 | 
						|
 | 
						|
            if (nbDevices != ambeDevicesJson.size()) {
 | 
						|
                return false;
 | 
						|
            }
 | 
						|
 | 
						|
            ambeDevices.init();
 | 
						|
            ambeDevices.setNbDevices(nbDevices);
 | 
						|
            QList<SWGSDRangel::SWGAMBEDevice *> *ambeList = ambeDevices.getAmbeDevices();
 | 
						|
 | 
						|
            for (int i = 0; i < nbDevices; i++)
 | 
						|
            {
 | 
						|
                QJsonObject ambeDeviceJson = ambeDevicesJson.at(i).toObject();
 | 
						|
                if (ambeDeviceJson.contains("deviceRef") && ambeDeviceJson.contains("delete"))
 | 
						|
                {
 | 
						|
                    ambeList->push_back(new SWGSDRangel::SWGAMBEDevice());
 | 
						|
                    ambeList->back()->init();
 | 
						|
                    ambeList->back()->setDeviceRef(new QString(ambeDeviceJson["deviceRef"].toString()));
 | 
						|
                    ambeList->back()->setDelete(ambeDeviceJson["delete"].toInt());
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    return false;
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::appendSettingsSubKeys(
 | 
						|
        const QJsonObject& parentSettingsJsonObject,
 | 
						|
        QJsonObject& childSettingsJsonObject,
 | 
						|
        const QString& parentKey,
 | 
						|
        QStringList& keyList)
 | 
						|
{
 | 
						|
    childSettingsJsonObject = parentSettingsJsonObject[parentKey].toObject();
 | 
						|
    QStringList childSettingsKeys = childSettingsJsonObject.keys();
 | 
						|
 | 
						|
    for (int i = 0; i < childSettingsKeys.size(); i++) {
 | 
						|
        keyList.append(parentKey + QString(".") + childSettingsKeys.at(i));
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::appendSettingsArrayKeys(
 | 
						|
        const QJsonObject& parentSettingsJsonObject,
 | 
						|
        const QString& parentKey,
 | 
						|
        QStringList& keyList)
 | 
						|
{
 | 
						|
    QJsonArray streams = parentSettingsJsonObject[parentKey].toArray();
 | 
						|
 | 
						|
    for (int istream = 0; istream < streams.count(); istream++)
 | 
						|
    {
 | 
						|
        QJsonValue v = streams.takeAt(istream);
 | 
						|
 | 
						|
        if (v.isObject())
 | 
						|
        {
 | 
						|
            QJsonObject streamSettingsJsonObject = v.toObject();
 | 
						|
            QStringList streamSettingsKeys = streamSettingsJsonObject.keys();
 | 
						|
 | 
						|
            for (int i = 0; i < streamSettingsKeys.size(); i++) {
 | 
						|
                keyList.append(tr("streams[%1].%2").arg(istream).arg(streamSettingsKeys[i]));
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void WebAPIRequestMapper::resetDeviceSettings(SWGSDRangel::SWGDeviceSettings& deviceSettings)
 | 
						|
{
 | 
						|
    deviceSettings.cleanup();
 | 
						|
    deviceSettings.setDeviceHwType(0);
 | 
						|
    deviceSettings.setAirspySettings(0);
 | 
						|
    deviceSettings.setAirspyHfSettings(0);
 | 
						|
    deviceSettings.setBladeRf1InputSettings(0);
 | 
						|
    deviceSettings.setBladeRf1OutputSettings(0);
 | 
						|
    deviceSettings.setFcdProPlusSettings(0);
 | 
						|
    deviceSettings.setFcdProSettings(0);
 | 
						|
    deviceSettings.setFileInputSettings(0);
 | 
						|
    deviceSettings.setHackRfInputSettings(0);
 | 
						|
    deviceSettings.setHackRfOutputSettings(0);
 | 
						|
    deviceSettings.setLimeSdrInputSettings(0);
 | 
						|
    deviceSettings.setLimeSdrOutputSettings(0);
 | 
						|
    deviceSettings.setPerseusSettings(0);
 | 
						|
    deviceSettings.setPlutoSdrInputSettings(0);
 | 
						|
    deviceSettings.setPlutoSdrOutputSettings(0);
 | 
						|
    deviceSettings.setRtlSdrSettings(0);
 | 
						|
    deviceSettings.setRemoteOutputSettings(0);
 | 
						|
    deviceSettings.setRemoteInputSettings(0);
 | 
						|
    deviceSettings.setSdrPlaySettings(0);
 | 
						|
    deviceSettings.setTestSourceSettings(0);
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::resetDeviceReport(SWGSDRangel::SWGDeviceReport& deviceReport)
 | 
						|
{
 | 
						|
    deviceReport.cleanup();
 | 
						|
    deviceReport.setDeviceHwType(0);
 | 
						|
    deviceReport.setAirspyHfReport(0);
 | 
						|
    deviceReport.setAirspyReport(0);
 | 
						|
    deviceReport.setFileInputReport(0);
 | 
						|
    deviceReport.setLimeSdrInputReport(0);
 | 
						|
    deviceReport.setLimeSdrOutputReport(0);
 | 
						|
    deviceReport.setPerseusReport(0);
 | 
						|
    deviceReport.setPlutoSdrInputReport(0);
 | 
						|
    deviceReport.setPlutoSdrOutputReport(0);
 | 
						|
    deviceReport.setRtlSdrReport(0);
 | 
						|
    deviceReport.setRemoteOutputReport(0);
 | 
						|
    deviceReport.setRemoteInputReport(0);
 | 
						|
    deviceReport.setSdrPlayReport(0);
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::resetChannelSettings(SWGSDRangel::SWGChannelSettings& channelSettings)
 | 
						|
{
 | 
						|
    channelSettings.cleanup();
 | 
						|
    channelSettings.setChannelType(0);
 | 
						|
    channelSettings.setAmDemodSettings(0);
 | 
						|
    channelSettings.setAmModSettings(0);
 | 
						|
    channelSettings.setAtvModSettings(0);
 | 
						|
    channelSettings.setBfmDemodSettings(0);
 | 
						|
    channelSettings.setDsdDemodSettings(0);
 | 
						|
    channelSettings.setNfmDemodSettings(0);
 | 
						|
    channelSettings.setNfmModSettings(0);
 | 
						|
    channelSettings.setRemoteSinkSettings(0);
 | 
						|
    channelSettings.setRemoteSourceSettings(0);
 | 
						|
    channelSettings.setSsbDemodSettings(0);
 | 
						|
    channelSettings.setSsbModSettings(0);
 | 
						|
    channelSettings.setUdpSourceSettings(0);
 | 
						|
    channelSettings.setUdpSinkSettings(0);
 | 
						|
    channelSettings.setWfmDemodSettings(0);
 | 
						|
    channelSettings.setWfmModSettings(0);
 | 
						|
}
 | 
						|
 | 
						|
void WebAPIRequestMapper::resetChannelReport(SWGSDRangel::SWGChannelReport& channelReport)
 | 
						|
{
 | 
						|
    channelReport.cleanup();
 | 
						|
    channelReport.setChannelType(0);
 | 
						|
    channelReport.setAmDemodReport(0);
 | 
						|
    channelReport.setAmModReport(0);
 | 
						|
    channelReport.setAtvModReport(0);
 | 
						|
    channelReport.setBfmDemodReport(0);
 | 
						|
    channelReport.setDsdDemodReport(0);
 | 
						|
    channelReport.setNfmDemodReport(0);
 | 
						|
    channelReport.setNfmModReport(0);
 | 
						|
    channelReport.setRemoteSourceReport(0);
 | 
						|
    channelReport.setSsbDemodReport(0);
 | 
						|
    channelReport.setSsbModReport(0);
 | 
						|
    channelReport.setUdpSourceReport(0);
 | 
						|
    channelReport.setUdpSinkReport(0);
 | 
						|
    channelReport.setWfmDemodReport(0);
 | 
						|
    channelReport.setWfmModReport(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);
 | 
						|
}
 |