kopia lustrzana https://github.com/f4exb/sdrangel
				
				
				
			REST API: device and channel actions: fixes to implementation
							rodzic
							
								
									c8b9c912a2
								
							
						
					
					
						commit
						b317c0a59d
					
				|  | @ -379,6 +379,7 @@ int FileSource::webapiReportGet( | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int FileSource::webapiActionsPost( | int FileSource::webapiActionsPost( | ||||||
|  |         const QStringList& channelActionsKeys, | ||||||
|         SWGSDRangel::SWGChannelActions& query, |         SWGSDRangel::SWGChannelActions& query, | ||||||
|         QString& errorMessage) |         QString& errorMessage) | ||||||
| { | { | ||||||
|  | @ -386,14 +387,24 @@ int FileSource::webapiActionsPost( | ||||||
| 
 | 
 | ||||||
|     if (swgFileSourceActions) |     if (swgFileSourceActions) | ||||||
|     { |     { | ||||||
|         bool play = swgFileSourceActions->getPlay() != 0; |         if (channelActionsKeys.contains("play")) | ||||||
|         FileSourceBaseband::MsgConfigureFileSourceWork *msg = FileSourceBaseband::MsgConfigureFileSourceWork::create(play); |         { | ||||||
|         m_basebandSource->getInputMessageQueue()->push(msg); |             bool play = swgFileSourceActions->getPlay() != 0; | ||||||
|  |             FileSourceBaseband::MsgConfigureFileSourceWork *msg = FileSourceBaseband::MsgConfigureFileSourceWork::create(play); | ||||||
|  |             m_basebandSource->getInputMessageQueue()->push(msg); | ||||||
|  | 
 | ||||||
|  |             if (getMessageQueueToGUI()) | ||||||
|  |             { | ||||||
|  |                 MsgConfigureFileSourceWork *msgToGUI = MsgConfigureFileSourceWork::create(play); | ||||||
|  |                 getMessageQueueToGUI()->push(msgToGUI); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         return 202; |         return 202; | ||||||
|     } |     } | ||||||
|     else |     else | ||||||
|     { |     { | ||||||
|         errorMessage = "Missing FileSourceActions key in JSON body"; |         errorMessage = "Missing FileSourceActions in query"; | ||||||
|         return 400; |         return 400; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -206,6 +206,7 @@ public: | ||||||
|             QString& errorMessage); |             QString& errorMessage); | ||||||
| 
 | 
 | ||||||
|     virtual int webapiActionsPost( |     virtual int webapiActionsPost( | ||||||
|  |             const QStringList& channelActionsKeys, | ||||||
|             SWGSDRangel::SWGChannelActions& query, |             SWGSDRangel::SWGChannelActions& query, | ||||||
|             QString& errorMessage); |             QString& errorMessage); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -96,7 +96,7 @@ bool FileSourceGUI::handleMessage(const Message& message) | ||||||
|         displayRateAndShift(); |         displayRateAndShift(); | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|     else if (FileSource::MsgConfigureFileSource::match(message)) |     else if (FileSource::MsgConfigureFileSource::match(message)) // API settings feedback
 | ||||||
|     { |     { | ||||||
|         const FileSource::MsgConfigureFileSource& cfg = (FileSource::MsgConfigureFileSource&) message; |         const FileSource::MsgConfigureFileSource& cfg = (FileSource::MsgConfigureFileSource&) message; | ||||||
|         m_settings = cfg.getSettings(); |         m_settings = cfg.getSettings(); | ||||||
|  | @ -149,6 +149,20 @@ bool FileSourceGUI::handleMessage(const Message& message) | ||||||
| 
 | 
 | ||||||
| 		return true; | 		return true; | ||||||
| 	} | 	} | ||||||
|  |     else if (FileSource::MsgConfigureFileSourceWork::match(message)) // API action "play" feedback
 | ||||||
|  |     { | ||||||
|  |         const FileSource::MsgConfigureFileSourceWork& notif = (const FileSource::MsgConfigureFileSourceWork&) message; | ||||||
|  |         bool play = notif.isWorking(); | ||||||
|  |         ui->play->blockSignals(true); | ||||||
|  |         ui->navTime->blockSignals(true); | ||||||
|  |         ui->play->setChecked(play); | ||||||
|  |         ui->navTime->setEnabled(!play); | ||||||
|  |         m_enableNavTime = !play; | ||||||
|  |         ui->play->blockSignals(false); | ||||||
|  |         ui->navTime->blockSignals(false); | ||||||
|  | 
 | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|     else |     else | ||||||
|     { |     { | ||||||
|         return false; |         return false; | ||||||
|  |  | ||||||
|  | @ -165,6 +165,23 @@ bool RTLSDRGui::handleMessage(const Message& message) | ||||||
| 
 | 
 | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |     else if (RTLSDRInput::MsgFileRecord::match(message)) // API action "record" feedback
 | ||||||
|  |     { | ||||||
|  |         const RTLSDRInput::MsgFileRecord& notif = (const RTLSDRInput::MsgFileRecord&) message; | ||||||
|  |         bool record = notif.getStartStop(); | ||||||
|  | 
 | ||||||
|  |         ui->record->blockSignals(true); | ||||||
|  |         ui->record->setChecked(record); | ||||||
|  | 
 | ||||||
|  |         if (record) { | ||||||
|  |             ui->record->setStyleSheet("QToolButton { background-color : red; }"); | ||||||
|  |         } else { | ||||||
|  |             ui->record->setStyleSheet("QToolButton { background:rgb(79,79,79); }"); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         ui->record->blockSignals(false); | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
| 	else | 	else | ||||||
| 	{ | 	{ | ||||||
| 		return false; | 		return false; | ||||||
|  |  | ||||||
|  | @ -757,6 +757,7 @@ int RTLSDRInput::webapiReportGet( | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int RTLSDRInput::webapiActionsPost( | int RTLSDRInput::webapiActionsPost( | ||||||
|  |         const QStringList& deviceActionsKeys, | ||||||
|         SWGSDRangel::SWGDeviceActions& query, |         SWGSDRangel::SWGDeviceActions& query, | ||||||
|         QString& errorMessage) |         QString& errorMessage) | ||||||
| { | { | ||||||
|  | @ -764,14 +765,24 @@ int RTLSDRInput::webapiActionsPost( | ||||||
| 
 | 
 | ||||||
|     if (swgRtlSdrActions) |     if (swgRtlSdrActions) | ||||||
|     { |     { | ||||||
|         bool record = swgRtlSdrActions->getRecord() != 0; |         if (deviceActionsKeys.contains("record")) | ||||||
|         MsgFileRecord *msg = MsgFileRecord::create(record); |         { | ||||||
|         getInputMessageQueue()->push(msg); |             bool record = swgRtlSdrActions->getRecord() != 0; | ||||||
|  |             MsgFileRecord *msg = MsgFileRecord::create(record); | ||||||
|  |             getInputMessageQueue()->push(msg); | ||||||
|  | 
 | ||||||
|  |             if (getMessageQueueToGUI()) | ||||||
|  |             { | ||||||
|  |                 MsgFileRecord *msgToGUI = MsgFileRecord::create(record); | ||||||
|  |                 getMessageQueueToGUI()->push(msgToGUI); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         return 202; |         return 202; | ||||||
|     } |     } | ||||||
|     else |     else | ||||||
|     { |     { | ||||||
|         errorMessage = "Missing RtlSdrActions key in JSON body"; |         errorMessage = "Missing RtlSdrActions in query"; | ||||||
|         return 400; |         return 400; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -132,6 +132,7 @@ public: | ||||||
|             QString& errorMessage); |             QString& errorMessage); | ||||||
| 
 | 
 | ||||||
|     virtual int webapiActionsPost( |     virtual int webapiActionsPost( | ||||||
|  |             const QStringList& deviceActionsKeys, | ||||||
|             SWGSDRangel::SWGDeviceActions& actions, |             SWGSDRangel::SWGDeviceActions& actions, | ||||||
|             QString& errorMessage); |             QString& errorMessage); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -98,10 +98,12 @@ public: | ||||||
|      * API adapter for the channel actions POST requests |      * API adapter for the channel actions POST requests | ||||||
|      */ |      */ | ||||||
|     virtual int webapiActionsPost( |     virtual int webapiActionsPost( | ||||||
|  |             const QStringList& channelActionsKeys, | ||||||
|             SWGSDRangel::SWGChannelActions& query, |             SWGSDRangel::SWGChannelActions& query, | ||||||
|             QString& errorMessage) |             QString& errorMessage) | ||||||
|     { |     { | ||||||
|         (void) query; |         (void) query; | ||||||
|  |         (void) channelActionsKeys; | ||||||
|         errorMessage = "Not implemented"; return 501; |         errorMessage = "Not implemented"; return 501; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -137,9 +137,11 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     virtual int webapiActionsPost( |     virtual int webapiActionsPost( | ||||||
|  |             const QStringList& deviceActionsKeys, | ||||||
|             SWGSDRangel::SWGDeviceActions& actions, |             SWGSDRangel::SWGDeviceActions& actions, | ||||||
|             QString& errorMessage) |             QString& errorMessage) | ||||||
|     { |     { | ||||||
|  |         (void) deviceActionsKeys; | ||||||
|         (void) actions; |         (void) actions; | ||||||
|         errorMessage = "Not implemented"; |         errorMessage = "Not implemented"; | ||||||
|         return 501; |         return 501; | ||||||
|  |  | ||||||
|  | @ -113,9 +113,11 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     virtual int webapiActionsPost( |     virtual int webapiActionsPost( | ||||||
|  |             const QStringList& deviceActionsKeys, | ||||||
|             SWGSDRangel::SWGDeviceActions& actions, |             SWGSDRangel::SWGDeviceActions& actions, | ||||||
|             QString& errorMessage) |             QString& errorMessage) | ||||||
|     { |     { | ||||||
|  |         (void) deviceActionsKeys; | ||||||
|         (void) actions; |         (void) actions; | ||||||
|         errorMessage = "Not implemented"; |         errorMessage = "Not implemented"; | ||||||
|         return 501; |         return 501; | ||||||
|  |  | ||||||
|  | @ -119,9 +119,11 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     virtual int webapiActionsPost( |     virtual int webapiActionsPost( | ||||||
|  |             const QStringList& deviceSettingsKeys, | ||||||
|             SWGSDRangel::SWGDeviceActions& actions, |             SWGSDRangel::SWGDeviceActions& actions, | ||||||
|             QString& errorMessage) |             QString& errorMessage) | ||||||
|     { |     { | ||||||
|  |         (void) deviceSettingsKeys; | ||||||
|         (void) actions; |         (void) actions; | ||||||
|         errorMessage = "Not implemented"; |         errorMessage = "Not implemented"; | ||||||
|         return 501; |         return 501; | ||||||
|  |  | ||||||
|  | @ -18,6 +18,7 @@ | ||||||
|         <file>webapi/doc/swagger/include/CWKeyer.yaml</file> |         <file>webapi/doc/swagger/include/CWKeyer.yaml</file> | ||||||
|         <file>webapi/doc/swagger/include/DATVDemod.yaml</file> |         <file>webapi/doc/swagger/include/DATVDemod.yaml</file> | ||||||
|         <file>webapi/doc/swagger/include/DSDDemod.yaml</file> |         <file>webapi/doc/swagger/include/DSDDemod.yaml</file> | ||||||
|  |         <file>webapi/doc/swagger/include/DeviceActions.yaml</file> | ||||||
|         <file>webapi/doc/swagger/include/DeviceSettings.yaml</file> |         <file>webapi/doc/swagger/include/DeviceSettings.yaml</file> | ||||||
|         <file>webapi/doc/swagger/include/FCDPro.yaml</file> |         <file>webapi/doc/swagger/include/FCDPro.yaml</file> | ||||||
|         <file>webapi/doc/swagger/include/FCDProPlus.yaml</file> |         <file>webapi/doc/swagger/include/FCDProPlus.yaml</file> | ||||||
|  |  | ||||||
|  | @ -884,12 +884,14 @@ public: | ||||||
|      */ |      */ | ||||||
|     virtual int devicesetDeviceActionsPost( |     virtual int devicesetDeviceActionsPost( | ||||||
|             int deviceSetIndex, |             int deviceSetIndex, | ||||||
|  |             const QStringList& deviceActionsKeys, | ||||||
|             SWGSDRangel::SWGDeviceActions& query, |             SWGSDRangel::SWGDeviceActions& query, | ||||||
|             SWGSDRangel::SWGSuccessResponse& response, |             SWGSDRangel::SWGSuccessResponse& response, | ||||||
|             SWGSDRangel::SWGErrorResponse& error |             SWGSDRangel::SWGErrorResponse& error | ||||||
|     ) |     ) | ||||||
|     { |     { | ||||||
|         (void) deviceSetIndex; |         (void) deviceSetIndex; | ||||||
|  |         (void) deviceActionsKeys; | ||||||
|         (void) query; |         (void) query; | ||||||
|         (void) response; |         (void) response; | ||||||
|         error.init(); |         error.init(); | ||||||
|  | @ -1000,12 +1002,14 @@ public: | ||||||
|     virtual int devicesetChannelActionsPost( |     virtual int devicesetChannelActionsPost( | ||||||
|             int deviceSetIndex, |             int deviceSetIndex, | ||||||
|             int channelIndex, |             int channelIndex, | ||||||
|  |             const QStringList& channelActionsKeys, | ||||||
|             SWGSDRangel::SWGChannelActions& query, |             SWGSDRangel::SWGChannelActions& query, | ||||||
|             SWGSDRangel::SWGSuccessResponse& response, |             SWGSDRangel::SWGSuccessResponse& response, | ||||||
|             SWGSDRangel::SWGErrorResponse& error) |             SWGSDRangel::SWGErrorResponse& error) | ||||||
|     { |     { | ||||||
|         (void) deviceSetIndex; |         (void) deviceSetIndex; | ||||||
|         (void) channelIndex; |         (void) channelIndex; | ||||||
|  |         (void) channelActionsKeys; | ||||||
|         (void) query; |         (void) query; | ||||||
|         (void) response; |         (void) response; | ||||||
|         error.init(); |         error.init(); | ||||||
|  |  | ||||||
|  | @ -153,6 +153,10 @@ const QMap<QString, QString> WebAPIRequestMapper::m_channelTypeToSettingsKey = { | ||||||
|     {"WFMMod", "WFMModSettings"} |     {"WFMMod", "WFMModSettings"} | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | const QMap<QString, QString> WebAPIRequestMapper::m_channelTypeToActionsKey = { | ||||||
|  |     {"FileSource", "FileSourceActions"} | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| const QMap<QString, QString> WebAPIRequestMapper::m_sourceDeviceHwIdToSettingsKey = { | const QMap<QString, QString> WebAPIRequestMapper::m_sourceDeviceHwIdToSettingsKey = { | ||||||
|     {"Airspy", "airspySettings"}, |     {"Airspy", "airspySettings"}, | ||||||
|     {"AirspyHF", "airspyHFSettings"}, |     {"AirspyHF", "airspyHFSettings"}, | ||||||
|  | @ -175,6 +179,10 @@ const QMap<QString, QString> WebAPIRequestMapper::m_sourceDeviceHwIdToSettingsKe | ||||||
|     {"XTRX", "XtrxInputSettings"} |     {"XTRX", "XtrxInputSettings"} | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | const QMap<QString, QString> WebAPIRequestMapper::m_sourceDeviceHwIdToActionsKey = { | ||||||
|  |     {"RTLSDR", "rtlSdrActions"} | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| const QMap<QString, QString> WebAPIRequestMapper::m_sinkDeviceHwIdToSettingsKey = { | const QMap<QString, QString> WebAPIRequestMapper::m_sinkDeviceHwIdToSettingsKey = { | ||||||
|     {"BladeRF1", "bladeRF1OutputSettings"}, |     {"BladeRF1", "bladeRF1OutputSettings"}, | ||||||
|     {"BladeRF2", "bladeRF2OutputSettings"}, |     {"BladeRF2", "bladeRF2OutputSettings"}, | ||||||
|  | @ -184,7 +192,23 @@ const QMap<QString, QString> WebAPIRequestMapper::m_sinkDeviceHwIdToSettingsKey | ||||||
|     {"PlutoSDR", "plutoSdrOutputSettings"}, |     {"PlutoSDR", "plutoSdrOutputSettings"}, | ||||||
|     {"RemoteOutput", "remoteOutputSettings"}, |     {"RemoteOutput", "remoteOutputSettings"}, | ||||||
|     {"SoapySDR", "soapySDROutputSettings"}, |     {"SoapySDR", "soapySDROutputSettings"}, | ||||||
|  | <<<<<<< ours | ||||||
|     {"XTRX", "XtrxOutputSettings"} |     {"XTRX", "XtrxOutputSettings"} | ||||||
|  | ======= | ||||||
|  |     {"XTRX", "xtrxOutputSettings"} | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | const QMap<QString, QString> WebAPIRequestMapper::m_sinkDeviceHwIdToActionsKey = { | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | const QMap<QString, QString> WebAPIRequestMapper::m_mimoDeviceHwIdToSettingsKey= { | ||||||
|  |     {"BladeRF2", "bladeRF2MIMOSettings"}, | ||||||
|  |     {"TestMI", "testMISettings"}, | ||||||
|  |     {"TestMOSync", "testMOSyncSettings"} | ||||||
|  | >>>>>>> theirs | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | const QMap<QString, QString> WebAPIRequestMapper::m_mimoDeviceHwIdToActionsKey= { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| WebAPIRequestMapper::WebAPIRequestMapper(QObject* parent) : | WebAPIRequestMapper::WebAPIRequestMapper(QObject* parent) : | ||||||
|  | @ -311,6 +335,8 @@ void WebAPIRequestMapper::service(qtwebapp::HttpRequest& request, qtwebapp::Http | ||||||
|                 devicesetChannelSettingsService(std::string(desc_match[1]), std::string(desc_match[2]), request, response); |                 devicesetChannelSettingsService(std::string(desc_match[1]), std::string(desc_match[2]), request, response); | ||||||
|             } else if (std::regex_match(pathStr, desc_match, WebAPIAdapterInterface::devicesetChannelReportURLRe)) { |             } else if (std::regex_match(pathStr, desc_match, WebAPIAdapterInterface::devicesetChannelReportURLRe)) { | ||||||
|                 devicesetChannelReportService(std::string(desc_match[1]), std::string(desc_match[2]), request, response); |                 devicesetChannelReportService(std::string(desc_match[1]), std::string(desc_match[2]), request, response); | ||||||
|  |             } else if (std::regex_match(pathStr, desc_match, WebAPIAdapterInterface::devicesetChannelActionsURLRe)) { | ||||||
|  |                 devicesetChannelActionsService(std::string(desc_match[1]), std::string(desc_match[2]), request, response); | ||||||
|             } |             } | ||||||
|             else // serve static documentation pages
 |             else // serve static documentation pages
 | ||||||
|             { |             { | ||||||
|  | @ -1922,9 +1948,11 @@ void WebAPIRequestMapper::devicesetDeviceActionsService(const std::string& index | ||||||
|     response.setHeader("Content-Type", "application/json"); |     response.setHeader("Content-Type", "application/json"); | ||||||
|     response.setHeader("Access-Control-Allow-Origin", "*"); |     response.setHeader("Access-Control-Allow-Origin", "*"); | ||||||
| 
 | 
 | ||||||
|     if (request.getMethod() == "POST") |     try | ||||||
|     { |     { | ||||||
|         try |         int deviceSetIndex = boost::lexical_cast<int>(indexStr); | ||||||
|  | 
 | ||||||
|  |         if (request.getMethod() == "POST") | ||||||
|         { |         { | ||||||
|             QString jsonStr = request.getBody(); |             QString jsonStr = request.getBody(); | ||||||
|             QJsonObject jsonObject; |             QJsonObject jsonObject; | ||||||
|  | @ -1933,19 +1961,17 @@ void WebAPIRequestMapper::devicesetDeviceActionsService(const std::string& index | ||||||
|             { |             { | ||||||
|                 SWGSDRangel::SWGDeviceActions query; |                 SWGSDRangel::SWGDeviceActions query; | ||||||
|                 SWGSDRangel::SWGSuccessResponse normalResponse; |                 SWGSDRangel::SWGSuccessResponse normalResponse; | ||||||
|                 int deviceSetIndex = boost::lexical_cast<int>(indexStr); |  | ||||||
|                 resetDeviceActions(query); |                 resetDeviceActions(query); | ||||||
|  |                 QStringList deviceActionsKeys; | ||||||
| 
 | 
 | ||||||
|                 if (jsonObject.contains("direction")) { |                 if (validateDeviceActions(query, jsonObject, deviceActionsKeys)) | ||||||
|                     query.setDirection(jsonObject["direction"].toInt()); |  | ||||||
|                 } else { |  | ||||||
|                     query.setDirection(0); // assume Rx
 |  | ||||||
|                 } |  | ||||||
| 
 |  | ||||||
|                 if (jsonObject.contains("deviceHwType") && jsonObject["deviceHwType"].isString()) |  | ||||||
|                 { |                 { | ||||||
|                     query.setDeviceHwType(new QString(jsonObject["deviceHwType"].toString())); |                     int status = m_adapter->devicesetDeviceActionsPost( | ||||||
|                     int status = m_adapter->devicesetDeviceActionsPost(deviceSetIndex, query, normalResponse, errorResponse); |                         deviceSetIndex, | ||||||
|  |                         deviceActionsKeys, | ||||||
|  |                         query, | ||||||
|  |                         normalResponse, | ||||||
|  |                         errorResponse); | ||||||
|                     response.setStatus(status); |                     response.setStatus(status); | ||||||
| 
 | 
 | ||||||
|                     if (status/100 == 2) { |                     if (status/100 == 2) { | ||||||
|  | @ -1970,19 +1996,19 @@ void WebAPIRequestMapper::devicesetDeviceActionsService(const std::string& index | ||||||
|                 response.write(errorResponse.asJson().toUtf8()); |                 response.write(errorResponse.asJson().toUtf8()); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         catch (const boost::bad_lexical_cast &e) |         else | ||||||
|         { |         { | ||||||
|  |             response.setStatus(405,"Invalid HTTP method"); | ||||||
|             errorResponse.init(); |             errorResponse.init(); | ||||||
|             *errorResponse.getMessage() = "Wrong integer conversion on device set index"; |             *errorResponse.getMessage() = "Invalid HTTP method"; | ||||||
|             response.setStatus(400,"Invalid data"); |  | ||||||
|             response.write(errorResponse.asJson().toUtf8()); |             response.write(errorResponse.asJson().toUtf8()); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     else |     catch(const boost::bad_lexical_cast &e) | ||||||
|     { |     { | ||||||
|         response.setStatus(405,"Invalid HTTP method"); |  | ||||||
|         errorResponse.init(); |         errorResponse.init(); | ||||||
|         *errorResponse.getMessage() = "Invalid HTTP method"; |         *errorResponse.getMessage() = "Wrong integer conversion on device set index"; | ||||||
|  |         response.setStatus(400,"Invalid data"); | ||||||
|         response.write(errorResponse.asJson().toUtf8()); |         response.write(errorResponse.asJson().toUtf8()); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -2281,7 +2307,7 @@ void WebAPIRequestMapper::devicesetChannelReportService( | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void WebAPIRequestMapper::devicesetChannelActtionsService( | void WebAPIRequestMapper::devicesetChannelActionsService( | ||||||
|         const std::string& deviceSetIndexStr, |         const std::string& deviceSetIndexStr, | ||||||
|         const std::string& channelIndexStr, |         const std::string& channelIndexStr, | ||||||
|         qtwebapp::HttpRequest& request, |         qtwebapp::HttpRequest& request, | ||||||
|  | @ -2306,17 +2332,17 @@ void WebAPIRequestMapper::devicesetChannelActtionsService( | ||||||
|                 SWGSDRangel::SWGChannelActions query; |                 SWGSDRangel::SWGChannelActions query; | ||||||
|                 SWGSDRangel::SWGSuccessResponse normalResponse; |                 SWGSDRangel::SWGSuccessResponse normalResponse; | ||||||
|                 resetChannelActions(query); |                 resetChannelActions(query); | ||||||
|  |                 QStringList channelActionsKeys; | ||||||
| 
 | 
 | ||||||
|                 if (jsonObject.contains("direction")) { |                 if (validateChannelActions(query, jsonObject, channelActionsKeys)) | ||||||
|                     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->devicesetChannelActionsPost( | ||||||
|                     int status = m_adapter->devicesetChannelActionsPost(deviceSetIndex, channelIndex, query, normalResponse, errorResponse); |                         deviceSetIndex, | ||||||
|  |                         channelIndex, | ||||||
|  |                         channelActionsKeys, | ||||||
|  |                         query, | ||||||
|  |                         normalResponse, | ||||||
|  |                         errorResponse); | ||||||
|                     response.setStatus(status); |                     response.setStatus(status); | ||||||
| 
 | 
 | ||||||
|                     if (status/100 == 2) { |                     if (status/100 == 2) { | ||||||
|  | @ -2523,7 +2549,59 @@ bool WebAPIRequestMapper::validateDeviceSettings( | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return getDevice(deviceSettingsKey, &deviceSettings, jsonObject, deviceSettingsKeys); |     return getDeviceSettings(deviceSettingsKey, &deviceSettings, jsonObject, deviceSettingsKeys); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool WebAPIRequestMapper::validateDeviceActions( | ||||||
|  |         SWGSDRangel::SWGDeviceActions& deviceActions, | ||||||
|  |         QJsonObject& jsonObject, | ||||||
|  |         QStringList& deviceActionsKeys) | ||||||
|  | { | ||||||
|  |     if (jsonObject.contains("direction")) { | ||||||
|  |         deviceActions.setDirection(jsonObject["direction"].toInt()); | ||||||
|  |     } else { | ||||||
|  |         deviceActions.setDirection(0); // assume single Rx
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if (jsonObject.contains("deviceHwType") && jsonObject["deviceHwType"].isString()) { | ||||||
|  |         deviceActions.setDeviceHwType(new QString(jsonObject["deviceHwType"].toString())); | ||||||
|  |     } else { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     QString *deviceHwType = deviceActions.getDeviceHwType(); | ||||||
|  |     QString deviceActionsKey; | ||||||
|  | 
 | ||||||
|  |     if (deviceActions.getDirection() == 0) // source
 | ||||||
|  |     { | ||||||
|  |         if (m_sourceDeviceHwIdToSettingsKey.contains(*deviceHwType)) { | ||||||
|  |             deviceActionsKey = m_sourceDeviceHwIdToActionsKey[*deviceHwType]; | ||||||
|  |         } else { | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     else if (deviceActions.getDirection() == 1) // sink
 | ||||||
|  |     { | ||||||
|  |         if (m_sinkDeviceHwIdToSettingsKey.contains(*deviceHwType)) { | ||||||
|  |             deviceActionsKey = m_sinkDeviceHwIdToActionsKey[*deviceHwType]; | ||||||
|  |         } else { | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     else if (deviceActions.getDirection() == 2) // MIMO
 | ||||||
|  |     { | ||||||
|  |         if (m_mimoDeviceHwIdToSettingsKey.contains(*deviceHwType)) { | ||||||
|  |             deviceActionsKey = m_mimoDeviceHwIdToActionsKey[*deviceHwType]; | ||||||
|  |         } else { | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     else | ||||||
|  |     { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return getDeviceActions(deviceActionsKey, &deviceActions, jsonObject, deviceActionsKeys); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool WebAPIRequestMapper::validateChannelSettings( | bool WebAPIRequestMapper::validateChannelSettings( | ||||||
|  | @ -2546,7 +2624,33 @@ bool WebAPIRequestMapper::validateChannelSettings( | ||||||
|     QString *channelType = channelSettings.getChannelType(); |     QString *channelType = channelSettings.getChannelType(); | ||||||
| 
 | 
 | ||||||
|     if (m_channelTypeToSettingsKey.contains(*channelType)) { |     if (m_channelTypeToSettingsKey.contains(*channelType)) { | ||||||
|         return getChannel(m_channelTypeToSettingsKey[*channelType], &channelSettings, jsonObject, channelSettingsKeys); |         return getChannelSettings(m_channelTypeToSettingsKey[*channelType], &channelSettings, jsonObject, channelSettingsKeys); | ||||||
|  |     } else { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool WebAPIRequestMapper::validateChannelActions( | ||||||
|  |     SWGSDRangel::SWGChannelActions& channelActions, | ||||||
|  |     QJsonObject& jsonObject, | ||||||
|  |     QStringList& channelActionsKeys) | ||||||
|  | { | ||||||
|  |     if (jsonObject.contains("direction")) { | ||||||
|  |         channelActions.setDirection(jsonObject["direction"].toInt()); | ||||||
|  |     } else { | ||||||
|  |         channelActions.setDirection(0); // assume single Rx
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if (jsonObject.contains("channelType") && jsonObject["channelType"].isString()) { | ||||||
|  |         channelActions.setChannelType(new QString(jsonObject["channelType"].toString())); | ||||||
|  |     } else { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     QString *channelType = channelActions.getChannelType(); | ||||||
|  | 
 | ||||||
|  |     if (m_channelTypeToActionsKey.contains(*channelType)) { | ||||||
|  |         return getChannelActions(m_channelTypeToActionsKey[*channelType], &channelActions, jsonObject, channelActionsKeys); | ||||||
|     } else { |     } else { | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
|  | @ -2936,7 +3040,7 @@ bool WebAPIRequestMapper::appendPresetChannelKeys( | ||||||
|         { |         { | ||||||
|             SWGSDRangel::SWGChannelSettings *channelSettings = new SWGSDRangel::SWGChannelSettings(); |             SWGSDRangel::SWGChannelSettings *channelSettings = new SWGSDRangel::SWGChannelSettings(); | ||||||
|             channel->setConfig(channelSettings); |             channel->setConfig(channelSettings); | ||||||
|             return getChannel(m_channelURIToSettingsKey[*channelURI], channelSettings, channelSettingsJson["config"].toObject(), channelKeys.m_channelKeys); |             return getChannelSettings(m_channelURIToSettingsKey[*channelURI], channelSettings, channelSettingsJson["config"].toObject(), channelKeys.m_channelKeys); | ||||||
|         } |         } | ||||||
|         else |         else | ||||||
|         { |         { | ||||||
|  | @ -2949,7 +3053,7 @@ bool WebAPIRequestMapper::appendPresetChannelKeys( | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool WebAPIRequestMapper::getChannel( | bool WebAPIRequestMapper::getChannelSettings( | ||||||
|     const QString& channelSettingsKey, |     const QString& channelSettingsKey, | ||||||
|     SWGSDRangel::SWGChannelSettings *channelSettings, |     SWGSDRangel::SWGChannelSettings *channelSettings, | ||||||
|     const QJsonObject& channelSettingsJson, |     const QJsonObject& channelSettingsJson, | ||||||
|  | @ -3102,6 +3206,38 @@ bool WebAPIRequestMapper::getChannel( | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | bool WebAPIRequestMapper::getChannelActions( | ||||||
|  |     const QString& channelActionsKey, | ||||||
|  |     SWGSDRangel::SWGChannelActions *channelActions, | ||||||
|  |     const QJsonObject& channelActionsJson, | ||||||
|  |     QStringList& channelActionsKeys | ||||||
|  | ) | ||||||
|  | { | ||||||
|  |     QStringList channelKeys = channelActionsJson.keys(); | ||||||
|  | 
 | ||||||
|  |     if (channelKeys.contains(channelActionsKey) && channelActionsJson[channelActionsKey].isObject()) | ||||||
|  |     { | ||||||
|  |         QJsonObject actionsJsonObject = channelActionsJson[channelActionsKey].toObject(); | ||||||
|  |         channelActionsKeys = actionsJsonObject.keys(); | ||||||
|  | 
 | ||||||
|  |         if (channelActionsKey == "FileSourceActions") | ||||||
|  |         { | ||||||
|  |             channelActions->setFileSourceActions(new SWGSDRangel::SWGFileSourceActions()); | ||||||
|  |             channelActions->getFileSourceActions()->fromJsonObject(actionsJsonObject); | ||||||
|  |         } | ||||||
|  |         else | ||||||
|  |         { | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  |     else | ||||||
|  |     { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| bool WebAPIRequestMapper::appendPresetDeviceKeys( | bool WebAPIRequestMapper::appendPresetDeviceKeys( | ||||||
|         SWGSDRangel::SWGDeviceConfig *device, |         SWGSDRangel::SWGDeviceConfig *device, | ||||||
|         const QJsonObject& deviceSettngsJson, |         const QJsonObject& deviceSettngsJson, | ||||||
|  | @ -3130,7 +3266,7 @@ bool WebAPIRequestMapper::appendPresetDeviceKeys( | ||||||
|         { |         { | ||||||
|             SWGSDRangel::SWGDeviceSettings *deviceSettings = new SWGSDRangel::SWGDeviceSettings(); |             SWGSDRangel::SWGDeviceSettings *deviceSettings = new SWGSDRangel::SWGDeviceSettings(); | ||||||
|             device->setConfig(deviceSettings); |             device->setConfig(deviceSettings); | ||||||
|             return getDevice(m_deviceIdToSettingsKey[*deviceId], deviceSettings, deviceSettngsJson["config"].toObject(), devicelKeys.m_deviceKeys); |             return getDeviceSettings(m_deviceIdToSettingsKey[*deviceId], deviceSettings, deviceSettngsJson["config"].toObject(), devicelKeys.m_deviceKeys); | ||||||
|         } |         } | ||||||
|         else |         else | ||||||
|         { |         { | ||||||
|  | @ -3143,7 +3279,7 @@ bool WebAPIRequestMapper::appendPresetDeviceKeys( | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool WebAPIRequestMapper::getDevice( | bool WebAPIRequestMapper::getDeviceSettings( | ||||||
|         const QString& deviceSettingsKey, |         const QString& deviceSettingsKey, | ||||||
|         SWGSDRangel::SWGDeviceSettings *deviceSettings, |         SWGSDRangel::SWGDeviceSettings *deviceSettings, | ||||||
|         const QJsonObject& deviceSettingsJson, |         const QJsonObject& deviceSettingsJson, | ||||||
|  | @ -3315,6 +3451,39 @@ bool WebAPIRequestMapper::getDevice( | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | bool WebAPIRequestMapper::getDeviceActions( | ||||||
|  |         const QString& deviceActionsKey, | ||||||
|  |         SWGSDRangel::SWGDeviceActions *deviceActions, | ||||||
|  |         const QJsonObject& deviceActionsJson, | ||||||
|  |         QStringList& deviceActionsKeys | ||||||
|  | ) | ||||||
|  | { | ||||||
|  |     QStringList deviceKeys = deviceActionsJson.keys(); | ||||||
|  | 
 | ||||||
|  |     if (deviceKeys.contains(deviceActionsKey) && deviceActionsJson[deviceActionsKey].isObject()) | ||||||
|  |     { | ||||||
|  |         QJsonObject actionsJsonObject = deviceActionsJson[deviceActionsKey].toObject(); | ||||||
|  |         deviceActionsKeys = actionsJsonObject.keys(); | ||||||
|  | 
 | ||||||
|  |         if (deviceActionsKey == "rtlSdrActions") | ||||||
|  |         { | ||||||
|  |             deviceActions->setRtlSdrActions(new SWGSDRangel::SWGRtlSdrActions()); | ||||||
|  |             deviceActions->getRtlSdrActions()->fromJsonObject(actionsJsonObject); | ||||||
|  |         } | ||||||
|  |         else | ||||||
|  |         { | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  |     else | ||||||
|  |     { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void WebAPIRequestMapper::appendSettingsSubKeys( | void WebAPIRequestMapper::appendSettingsSubKeys( | ||||||
|         const QJsonObject& parentSettingsJsonObject, |         const QJsonObject& parentSettingsJsonObject, | ||||||
|         QJsonObject& childSettingsJsonObject, |         QJsonObject& childSettingsJsonObject, | ||||||
|  |  | ||||||
|  | @ -88,14 +88,16 @@ private: | ||||||
|     void devicesetChannelIndexService(const std::string& deviceSetIndexStr, const std::string& channelIndexStr, qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response); |     void devicesetChannelIndexService(const std::string& deviceSetIndexStr, const std::string& channelIndexStr, qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response); | ||||||
|     void devicesetChannelSettingsService(const std::string& deviceSetIndexStr, const std::string& channelIndexStr, qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response); |     void devicesetChannelSettingsService(const std::string& deviceSetIndexStr, const std::string& channelIndexStr, qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response); | ||||||
|     void devicesetChannelReportService(const std::string& deviceSetIndexStr, const std::string& channelIndexStr, qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response); |     void devicesetChannelReportService(const std::string& deviceSetIndexStr, const std::string& channelIndexStr, qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response); | ||||||
|     void devicesetChannelActtionsService(const std::string& deviceSetIndexStr, const std::string& channelIndexStr, qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response); |     void devicesetChannelActionsService(const std::string& deviceSetIndexStr, const std::string& channelIndexStr, qtwebapp::HttpRequest& request, qtwebapp::HttpResponse& response); | ||||||
| 
 | 
 | ||||||
|     bool validatePresetTransfer(SWGSDRangel::SWGPresetTransfer& presetTransfer); |     bool validatePresetTransfer(SWGSDRangel::SWGPresetTransfer& presetTransfer); | ||||||
|     bool validatePresetIdentifer(SWGSDRangel::SWGPresetIdentifier& presetIdentifier); |     bool validatePresetIdentifer(SWGSDRangel::SWGPresetIdentifier& presetIdentifier); | ||||||
|     bool validatePresetExport(SWGSDRangel::SWGPresetExport& presetExport); |     bool validatePresetExport(SWGSDRangel::SWGPresetExport& presetExport); | ||||||
|     bool validateDeviceListItem(SWGSDRangel::SWGDeviceListItem& deviceListItem, QJsonObject& jsonObject); |     bool validateDeviceListItem(SWGSDRangel::SWGDeviceListItem& deviceListItem, QJsonObject& jsonObject); | ||||||
|     bool validateDeviceSettings(SWGSDRangel::SWGDeviceSettings& deviceSettings, QJsonObject& jsonObject, QStringList& deviceSettingsKeys); |     bool validateDeviceSettings(SWGSDRangel::SWGDeviceSettings& deviceSettings, QJsonObject& jsonObject, QStringList& deviceSettingsKeys); | ||||||
|     bool validateChannelSettings(SWGSDRangel::SWGChannelSettings& deviceSettings, QJsonObject& jsonObject, QStringList& channelSettingsKeys); |     bool validateDeviceActions(SWGSDRangel::SWGDeviceActions& deviceActions, QJsonObject& jsonObject, QStringList& deviceActionsKeys); | ||||||
|  |     bool validateChannelSettings(SWGSDRangel::SWGChannelSettings& channelSettings, QJsonObject& jsonObject, QStringList& channelSettingsKeys); | ||||||
|  |     bool validateChannelActions(SWGSDRangel::SWGChannelActions& channelActions, QJsonObject& jsonObject, QStringList& channelActionsKeys); | ||||||
|     bool validateAudioInputDevice(SWGSDRangel::SWGAudioInputDevice& audioInputDevice, QJsonObject& jsonObject, QStringList& audioInputDeviceKeys); |     bool validateAudioInputDevice(SWGSDRangel::SWGAudioInputDevice& audioInputDevice, QJsonObject& jsonObject, QStringList& audioInputDeviceKeys); | ||||||
|     bool validateAudioOutputDevice(SWGSDRangel::SWGAudioOutputDevice& audioOutputDevice, QJsonObject& jsonObject, QStringList& audioOutputDeviceKeys); |     bool validateAudioOutputDevice(SWGSDRangel::SWGAudioOutputDevice& audioOutputDevice, QJsonObject& jsonObject, QStringList& audioOutputDeviceKeys); | ||||||
|     bool validateAMBEDevices(SWGSDRangel::SWGAMBEDevices& ambeDevices, QJsonObject& jsonObject); |     bool validateAMBEDevices(SWGSDRangel::SWGAMBEDevices& ambeDevices, QJsonObject& jsonObject); | ||||||
|  | @ -113,24 +115,38 @@ private: | ||||||
|             WebAPIAdapterInterface::ChannelKeys& channelKeys |             WebAPIAdapterInterface::ChannelKeys& channelKeys | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|     bool getChannel( |     bool getChannelSettings( | ||||||
|         const QString& channelSettingsKey, |         const QString& channelSettingsKey, | ||||||
|         SWGSDRangel::SWGChannelSettings *channelSettings, |         SWGSDRangel::SWGChannelSettings *channelSettings, | ||||||
|         const QJsonObject& channelSettingsJson, |         const QJsonObject& channelSettingsJson, | ||||||
|         QStringList& channelSettingsKeys |         QStringList& channelSettingsKeys | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|  |     bool getChannelActions( | ||||||
|  |         const QString& channelActionsKey, | ||||||
|  |         SWGSDRangel::SWGChannelActions *channelActions, | ||||||
|  |         const QJsonObject& channelActionsJson, | ||||||
|  |         QStringList& channelSettingsKeys | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|     bool appendPresetDeviceKeys( |     bool appendPresetDeviceKeys( | ||||||
|             SWGSDRangel::SWGDeviceConfig *device, |             SWGSDRangel::SWGDeviceConfig *device, | ||||||
|             const QJsonObject& deviceSettngsJson, |             const QJsonObject& deviceSettngsJson, | ||||||
|             WebAPIAdapterInterface::DeviceKeys& devicelKeys |             WebAPIAdapterInterface::DeviceKeys& devicelKeys | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|     bool getDevice( |     bool getDeviceSettings( | ||||||
|         const QString& deviceSettingsKey, |         const QString& deviceSettingsKey, | ||||||
|         SWGSDRangel::SWGDeviceSettings *deviceSettings, |         SWGSDRangel::SWGDeviceSettings *deviceSettings, | ||||||
|         const QJsonObject& deviceSettingsJson, |         const QJsonObject& deviceSettingsJson, | ||||||
|         QStringList& deviceSettingsKeys |         QStringList& deviceActionsKeys | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     bool getDeviceActions( | ||||||
|  |         const QString& deviceActionsKey, | ||||||
|  |         SWGSDRangel::SWGDeviceActions *deviceActions, | ||||||
|  |         const QJsonObject& deviceActionsJson, | ||||||
|  |         QStringList& deviceActionsKeys | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|     void appendSettingsSubKeys( |     void appendSettingsSubKeys( | ||||||
|  | @ -173,6 +189,14 @@ private: | ||||||
|     static const QMap<QString, QString> m_channelTypeToSettingsKey; |     static const QMap<QString, QString> m_channelTypeToSettingsKey; | ||||||
|     static const QMap<QString, QString> m_sourceDeviceHwIdToSettingsKey; |     static const QMap<QString, QString> m_sourceDeviceHwIdToSettingsKey; | ||||||
|     static const QMap<QString, QString> m_sinkDeviceHwIdToSettingsKey; |     static const QMap<QString, QString> m_sinkDeviceHwIdToSettingsKey; | ||||||
|  | <<<<<<< ours | ||||||
|  | ======= | ||||||
|  |     static const QMap<QString, QString> m_mimoDeviceHwIdToSettingsKey; | ||||||
|  |     static const QMap<QString, QString> m_channelTypeToActionsKey; | ||||||
|  |     static const QMap<QString, QString> m_sourceDeviceHwIdToActionsKey; | ||||||
|  |     static const QMap<QString, QString> m_sinkDeviceHwIdToActionsKey; | ||||||
|  |     static const QMap<QString, QString> m_mimoDeviceHwIdToActionsKey; | ||||||
|  | >>>>>>> theirs | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #endif /* SDRBASE_WEBAPI_WEBAPIREQUESTMAPPER_H_ */ | #endif /* SDRBASE_WEBAPI_WEBAPIREQUESTMAPPER_H_ */ | ||||||
|  |  | ||||||
|  | @ -1569,6 +1569,7 @@ int WebAPIAdapterGUI::devicesetDeviceSettingsGet( | ||||||
| 
 | 
 | ||||||
| int WebAPIAdapterGUI::devicesetDeviceActionsPost( | int WebAPIAdapterGUI::devicesetDeviceActionsPost( | ||||||
|         int deviceSetIndex, |         int deviceSetIndex, | ||||||
|  |         const QStringList& deviceActionsKeys, | ||||||
|         SWGSDRangel::SWGDeviceActions& query, |         SWGSDRangel::SWGDeviceActions& query, | ||||||
|         SWGSDRangel::SWGSuccessResponse& response, |         SWGSDRangel::SWGSuccessResponse& response, | ||||||
|         SWGSDRangel::SWGErrorResponse& error) |         SWGSDRangel::SWGErrorResponse& error) | ||||||
|  | @ -1594,7 +1595,7 @@ int WebAPIAdapterGUI::devicesetDeviceActionsPost( | ||||||
|             else |             else | ||||||
|             { |             { | ||||||
|                 DeviceSampleSource *source = deviceSet->m_deviceAPI->getSampleSource(); |                 DeviceSampleSource *source = deviceSet->m_deviceAPI->getSampleSource(); | ||||||
|                 int res = source->webapiActionsPost(query, *error.getMessage()); |                 int res = source->webapiActionsPost(deviceActionsKeys, query, *error.getMessage()); | ||||||
| 
 | 
 | ||||||
|                 if (res/100 == 2) |                 if (res/100 == 2) | ||||||
|                 { |                 { | ||||||
|  | @ -1620,7 +1621,7 @@ int WebAPIAdapterGUI::devicesetDeviceActionsPost( | ||||||
|             else |             else | ||||||
|             { |             { | ||||||
|                 DeviceSampleSink *sink = deviceSet->m_deviceAPI->getSampleSink(); |                 DeviceSampleSink *sink = deviceSet->m_deviceAPI->getSampleSink(); | ||||||
|                 int res = sink->webapiActionsPost(query, *error.getMessage()); |                 int res = sink->webapiActionsPost(deviceActionsKeys, query, *error.getMessage()); | ||||||
| 
 | 
 | ||||||
|                 if (res/100 == 2) |                 if (res/100 == 2) | ||||||
|                 { |                 { | ||||||
|  | @ -1646,7 +1647,7 @@ int WebAPIAdapterGUI::devicesetDeviceActionsPost( | ||||||
|             else |             else | ||||||
|             { |             { | ||||||
|                 DeviceSampleMIMO *mimo = deviceSet->m_deviceAPI->getSampleMIMO(); |                 DeviceSampleMIMO *mimo = deviceSet->m_deviceAPI->getSampleMIMO(); | ||||||
|                 int res = mimo->webapiActionsPost(query, *error.getMessage()); |                 int res = mimo->webapiActionsPost(deviceActionsKeys, query, *error.getMessage()); | ||||||
| 
 | 
 | ||||||
|                 if (res/100 == 2) |                 if (res/100 == 2) | ||||||
|                 { |                 { | ||||||
|  | @ -2389,6 +2390,7 @@ int WebAPIAdapterGUI::devicesetChannelReportGet( | ||||||
| int WebAPIAdapterGUI::devicesetChannelActionsPost( | int WebAPIAdapterGUI::devicesetChannelActionsPost( | ||||||
|         int deviceSetIndex, |         int deviceSetIndex, | ||||||
|         int channelIndex, |         int channelIndex, | ||||||
|  |         const QStringList& channelActionsKeys, | ||||||
|         SWGSDRangel::SWGChannelActions& query, |         SWGSDRangel::SWGChannelActions& query, | ||||||
|         SWGSDRangel::SWGSuccessResponse& response, |         SWGSDRangel::SWGSuccessResponse& response, | ||||||
|         SWGSDRangel::SWGErrorResponse& error) |         SWGSDRangel::SWGErrorResponse& error) | ||||||
|  | @ -2415,7 +2417,7 @@ int WebAPIAdapterGUI::devicesetChannelActionsPost( | ||||||
| 
 | 
 | ||||||
|                 if (channelType == *query.getChannelType()) |                 if (channelType == *query.getChannelType()) | ||||||
|                 { |                 { | ||||||
|                     int res = channelAPI->webapiActionsPost(query, *error.getMessage()); |                     int res = channelAPI->webapiActionsPost(channelActionsKeys, query, *error.getMessage()); | ||||||
| 
 | 
 | ||||||
|                     if (res/100 == 2) |                     if (res/100 == 2) | ||||||
|                     { |                     { | ||||||
|  | @ -2451,7 +2453,7 @@ int WebAPIAdapterGUI::devicesetChannelActionsPost( | ||||||
| 
 | 
 | ||||||
|                 if (channelType == *query.getChannelType()) |                 if (channelType == *query.getChannelType()) | ||||||
|                 { |                 { | ||||||
|                     int res = channelAPI->webapiActionsPost(query, *error.getMessage()); |                     int res = channelAPI->webapiActionsPost(channelActionsKeys, query, *error.getMessage()); | ||||||
| 
 | 
 | ||||||
|                     if (res/100 == 2) |                     if (res/100 == 2) | ||||||
|                     { |                     { | ||||||
|  | @ -2503,7 +2505,7 @@ int WebAPIAdapterGUI::devicesetChannelActionsPost( | ||||||
| 
 | 
 | ||||||
|                 if (channelType == *query.getChannelType()) |                 if (channelType == *query.getChannelType()) | ||||||
|                 { |                 { | ||||||
|                     int res = channelAPI->webapiActionsPost(query, *error.getMessage()); |                     int res = channelAPI->webapiActionsPost(channelActionsKeys, query, *error.getMessage()); | ||||||
|                     if (res/100 == 2) |                     if (res/100 == 2) | ||||||
|                     { |                     { | ||||||
|                         response.init(); |                         response.init(); | ||||||
|  |  | ||||||
|  | @ -225,6 +225,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     virtual int devicesetDeviceActionsPost( |     virtual int devicesetDeviceActionsPost( | ||||||
|             int deviceSetIndex, |             int deviceSetIndex, | ||||||
|  |             const QStringList& deviceActionsKeys, | ||||||
|             SWGSDRangel::SWGDeviceActions& query, |             SWGSDRangel::SWGDeviceActions& query, | ||||||
|             SWGSDRangel::SWGSuccessResponse& response, |             SWGSDRangel::SWGSuccessResponse& response, | ||||||
|             SWGSDRangel::SWGErrorResponse& error); |             SWGSDRangel::SWGErrorResponse& error); | ||||||
|  | @ -300,6 +301,7 @@ public: | ||||||
|     virtual int devicesetChannelActionsPost( |     virtual int devicesetChannelActionsPost( | ||||||
|             int deviceSetIndex, |             int deviceSetIndex, | ||||||
|             int channelIndex, |             int channelIndex, | ||||||
|  |             const QStringList& channelActionsKeys, | ||||||
|             SWGSDRangel::SWGChannelActions& query, |             SWGSDRangel::SWGChannelActions& query, | ||||||
|             SWGSDRangel::SWGSuccessResponse& response, |             SWGSDRangel::SWGSuccessResponse& response, | ||||||
|             SWGSDRangel::SWGErrorResponse& error); |             SWGSDRangel::SWGErrorResponse& error); | ||||||
|  |  | ||||||
|  | @ -1666,6 +1666,7 @@ int WebAPIAdapterSrv::devicesetDeviceSettingsGet( | ||||||
| 
 | 
 | ||||||
| int WebAPIAdapterSrv::devicesetDeviceActionsPost( | int WebAPIAdapterSrv::devicesetDeviceActionsPost( | ||||||
|         int deviceSetIndex, |         int deviceSetIndex, | ||||||
|  |         const QStringList& deviceActionsKeys, | ||||||
|         SWGSDRangel::SWGDeviceActions& query, |         SWGSDRangel::SWGDeviceActions& query, | ||||||
|         SWGSDRangel::SWGSuccessResponse& response, |         SWGSDRangel::SWGSuccessResponse& response, | ||||||
|         SWGSDRangel::SWGErrorResponse& error) |         SWGSDRangel::SWGErrorResponse& error) | ||||||
|  | @ -1691,7 +1692,7 @@ int WebAPIAdapterSrv::devicesetDeviceActionsPost( | ||||||
|             else |             else | ||||||
|             { |             { | ||||||
|                 DeviceSampleSource *source = deviceSet->m_deviceAPI->getSampleSource(); |                 DeviceSampleSource *source = deviceSet->m_deviceAPI->getSampleSource(); | ||||||
|                 int res = source->webapiActionsPost(query, *error.getMessage()); |                 int res = source->webapiActionsPost(deviceActionsKeys, query, *error.getMessage()); | ||||||
| 
 | 
 | ||||||
|                 if (res/100 == 2) |                 if (res/100 == 2) | ||||||
|                 { |                 { | ||||||
|  | @ -1717,7 +1718,7 @@ int WebAPIAdapterSrv::devicesetDeviceActionsPost( | ||||||
|             else |             else | ||||||
|             { |             { | ||||||
|                 DeviceSampleSink *sink = deviceSet->m_deviceAPI->getSampleSink(); |                 DeviceSampleSink *sink = deviceSet->m_deviceAPI->getSampleSink(); | ||||||
|                 int res = sink->webapiActionsPost(query, *error.getMessage()); |                 int res = sink->webapiActionsPost(deviceActionsKeys, query, *error.getMessage()); | ||||||
| 
 | 
 | ||||||
|                 if (res/100 == 2) |                 if (res/100 == 2) | ||||||
|                 { |                 { | ||||||
|  | @ -1743,7 +1744,7 @@ int WebAPIAdapterSrv::devicesetDeviceActionsPost( | ||||||
|             else |             else | ||||||
|             { |             { | ||||||
|                 DeviceSampleMIMO *mimo = deviceSet->m_deviceAPI->getSampleMIMO(); |                 DeviceSampleMIMO *mimo = deviceSet->m_deviceAPI->getSampleMIMO(); | ||||||
|                 int res = mimo->webapiActionsPost(query, *error.getMessage()); |                 int res = mimo->webapiActionsPost(deviceActionsKeys, query, *error.getMessage()); | ||||||
| 
 | 
 | ||||||
|                 if (res/100 == 2) |                 if (res/100 == 2) | ||||||
|                 { |                 { | ||||||
|  | @ -2485,6 +2486,7 @@ int WebAPIAdapterSrv::devicesetChannelReportGet( | ||||||
| int WebAPIAdapterSrv::devicesetChannelActionsPost( | int WebAPIAdapterSrv::devicesetChannelActionsPost( | ||||||
|         int deviceSetIndex, |         int deviceSetIndex, | ||||||
|         int channelIndex, |         int channelIndex, | ||||||
|  |         const QStringList& channelActionsKeys, | ||||||
|         SWGSDRangel::SWGChannelActions& query, |         SWGSDRangel::SWGChannelActions& query, | ||||||
|         SWGSDRangel::SWGSuccessResponse& response, |         SWGSDRangel::SWGSuccessResponse& response, | ||||||
|         SWGSDRangel::SWGErrorResponse& error) |         SWGSDRangel::SWGErrorResponse& error) | ||||||
|  | @ -2511,7 +2513,7 @@ int WebAPIAdapterSrv::devicesetChannelActionsPost( | ||||||
| 
 | 
 | ||||||
|                 if (channelType == *query.getChannelType()) |                 if (channelType == *query.getChannelType()) | ||||||
|                 { |                 { | ||||||
|                     int res = channelAPI->webapiActionsPost(query, *error.getMessage()); |                     int res = channelAPI->webapiActionsPost(channelActionsKeys, query, *error.getMessage()); | ||||||
| 
 | 
 | ||||||
|                     if (res/100 == 2) |                     if (res/100 == 2) | ||||||
|                     { |                     { | ||||||
|  | @ -2547,7 +2549,7 @@ int WebAPIAdapterSrv::devicesetChannelActionsPost( | ||||||
| 
 | 
 | ||||||
|                 if (channelType == *query.getChannelType()) |                 if (channelType == *query.getChannelType()) | ||||||
|                 { |                 { | ||||||
|                     int res = channelAPI->webapiActionsPost(query, *error.getMessage()); |                     int res = channelAPI->webapiActionsPost(channelActionsKeys, query, *error.getMessage()); | ||||||
| 
 | 
 | ||||||
|                     if (res/100 == 2) |                     if (res/100 == 2) | ||||||
|                     { |                     { | ||||||
|  | @ -2599,7 +2601,7 @@ int WebAPIAdapterSrv::devicesetChannelActionsPost( | ||||||
| 
 | 
 | ||||||
|                 if (channelType == *query.getChannelType()) |                 if (channelType == *query.getChannelType()) | ||||||
|                 { |                 { | ||||||
|                     int res = channelAPI->webapiActionsPost(query, *error.getMessage()); |                     int res = channelAPI->webapiActionsPost(channelActionsKeys, query, *error.getMessage()); | ||||||
|                     if (res/100 == 2) |                     if (res/100 == 2) | ||||||
|                     { |                     { | ||||||
|                         response.init(); |                         response.init(); | ||||||
|  |  | ||||||
|  | @ -235,6 +235,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     virtual int devicesetDeviceActionsPost( |     virtual int devicesetDeviceActionsPost( | ||||||
|             int deviceSetIndex, |             int deviceSetIndex, | ||||||
|  |             const QStringList& deviceActionsKeys, | ||||||
|             SWGSDRangel::SWGDeviceActions& query, |             SWGSDRangel::SWGDeviceActions& query, | ||||||
|             SWGSDRangel::SWGSuccessResponse& response, |             SWGSDRangel::SWGSuccessResponse& response, | ||||||
|             SWGSDRangel::SWGErrorResponse& error); |             SWGSDRangel::SWGErrorResponse& error); | ||||||
|  | @ -310,6 +311,7 @@ public: | ||||||
|     virtual int devicesetChannelActionsPost( |     virtual int devicesetChannelActionsPost( | ||||||
|             int deviceSetIndex, |             int deviceSetIndex, | ||||||
|             int channelIndex, |             int channelIndex, | ||||||
|  |             const QStringList& channelActionsKeys, | ||||||
|             SWGSDRangel::SWGChannelActions& query, |             SWGSDRangel::SWGChannelActions& query, | ||||||
|             SWGSDRangel::SWGSuccessResponse& response, |             SWGSDRangel::SWGSuccessResponse& response, | ||||||
|             SWGSDRangel::SWGErrorResponse& error); |             SWGSDRangel::SWGErrorResponse& error); | ||||||
|  |  | ||||||
		Ładowanie…
	
		Reference in New Issue
	
	 f4exb
						f4exb