2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								///////////////////////////////////////////////////////////////////////////////////
  
						 
					
						
							
								
									
										
										
										
											2023-11-18 10:07:41 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Copyright (C) 2015-2020, 2022 Edouard Griffiths, F4EXB <f4exb06@gmail.com>    //
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Copyright (C) 2018 beta-tester <alpha-beta-release@gmx.net>                   //
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Copyright (C) 2022 Jon Beniston, M7RCE <jon@beniston.com>                     //
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Copyright (C) 2023 Daniele Forsi <iu5hkx@gmail.com>                           //
  
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//                                                                               //
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 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                  //
  
						 
					
						
							
								
									
										
										
										
											2019-04-11 06:57:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// (at your option) any later version.                                           //
  
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//                                                                               //
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 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  <string.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <errno.h> 
  
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  <QDebug> 
  
						 
					
						
							
								
									
										
										
										
											2018-05-26 01:43:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <QList> 
  
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <QNetworkReply> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <QBuffer> 
  
						 
					
						
							
								
									
										
										
										
											2022-09-28 21:34:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <QThread> 
  
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-14 18:15:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "SWGDeviceSettings.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "SWGDeviceState.h" 
  
						 
					
						
							
								
									
										
										
										
											2018-05-26 01:43:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "SWGDeviceReport.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "SWGAirspyReport.h" 
  
						 
					
						
							
								
									
										
										
										
											2017-12-14 18:15:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "airspyinput.h" 
  
						 
					
						
							
								
									
										
										
										
											2018-01-11 00:17:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "airspyplugin.h" 
  
						 
					
						
							
								
									
										
										
										
											2016-10-11 01:17:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-05-08 22:11:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "device/deviceapi.h" 
  
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "dsp/dspcommands.h" 
  
						 
					
						
							
								
									
										
										
										
											2015-09-30 13:53:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "airspysettings.h" 
  
						 
					
						
							
								
									
										
										
										
											2020-07-12 01:51:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "airspyworker.h" 
  
						 
					
						
							
								
									
										
										
										
											2022-12-22 11:04:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef ANDROID 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "util/android.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								MESSAGE_CLASS_DEFINITION ( AirspyInput : : MsgConfigureAirspy ,  Message )  
						 
					
						
							
								
									
										
										
										
											2017-12-14 18:02:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								MESSAGE_CLASS_DEFINITION ( AirspyInput : : MsgStartStop ,  Message )  
						 
					
						
							
								
									
										
										
										
											2017-09-25 23:07:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  qint64  AirspyInput : : loLowLimitFreq  =  24000000L ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  qint64  AirspyInput : : loHighLimitFreq  =  1900000000L ;  
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-05-08 22:11:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								AirspyInput : : AirspyInput ( DeviceAPI  * deviceAPI )  :  
						 
					
						
							
								
									
										
										
										
											2016-05-16 02:14:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m_deviceAPI ( deviceAPI ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									m_settings ( ) , 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-21 11:46:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									m_dev ( nullptr ) , 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-12 01:51:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									m_airspyWorker ( nullptr ) , 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-28 21:34:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m_airspyWorkerThread ( nullptr ) , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									m_deviceDescription ( " Airspy " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									m_running ( false ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2022-03-17 21:10:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m_sampleFifo . setLabel ( m_deviceDescription ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    openDevice ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-21 00:27:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m_deviceAPI - > setNbSourceStreams ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    m_networkManager  =  new  QNetworkAccessManager ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-23 22:32:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    QObject : : connect ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m_networkManager , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        & QNetworkAccessManager : : finished , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        & AirspyInput : : networkManagerFinished 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								AirspyInput : : ~ AirspyInput ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2022-03-23 22:32:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    QObject : : disconnect ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m_networkManager , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        & QNetworkAccessManager : : finished , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        & AirspyInput : : networkManagerFinished 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    delete  m_networkManager ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( m_running )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        stop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    closeDevice ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-09-15 02:32:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  AirspyInput : : destroy ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    delete  this ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  AirspyInput : : openDevice ( )  
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( m_dev  ! =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        closeDevice ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    airspy_error  rc ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    rc  =  ( airspy_error )  airspy_init ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( rc  ! =  AIRSPY_SUCCESS ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        qCritical ( " AirspyInput::start: failed to initiate Airspy library %s " ,  airspy_error_name ( rc ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! m_sampleFifo . setSize ( 1 < < 19 ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        qCritical ( " AirspyInput::start: could not allocate SampleFifo " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-12-22 11:04:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef ANDROID 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  fd ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    QString  serial  =  m_deviceAPI - > getSamplingDeviceSerial ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ( fd  =  Android : : openUSBDevice ( serial ) )  <  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        qCritical ( " AirspyInput::openDevice: could not open USB device %s " ,  qPrintable ( serial ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( airspy_open_fd ( & m_dev ,  fd )  ! =  AIRSPY_SUCCESS ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        qCritical ( " AirspyInput::openDevice: could not open Airspy: %s " ,  qPrintable ( serial ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
									
										
										
										
											2019-05-08 22:11:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  device  =  m_deviceAPI - > getSamplingDeviceSequence ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ( m_dev  =  open_airspy_from_sequence ( device ) )  = =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        qCritical ( " AirspyInput::start: could not open Airspy #%d " ,  device ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-22 11:04:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-30 03:13:07 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef LIBAIRSPY_DEFAULT_RATES 
  
						 
					
						
							
								
									
										
										
										
											2023-07-23 16:44:42 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    qDebug ( " AirspyInput::start: default rates " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-30 03:13:07 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m_sampleRates . clear ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    m_sampleRates . push_back ( 10000000 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    m_sampleRates . push_back ( 2500000 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    uint32_t  nbSampleRates ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    uint32_t  * sampleRates ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    airspy_get_samplerates ( m_dev ,  & nbSampleRates ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    sampleRates  =  new  uint32_t [ nbSampleRates ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    airspy_get_samplerates ( m_dev ,  sampleRates ,  nbSampleRates ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( nbSampleRates  = =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        qCritical ( " AirspyInput::start: could not obtain Airspy sample rates " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        qDebug ( " AirspyInput::start: %d sample rates " ,  nbSampleRates ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m_sampleRates . clear ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-11 03:02:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 20:13:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  ( unsigned  int  i = 0 ;  i < nbSampleRates ;  i + + ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m_sampleRates . push_back ( sampleRates [ i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        qDebug ( " AirspyInput::start: sampleRates[%d] = %u Hz " ,  i ,  sampleRates [ i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    delete [ ]  sampleRates ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//    MsgReportAirspy *message = MsgReportAirspy::create(m_sampleRates);
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//    getOutputMessageQueueToGUI()->push(message);
  
						 
					
						
							
								
									
										
										
										
											2015-09-11 03:02:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    rc  =  ( airspy_error )  airspy_set_sample_type ( m_dev ,  AIRSPY_SAMPLE_INT16_IQ ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( rc  ! =  AIRSPY_SUCCESS ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        qCritical ( " AirspyInput::start: could not set sample type to INT16_IQ " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-25 09:10:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  AirspyInput : : init ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    applySettings ( m_settings ,  QList < QString > ( ) ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-25 09:10:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-14 03:40:45 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  AirspyInput : : start ( )  
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									QMutexLocker  mutexLocker ( & m_mutex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-07-12 01:51:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( m_running )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-28 21:34:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-12 01:51:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-21 05:27:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! m_dev )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-09-28 21:34:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m_airspyWorkerThread  =  new  QThread ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-12 01:51:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									m_airspyWorker  =  new  AirspyWorker ( m_dev ,  & m_sampleFifo ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-28 21:34:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m_airspyWorker - > moveToThread ( m_airspyWorkerThread ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    QObject : : connect ( m_airspyWorkerThread ,  & QThread : : started ,  m_airspyWorker ,  & AirspyWorker : : startWork ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    QObject : : connect ( m_airspyWorkerThread ,  & QThread : : finished ,  m_airspyWorker ,  & QObject : : deleteLater ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    QObject : : connect ( m_airspyWorkerThread ,  & QThread : : finished ,  m_airspyWorkerThread ,  & QThread : : deleteLater ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-07-12 01:51:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									m_airspyWorker - > setSamplerate ( m_sampleRates [ m_settings . m_devSampleRateIndex ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									m_airspyWorker - > setLog2Decimation ( m_settings . m_log2Decim ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    m_airspyWorker - > setIQOrder ( m_settings . m_iqOrder ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									m_airspyWorker - > setFcPos ( ( int )  m_settings . m_fcPos ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-28 21:34:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m_airspyWorkerThread - > start ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-21 05:27:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m_running  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    mutexLocker . unlock ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-28 21:34:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    qDebug ( " AirspyInput::startInput: started " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    applySettings ( m_settings ,  QList < QString > ( ) ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-09-28 21:34:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  AirspyInput : : closeDevice ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2022-09-28 21:34:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( m_dev ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        airspy_stop_rx ( m_dev ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        airspy_close ( m_dev ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-28 21:34:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        m_dev  =  nullptr ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    m_deviceDescription . clear ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    airspy_exit ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								void  AirspyInput : : stop ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2022-09-28 21:34:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    QMutexLocker  mutexLocker ( & m_mutex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! m_running )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-11 03:02:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									qDebug ( " AirspyInput::stop " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-09-28 21:34:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( m_airspyWorkerThread ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-28 21:34:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        m_airspyWorkerThread - > quit ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m_airspyWorkerThread - > wait ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m_airspyWorkerThread  =  nullptr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m_airspyWorker  =  nullptr ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 08:29:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									m_running  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-28 03:21:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								QByteArray  AirspyInput : : serialize ( )  const  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  m_settings . serialize ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  AirspyInput : : deserialize ( const  QByteArray &  data )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool  success  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! m_settings . deserialize ( data ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m_settings . resetToDefaults ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        success  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    MsgConfigureAirspy *  message  =  MsgConfigureAirspy : : create ( m_settings ,  QList < QString > ( ) ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-28 03:21:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m_inputMessageQueue . push ( message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( m_guiMessageQueue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        MsgConfigureAirspy *  messageToGUI  =  MsgConfigureAirspy : : create ( m_settings ,  QList < QString > ( ) ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-28 03:21:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        m_guiMessageQueue - > push ( messageToGUI ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  success ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								const  QString &  AirspyInput : : getDeviceDescription ( )  const  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  m_deviceDescription ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  AirspyInput : : getSampleRate ( )  const  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int  rate  =  m_sampleRates [ m_settings . m_devSampleRateIndex ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  ( rate  /  ( 1 < < m_settings . m_log2Decim ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								quint64  AirspyInput : : getCenterFrequency ( )  const  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  m_settings . m_centerFrequency ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-28 03:21:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  AirspyInput : : setCenterFrequency ( qint64  centerFrequency )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AirspySettings  settings  =  m_settings ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    settings . m_centerFrequency  =  centerFrequency ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    MsgConfigureAirspy *  message  =  MsgConfigureAirspy : : create ( settings ,  QList < QString > { " centerFrequency " } ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-28 03:21:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m_inputMessageQueue . push ( message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( m_guiMessageQueue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        MsgConfigureAirspy *  messageToGUI  =  MsgConfigureAirspy : : create ( settings ,  QList < QString > { " centerFrequency " } ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-28 03:21:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        m_guiMessageQueue - > push ( messageToGUI ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								bool  AirspyInput : : handleMessage ( const  Message &  message )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( MsgConfigureAirspy : : match ( message ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										MsgConfigureAirspy &  conf  =  ( MsgConfigureAirspy & )  message ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										qDebug ( )  < <  " AirspyInput::handleMessage: MsgConfigureAirspy " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										bool  success  =  applySettings ( conf . getSettings ( ) ,  conf . getSettingsKeys ( ) ,  conf . getForce ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-11 03:02:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! success )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-11 00:17:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											qDebug ( " AirspyInput::handleMessage: Airspy config error " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-14 18:02:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    else  if  ( MsgStartStop : : match ( message ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        MsgStartStop &  cmd  =  ( MsgStartStop & )  message ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        qDebug ( )  < <  " AirspyInput::handleMessage: MsgStartStop:  "  < <  ( cmd . getStartStop ( )  ?  " start "  :  " stop " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( cmd . getStartStop ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( m_deviceAPI - > initDeviceEngine ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-08 22:11:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                m_deviceAPI - > startDeviceEngine ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-14 18:02:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-08 22:11:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            m_deviceAPI - > stopDeviceEngine ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-14 18:02:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( m_settings . m_useReverseAPI )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            webapiReverseSendStartStop ( cmd . getStartStop ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-14 18:02:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-28 03:21:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  AirspyInput : : setDeviceCenterFrequency ( quint64  freq_hz )  
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-09-27 18:32:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									qint64  df  =  ( ( qint64 ) freq_hz  *  m_settings . m_LOppmTenths )  /  10000000LL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									freq_hz  + =  df ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									airspy_error  rc  =  ( airspy_error )  airspy_set_freq ( m_dev ,  static_cast < uint32_t > ( freq_hz ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( rc  ! =  AIRSPY_SUCCESS )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-28 03:21:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										qWarning ( " AirspyInput::setDeviceCenterFrequency: could not frequency to %llu Hz " ,  freq_hz ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-11 00:17:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										qDebug ( " AirspyInput::setDeviceCenterFrequency: frequency set to %llu Hz " ,  freq_hz ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  AirspyInput : : applySettings ( const  AirspySettings &  settings ,  const  QList < QString > &  settingsKeys ,  bool  force )  
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-09-11 03:02:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									QMutexLocker  mutexLocker ( & m_mutex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									bool  forwardChange  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-25 20:13:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									airspy_error  rc  =  AIRSPY_ERROR_OTHER ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									qDebug ( )  < <  " AirspyInput::applySettings: " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < <  " force: "  < <  force 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < <  settings . getDebugString ( settingsKeys ,  force ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ( settingsKeys . contains ( " dcBlock " ) )  | | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ( settingsKeys . contains ( " iqCorrection " ) )  | |  force ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-11 00:17:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										m_deviceAPI - > configureCorrections ( settings . m_dcBlock ,  settings . m_iqCorrection ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-30 13:23:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ( settingsKeys . contains ( " devSampleRateIndex " ) )  | |  force ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-11 03:02:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										forwardChange  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( m_dev  ! =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											rc  =  ( airspy_error )  airspy_set_samplerate ( m_dev ,  static_cast < airspy_samplerate_t > ( settings . m_devSampleRateIndex ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( rc  ! =  AIRSPY_SUCCESS ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												qCritical ( " AirspyInput::applySettings: could not set sample rate index %u (%d S/s): %s " ,  settings . m_devSampleRateIndex ,  m_sampleRates [ settings . m_devSampleRateIndex ] ,  airspy_error_name ( rc ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-12 01:51:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											else  if  ( m_airspyWorker ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												qDebug ( " AirspyInput::applySettings: sample rate set to index: %u (%d S/s) " ,  settings . m_devSampleRateIndex ,  m_sampleRates [ settings . m_devSampleRateIndex ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-12 01:51:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												m_airspyWorker - > setSamplerate ( m_sampleRates [ settings . m_devSampleRateIndex ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ( settingsKeys . contains ( " log2Decim " ) )  | |  force ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										forwardChange  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-07-12 01:51:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( m_airspyWorker ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-12 01:51:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											m_airspyWorker - > setLog2Decimation ( settings . m_log2Decim ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-20 03:28:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											qDebug ( )  < <  " AirspyInput: set decimation to  "  < <  ( 1 < < settings . m_log2Decim ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ( settingsKeys . contains ( " iqOrder " ) )  | |  force ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-21 11:46:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-12 01:51:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( m_airspyWorker )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											m_airspyWorker - > setIQOrder ( settings . m_iqOrder ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-21 11:46:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ( settingsKeys . contains ( " centerFrequency " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        | |  ( settingsKeys . contains ( " transverterDeltaFrequency " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        | |  ( settingsKeys . contains ( " log2Decim " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        | |  ( settingsKeys . contains ( " fcPos " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        | |  ( settingsKeys . contains ( " devSampleRateIndex " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        | |  ( settingsKeys . contains ( " transverterMode " ) )  | |  force ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-10 14:51:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        qint64  deviceCenterFrequency  =  DeviceSampleSource : : calculateDeviceCenterFrequency ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                settings . m_centerFrequency , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                settings . m_transverterDeltaFrequency , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                settings . m_log2Decim , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ( DeviceSampleSource : : fcPos_t )  settings . m_fcPos , 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                m_sampleRates [ settings . m_devSampleRateIndex ] , 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-02 01:10:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                DeviceSampleSource : : FrequencyShiftScheme : : FSHIFT_STD , 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-10 14:51:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                settings . m_transverterMode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( m_dev  ! =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-28 03:21:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											setDeviceCenterFrequency ( deviceCenterFrequency ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										forwardChange  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ( settingsKeys . contains ( " fcPos " ) )  | |  force ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-01 06:34:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-12 01:51:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( m_airspyWorker ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-01 06:34:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-12 01:51:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											m_airspyWorker - > setFcPos ( ( int )  settings . m_fcPos ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											qDebug ( )  < <  " AirspyInput: set fc pos (enum) to  "  < <  ( int )  settings . m_fcPos ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-01 06:34:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( settingsKeys . contains ( " lnaGain " )  | |  force ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( m_dev  ! =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											rc  =  ( airspy_error )  airspy_set_lna_gain ( m_dev ,  settings . m_lnaGain ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( rc  ! =  AIRSPY_SUCCESS )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												qDebug ( " AirspyInput::applySettings: airspy_set_lna_gain failed: %s " ,  airspy_error_name ( rc ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												qDebug ( )  < <  " AirspyInput:applySettings: LNA gain set to  "  < <  settings . m_lnaGain ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( settingsKeys . contains ( " lnaAGC " )  | |  force ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 01:49:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( m_dev  ! =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											rc  =  ( airspy_error )  airspy_set_lna_agc ( m_dev ,  ( settings . m_lnaAGC  ?  1  :  0 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 01:49:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( rc  ! =  AIRSPY_SUCCESS )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 01:49:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											qDebug ( " AirspyInput::applySettings: airspy_set_lna_agc failed: %s " ,  airspy_error_name ( rc ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											qDebug ( )  < <  " AirspyInput:applySettings: LNA AGC set to  "  < <  settings . m_lnaAGC ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 01:49:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( settingsKeys . contains ( " mixerGain " )  | |  force ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( m_dev  ! =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											rc  =  ( airspy_error )  airspy_set_mixer_gain ( m_dev ,  settings . m_mixerGain ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( rc  ! =  AIRSPY_SUCCESS )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												qDebug ( " AirspyInput::applySettings: airspy_set_mixer_gain failed: %s " ,  airspy_error_name ( rc ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												qDebug ( )  < <  " AirspyInput:applySettings: mixer gain set to  "  < <  settings . m_mixerGain ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( settingsKeys . contains ( " mixerAGC " )  | |  force ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 01:49:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( m_dev  ! =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											rc  =  ( airspy_error )  airspy_set_mixer_agc ( m_dev ,  ( settings . m_mixerAGC  ?  1  :  0 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 01:49:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( rc  ! =  AIRSPY_SUCCESS )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 01:49:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											qDebug ( " AirspyInput::applySettings: airspy_set_mixer_agc failed: %s " ,  airspy_error_name ( rc ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											qDebug ( )  < <  " AirspyInput:applySettings: Mixer AGC set to  "  < <  settings . m_mixerAGC ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 01:49:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( settingsKeys . contains ( " vgaGain " )  | |  force ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( m_dev  ! =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											rc  =  ( airspy_error )  airspy_set_vga_gain ( m_dev ,  settings . m_vgaGain ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( rc  ! =  AIRSPY_SUCCESS )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												qDebug ( " AirspyInput::applySettings: airspy_set_vga_gain failed: %s " ,  airspy_error_name ( rc ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												qDebug ( )  < <  " AirspyInput:applySettings: VGA gain set to  "  < <  settings . m_vgaGain ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( settingsKeys . contains ( " biasT " )  | |  force ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( m_dev  ! =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											rc  =  ( airspy_error )  airspy_set_rf_bias ( m_dev ,  ( settings . m_biasT  ?  1  :  0 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( rc  ! =  AIRSPY_SUCCESS )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												qDebug ( " AirspyInput::applySettings: airspy_set_rf_bias failed: %s " ,  airspy_error_name ( rc ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												qDebug ( )  < <  " AirspyInput:applySettings: bias tee set to  "  < <  settings . m_biasT ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-14 18:58:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( settings . m_useReverseAPI ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 12:27:54 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        bool  fullUpdate  =  ( settingsKeys . contains ( " useReverseAPI " )  & &  settings . m_useReverseAPI )  | | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            settingsKeys . contains ( " reverseAPIAddress " )  | | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            settingsKeys . contains ( " reverseAPIPort " )  | | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            settingsKeys . contains ( " reverseAPIDeviceIndex " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        webapiReverseSendSettings ( settingsKeys ,  settings ,  fullUpdate  | |  force ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m_settings  =  settings ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m_settings . applySettings ( settingsKeys ,  settings ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									if  ( forwardChange ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-25 23:07:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										int  sampleRate  =  m_sampleRates [ m_settings . m_devSampleRateIndex ] / ( 1 < < m_settings . m_log2Decim ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										DSPSignalNotification  * notif  =  new  DSPSignalNotification ( sampleRate ,  m_settings . m_centerFrequency ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 23:40:06 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        m_deviceAPI - > getDeviceEngineInputMessageQueue ( ) - > push ( notif ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  airspy_device  * AirspyInput : : open_airspy_from_sequence ( int  sequence )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2017-05-25 20:13:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									struct  airspy_device  * devinfo ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									airspy_error  rc  =  AIRSPY_ERROR_OTHER ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-11 00:17:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  AirspyPlugin : : m_maxDevices ;  i + + ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-11 03:02:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										rc  =  ( airspy_error )  airspy_open ( & devinfo ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( rc  = =  AIRSPY_SUCCESS ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-11 00:17:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( i  = =  sequence )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  devinfo ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-11 00:17:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											    airspy_close ( devinfo ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-10 05:53:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-11 03:02:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-09 09:13:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2017-12-14 18:15:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  AirspyInput : : webapiRunGet (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SWGSDRangel : : SWGDeviceState &  response , 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-13 08:51:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        QString &  errorMessage ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-14 18:15:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2018-11-13 08:51:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ( void )  errorMessage ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-14 18:15:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m_deviceAPI - > getDeviceEngineStateStr ( * response . getState ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  200 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  AirspyInput : : webapiRun (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        bool  run , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SWGSDRangel : : SWGDeviceState &  response , 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-13 08:51:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        QString &  errorMessage ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-14 18:15:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2018-11-13 08:51:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ( void )  errorMessage ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-14 23:29:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m_deviceAPI - > getDeviceEngineStateStr ( * response . getState ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-14 18:15:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    MsgStartStop  * message  =  MsgStartStop : : create ( run ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    m_inputMessageQueue . push ( message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( m_guiMessageQueue )  // forward to GUI if any
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        MsgStartStop  * msgToGUI  =  MsgStartStop : : create ( run ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m_guiMessageQueue - > push ( msgToGUI ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  200 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-25 19:28:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  AirspyInput : : webapiSettingsGet (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                SWGSDRangel : : SWGDeviceSettings &  response , 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-13 08:51:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                QString &  errorMessage ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-25 19:28:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2018-11-13 08:51:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ( void )  errorMessage ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-25 19:28:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response . setAirspySettings ( new  SWGSDRangel : : SWGAirspySettings ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > init ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    webapiFormatDeviceSettings ( response ,  m_settings ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  200 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  AirspyInput : : webapiSettingsPutPatch (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                bool  force , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  QStringList &  deviceSettingsKeys , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                SWGSDRangel : : SWGDeviceSettings &  response ,  // query + response
 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-13 08:51:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                QString &  errorMessage ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-25 19:28:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2018-11-13 08:51:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ( void )  errorMessage ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-25 19:28:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AirspySettings  settings  =  m_settings ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 11:21:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    webapiUpdateDeviceSettings ( settings ,  deviceSettingsKeys ,  response ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-25 19:28:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    MsgConfigureAirspy  * msg  =  MsgConfigureAirspy : : create ( settings ,  deviceSettingsKeys ,  force ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 11:21:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m_inputMessageQueue . push ( msg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( m_guiMessageQueue )  // forward to GUI if any
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        MsgConfigureAirspy  * msgToGUI  =  MsgConfigureAirspy : : create ( settings ,  deviceSettingsKeys ,  force ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 11:21:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        m_guiMessageQueue - > push ( msgToGUI ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    webapiFormatDeviceSettings ( response ,  settings ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  200 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-04 20:24:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  AirspyInput : : webapiUpdateDeviceSettings (  
						 
					
						
							
								
									
										
										
										
											2019-08-03 11:21:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        AirspySettings &  settings , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  QStringList &  deviceSettingsKeys , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SWGSDRangel : : SWGDeviceSettings &  response ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2018-05-25 19:28:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " centerFrequency " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings . m_centerFrequency  =  response . getAirspySettings ( ) - > getCenterFrequency ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " LOppmTenths " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings . m_LOppmTenths  =  response . getAirspySettings ( ) - > getLOppmTenths ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " devSampleRateIndex " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings . m_devSampleRateIndex  =  response . getAirspySettings ( ) - > getDevSampleRateIndex ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " lnaGain " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings . m_lnaGain  =  response . getAirspySettings ( ) - > getLnaGain ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " mixerGain " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings . m_mixerGain  =  response . getAirspySettings ( ) - > getMixerGain ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " vgaGain " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings . m_vgaGain  =  response . getAirspySettings ( ) - > getVgaGain ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " lnaAGC " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings . m_lnaAGC  =  response . getAirspySettings ( ) - > getLnaAgc ( )  ! =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " mixerAGC " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings . m_mixerAGC  =  response . getAirspySettings ( ) - > getMixerAgc ( )  ! =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " log2Decim " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings . m_log2Decim  =  response . getAirspySettings ( ) - > getLog2Decim ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-22 02:10:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " iqOrder " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings . m_iqOrder  =  response . getAirspySettings ( ) - > getIqOrder ( )  ! =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-25 19:28:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " fcPos " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-26 02:01:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        int  fcPos  =  response . getAirspySettings ( ) - > getFcPos ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fcPos  =  fcPos  <  0  ?  0  :  fcPos  >  2  ?  2  :  fcPos ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings . m_fcPos  =  ( AirspySettings : : fcPos_t )  fcPos ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-25 19:28:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " biasT " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings . m_biasT  =  response . getAirspySettings ( ) - > getBiasT ( )  ! =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " dcBlock " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings . m_dcBlock  =  response . getAirspySettings ( ) - > getDcBlock ( )  ! =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " iqCorrection " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings . m_iqCorrection  =  response . getAirspySettings ( ) - > getIqCorrection ( )  ! =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " transverterDeltaFrequency " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings . m_transverterDeltaFrequency  =  response . getAirspySettings ( ) - > getTransverterDeltaFrequency ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " transverterMode " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings . m_transverterMode  =  response . getAirspySettings ( ) - > getTransverterMode ( )  ! =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-10 22:35:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " useReverseAPI " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-11 08:50:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        settings . m_useReverseAPI  =  response . getAirspySettings ( ) - > getUseReverseApi ( )  ! =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-10 22:35:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " reverseAPIAddress " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-11 08:50:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        settings . m_reverseAPIAddress  =  * response . getAirspySettings ( ) - > getReverseApiAddress ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-10 22:35:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " reverseAPIPort " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-11 08:50:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        settings . m_reverseAPIPort  =  response . getAirspySettings ( ) - > getReverseApiPort ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-10 22:35:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " reverseAPIDeviceIndex " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-11 08:50:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        settings . m_reverseAPIDeviceIndex  =  response . getAirspySettings ( ) - > getReverseApiDeviceIndex ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-10 22:35:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-25 19:28:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-26 01:43:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  AirspyInput : : webapiReportGet (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SWGSDRangel : : SWGDeviceReport &  response , 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-13 08:51:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        QString &  errorMessage ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-26 01:43:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2018-11-13 08:51:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ( void )  errorMessage ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-26 01:43:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response . setAirspyReport ( new  SWGSDRangel : : SWGAirspyReport ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspyReport ( ) - > init ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    webapiFormatDeviceReport ( response ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  200 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-25 19:28:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  AirspyInput : : webapiFormatDeviceSettings ( SWGSDRangel : : SWGDeviceSettings &  response ,  const  AirspySettings &  settings )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setCenterFrequency ( settings . m_centerFrequency ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setLOppmTenths ( settings . m_LOppmTenths ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setDevSampleRateIndex ( settings . m_devSampleRateIndex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setLnaGain ( settings . m_lnaGain ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setMixerGain ( settings . m_mixerGain ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setVgaGain ( settings . m_vgaGain ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setLnaAgc ( settings . m_lnaAGC  ?  1  :  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setMixerAgc ( settings . m_mixerAGC  ?  1  :  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setLog2Decim ( settings . m_log2Decim ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-22 02:10:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setIqOrder ( settings . m_iqOrder  ?  1  :  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-25 19:28:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setFcPos ( ( int )  settings . m_fcPos ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setBiasT ( settings . m_biasT  ?  1  :  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setDcBlock ( settings . m_dcBlock  ?  1  :  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setIqCorrection ( settings . m_iqCorrection  ?  1  :  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setTransverterDeltaFrequency ( settings . m_transverterDeltaFrequency ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setTransverterMode ( settings . m_transverterMode  ?  1  :  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-11 08:50:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setUseReverseApi ( settings . m_useReverseAPI  ?  1  :  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-10 22:35:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-11 08:50:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( response . getAirspySettings ( ) - > getReverseApiAddress ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        * response . getAirspySettings ( ) - > getReverseApiAddress ( )  =  settings . m_reverseAPIAddress ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-10 22:35:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-11 08:50:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        response . getAirspySettings ( ) - > setReverseApiAddress ( new  QString ( settings . m_reverseAPIAddress ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-10 22:35:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-11 08:50:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setReverseApiPort ( settings . m_reverseAPIPort ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    response . getAirspySettings ( ) - > setReverseApiDeviceIndex ( settings . m_reverseAPIDeviceIndex ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-25 19:28:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2018-05-26 01:43:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  AirspyInput : : webapiFormatDeviceReport ( SWGSDRangel : : SWGDeviceReport &  response )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2018-05-27 19:54:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    response . getAirspyReport ( ) - > setSampleRates ( new  QList < SWGSDRangel : : SWGSampleRate * > ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-26 01:43:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( std : : vector < uint32_t > : : const_iterator  it  =  getSampleRates ( ) . begin ( ) ;  it  ! =  getSampleRates ( ) . end ( ) ;  + + it ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-27 19:54:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        response . getAirspyReport ( ) - > getSampleRates ( ) - > append ( new  SWGSDRangel : : SWGSampleRate ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        response . getAirspyReport ( ) - > getSampleRates ( ) - > back ( ) - > setRate ( * it ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-26 01:43:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 10:23:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  AirspyInput : : webapiReverseSendSettings ( const  QList < QString > &  deviceSettingsKeys ,  const  AirspySettings &  settings ,  bool  force )  
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SWGSDRangel : : SWGDeviceSettings  * swgDeviceSettings  =  new  SWGSDRangel : : SWGDeviceSettings ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-07 14:43:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    swgDeviceSettings - > setDirection ( 0 ) ;  // single Rx
 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-25 13:41:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    swgDeviceSettings - > setOriginatorIndex ( m_deviceAPI - > getDeviceSetIndex ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    swgDeviceSettings - > setDeviceHwType ( new  QString ( " Airspy " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    swgDeviceSettings - > setAirspySettings ( new  SWGSDRangel : : SWGAirspySettings ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SWGSDRangel : : SWGAirspySettings  * swgAirspySettings  =  swgDeviceSettings - > getAirspySettings ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // transfer data that has been modified. When force is on transfer all data except reverse API data
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " centerFrequency " )  | |  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swgAirspySettings - > setCenterFrequency ( settings . m_centerFrequency ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " LOppmTenths " )  | |  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swgAirspySettings - > setLOppmTenths ( settings . m_LOppmTenths ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " devSampleRateIndex " )  | |  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swgAirspySettings - > setDevSampleRateIndex ( settings . m_devSampleRateIndex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " lnaGain " )  | |  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swgAirspySettings - > setLnaGain ( settings . m_lnaGain ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " mixerGain " )  | |  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swgAirspySettings - > setMixerGain ( settings . m_mixerGain ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " vgaGain " )  | |  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swgAirspySettings - > setVgaGain ( settings . m_vgaGain ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " lnaAGC " )  | |  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swgAirspySettings - > setLnaAgc ( settings . m_lnaAGC  ?  1  :  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " mixerAGC " )  | |  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swgAirspySettings - > setMixerAgc ( settings . m_mixerAGC  ?  1  :  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " log2Decim " )  | |  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swgAirspySettings - > setLog2Decim ( settings . m_log2Decim ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-22 02:10:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " iqOrder " )  | |  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swgAirspySettings - > setIqOrder ( settings . m_iqOrder  ?  1  :  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " fcPos " )  | |  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swgAirspySettings - > setFcPos ( ( int )  settings . m_fcPos ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " biasT " )  | |  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swgAirspySettings - > setBiasT ( settings . m_biasT  ?  1  :  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " dcBlock " )  | |  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swgAirspySettings - > setDcBlock ( settings . m_dcBlock  ?  1  :  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " iqCorrection " )  | |  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swgAirspySettings - > setIqCorrection ( settings . m_iqCorrection  ?  1  :  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " transverterDeltaFrequency " )  | |  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swgAirspySettings - > setTransverterDeltaFrequency ( settings . m_transverterDeltaFrequency ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( deviceSettingsKeys . contains ( " transverterMode " )  | |  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        swgAirspySettings - > setTransverterMode ( settings . m_transverterMode  ?  1  :  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    QString  deviceSettingsURL  =  QString ( " http://%1:%2/sdrangel/deviceset/%3/device/settings " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . arg ( settings . m_reverseAPIAddress ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . arg ( settings . m_reverseAPIPort ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . arg ( settings . m_reverseAPIDeviceIndex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    m_networkRequest . setUrl ( QUrl ( deviceSettingsURL ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    m_networkRequest . setHeader ( QNetworkRequest : : ContentTypeHeader ,  " application/json " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-12 18:46:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    QBuffer  * buffer  =  new  QBuffer ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    buffer - > open ( ( QBuffer : : ReadWrite ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    buffer - > write ( swgDeviceSettings - > asJson ( ) . toUtf8 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    buffer - > seek ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Always use PATCH to avoid passing reverse API settings
 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-12 18:46:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    QNetworkReply  * reply  =  m_networkManager - > sendCustomRequest ( m_networkRequest ,  " PATCH " ,  buffer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    buffer - > setParent ( reply ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    delete  swgDeviceSettings ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  AirspyInput : : webapiReverseSendStartStop ( bool  start )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2019-03-25 15:21:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    SWGSDRangel : : SWGDeviceSettings  * swgDeviceSettings  =  new  SWGSDRangel : : SWGDeviceSettings ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-07 14:43:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    swgDeviceSettings - > setDirection ( 0 ) ;  // single Rx
 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-25 15:21:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    swgDeviceSettings - > setOriginatorIndex ( m_deviceAPI - > getDeviceSetIndex ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    swgDeviceSettings - > setDeviceHwType ( new  QString ( " Airspy " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    QString  deviceSettingsURL  =  QString ( " http://%1:%2/sdrangel/deviceset/%3/device/run " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . arg ( m_settings . m_reverseAPIAddress ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . arg ( m_settings . m_reverseAPIPort ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . arg ( m_settings . m_reverseAPIDeviceIndex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    m_networkRequest . setUrl ( QUrl ( deviceSettingsURL ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-25 15:21:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m_networkRequest . setHeader ( QNetworkRequest : : ContentTypeHeader ,  " application/json " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-12 18:46:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    QBuffer  * buffer  =  new  QBuffer ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-25 15:21:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    buffer - > open ( ( QBuffer : : ReadWrite ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    buffer - > write ( swgDeviceSettings - > asJson ( ) . toUtf8 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    buffer - > seek ( 0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-12 18:46:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    QNetworkReply  * reply ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( start )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-12 18:46:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        reply  =  m_networkManager - > sendCustomRequest ( m_networkRequest ,  " POST " ,  buffer ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-12 18:46:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        reply  =  m_networkManager - > sendCustomRequest ( m_networkRequest ,  " DELETE " ,  buffer ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-14 16:58:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-12 18:46:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    buffer - > setParent ( reply ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-14 16:58:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    delete  swgDeviceSettings ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  AirspyInput : : networkManagerFinished ( QNetworkReply  * reply )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    QNetworkReply : : NetworkError  replyError  =  reply - > error ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( replyError ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        qWarning ( )  < <  " AirspyInput::networkManagerFinished: " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                < <  "  error( "  < <  ( int )  replyError 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                < <  " ):  "  < <  replyError 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                < <  " :  "  < <  reply - > errorString ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-12 18:46:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        QString  answer  =  reply - > readAll ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        answer . chop ( 1 ) ;  // remove last \n
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        qDebug ( " AirspyInput::networkManagerFinished: reply: \n %s " ,  answer . toStdString ( ) . c_str ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-12 18:46:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    reply - > deleteLater ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-25 10:38:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}