mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 04:50:34 -04:00 
			
		
		
		
	Merge branch 'develop' of bitbucket.org:k1jt/wsjtx into develop
This commit is contained in:
		
						commit
						23ca8f76c8
					
				| @ -7,6 +7,7 @@ | ||||
| #include <stdio.h> | ||||
| #include "SettingsGroup.hpp" | ||||
| #include "commons.h" | ||||
| #include <math.h> | ||||
| 
 | ||||
| extern "C" { | ||||
|   void astrosub_ (int* nyear, int* month, int* nday, double* uth, int* nfreq, | ||||
| @ -44,7 +45,7 @@ Astro::~Astro() | ||||
| } | ||||
| 
 | ||||
| void Astro::astroUpdate(QDateTime t, QString mygrid, QString hisgrid, | ||||
|                         int fQSO, int nsetftx, int ntxFreq, QString azelDir) | ||||
|                         int fQSO, int nsetftx, int ntxFreq, QString azelDir, double xavg) | ||||
| { | ||||
|   static int ntxFreq0=-99; | ||||
|   char cc[300]; | ||||
| @ -86,6 +87,65 @@ void Astro::astroUpdate(QDateTime t, QString mygrid, QString hisgrid, | ||||
|           ntsky,xnr,dgrd); | ||||
|   ui->astroTextBrowser->setText(" "+ date + "\nUTC: " + utc + "\n" + cc); | ||||
| 
 | ||||
|   double azOffset=0.0; | ||||
|   double elOffset=0.0; | ||||
|   double rad=57.2957795131; | ||||
|   int iCycle=2; | ||||
| // Are we doing pointing tests?
 | ||||
|   bool bPointing=ui->cbPointingTests->isChecked(); | ||||
|   ui->gbPointing->setVisible(bPointing); | ||||
|   if(bPointing) { | ||||
|     int nDwell=int(ui->sbDwell->value()); | ||||
|     if(ui->cbAutoCycle->isChecked()) { | ||||
|       iCycle=(t.currentSecsSinceEpoch()%(6*nDwell))/nDwell + 1; | ||||
|       if(iCycle==1) { | ||||
|         azOffset = -ui->sbOffset->value()/cos(elsun/rad); | ||||
|         ui->rb1->setChecked(true); | ||||
|       } | ||||
|       if(iCycle==2 or iCycle==5) { | ||||
|         ui->rb2->setChecked(true); | ||||
|       } | ||||
|       if(iCycle==3) { | ||||
|         azOffset = +ui->sbOffset->value()/cos(elsun/rad); | ||||
|         ui->rb3->setChecked(true); | ||||
|       } | ||||
|       if(iCycle==4) { | ||||
|         elOffset = -ui->sbOffset->value(); | ||||
|         ui->rb4->setChecked(true); | ||||
|       } | ||||
|       if(iCycle==6) { | ||||
|         elOffset = +ui->sbOffset->value(); | ||||
|         ui->rb6->setChecked(true); | ||||
|       } | ||||
|     } | ||||
|     if(ui->cbOnOff->isChecked()) { | ||||
|       iCycle=(t.currentSecsSinceEpoch()%(2*nDwell))/nDwell + 1; | ||||
|       if(iCycle==1) { | ||||
|         azOffset = -ui->sbOffset->value()/cos(elsun/rad); | ||||
|         ui->rb1->setChecked(true); | ||||
|       } | ||||
|       if(iCycle==2) { | ||||
|         ui->rb2->setChecked(true); | ||||
|       } | ||||
|     } | ||||
|     if(ui->cbAutoCycle->isChecked() or ui->cbOnOff->isChecked()) { | ||||
|       QFile f("pointing.out"); | ||||
|       if(f.open(QIODevice::WriteOnly | QIODevice::Append)) { | ||||
|         QTextStream out(&f); | ||||
|         out << t.toString("yyyy-MMM-dd hh:mm:ss"); | ||||
|         sprintf(cc,"%7.1f %7.1f   %d %7.1f %7.1f %10.1f %7.2f\n", | ||||
|                 azsun,elsun,iCycle,azOffset,elOffset,xavg,10.0*log10(xavg)); | ||||
|         out << cc; | ||||
|         f.close(); | ||||
|       } | ||||
|     } | ||||
|   } else { | ||||
|     ui->rb2->setChecked(true); | ||||
|     ui->cbAutoCycle->setChecked(false); | ||||
|     ui->cbOnOff->setChecked(false); | ||||
|   } | ||||
| 
 | ||||
| // Write pointing data to azel.dat
 | ||||
|   QString fname=azelDir+"/azel.dat"; | ||||
|   QFile f(fname); | ||||
|   if(!f.open(QIODevice::WriteOnly | QIODevice::Text)) { | ||||
| @ -107,7 +167,7 @@ void Astro::astroUpdate(QDateTime t, QString mygrid, QString hisgrid, | ||||
|           "%3d,%1d,fQSO\n" | ||||
|           "%3d,%1d,fQSO2\n", | ||||
|           nhr,nmin,isec,azmoon,elmoon, | ||||
|           nhr,nmin,isec,azsun,elsun, | ||||
|           nhr,nmin,isec,azsun+azOffset,elsun+elOffset, | ||||
|           nhr,nmin,isec,0.0,0.0, | ||||
|           nfreq,ndop,ndop00, | ||||
|           fQSO,nsetftx, | ||||
| @ -120,3 +180,14 @@ void Astro::setFontSize(int n) | ||||
| { | ||||
|   ui->astroTextBrowser->setFontPointSize(n); | ||||
| } | ||||
| 
 | ||||
| void Astro::on_cbAutoCycle_clicked(bool checked) | ||||
| { | ||||
|   if(checked) ui->cbOnOff->setChecked(false); | ||||
| } | ||||
| 
 | ||||
| void Astro::on_cbOnOff_clicked(bool checked) | ||||
| { | ||||
|   if(checked) ui->cbAutoCycle->setChecked(false); | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -15,10 +15,14 @@ class Astro : public QWidget | ||||
| public: | ||||
|   explicit Astro (QString const& settings_filename, QWidget *parent = 0); | ||||
|   void astroUpdate(QDateTime t, QString mygrid, QString hisgrid, | ||||
|                    int fQSO, int nsetftx, int ntxFreq, QString azelDir); | ||||
|                    int fQSO, int nsetftx, int ntxFreq, QString azelDir, double xavg); | ||||
|   void setFontSize(int n); | ||||
|   ~Astro (); | ||||
| 
 | ||||
| private slots: | ||||
|   void on_cbOnOff_clicked(bool checked); | ||||
|   void on_cbAutoCycle_clicked(bool checked); | ||||
| 
 | ||||
| private: | ||||
|   Ui::Astro *ui; | ||||
|   QString m_settings_filename; | ||||
|  | ||||
							
								
								
									
										236
									
								
								map65/astro.ui
									
									
									
									
									
								
							
							
						
						
									
										236
									
								
								map65/astro.ui
									
									
									
									
									
								
							| @ -6,30 +6,242 @@ | ||||
|    <rect> | ||||
|     <x>0</x> | ||||
|     <y>0</y> | ||||
|     <width>262</width> | ||||
|     <width>441</width> | ||||
|     <height>483</height> | ||||
|    </rect> | ||||
|   </property> | ||||
|   <property name="windowTitle"> | ||||
|    <string>Form</string> | ||||
|   </property> | ||||
|   <widget class="QTextBrowser" name="astroTextBrowser"> | ||||
|   <widget class="QGroupBox" name="gbPointing"> | ||||
|    <property name="geometry"> | ||||
|     <rect> | ||||
|      <x>269</x> | ||||
|      <y>19</y> | ||||
|      <width>151</width> | ||||
|      <height>431</height> | ||||
|     </rect> | ||||
|    </property> | ||||
|    <property name="title"> | ||||
|     <string/> | ||||
|    </property> | ||||
|    <widget class="QRadioButton" name="rb1"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>10</x> | ||||
|       <y>100</y> | ||||
|       <width>30</width> | ||||
|       <height>17</height> | ||||
|      </rect> | ||||
|     </property> | ||||
|     <property name="text"> | ||||
|      <string>1</string> | ||||
|     </property> | ||||
|    </widget> | ||||
|    <widget class="QRadioButton" name="rb2"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>60</x> | ||||
|       <y>100</y> | ||||
|       <width>40</width> | ||||
|       <height>17</height> | ||||
|      </rect> | ||||
|     </property> | ||||
|     <property name="text"> | ||||
|      <string>2, 5</string> | ||||
|     </property> | ||||
|     <property name="checked"> | ||||
|      <bool>true</bool> | ||||
|     </property> | ||||
|    </widget> | ||||
|    <widget class="QRadioButton" name="rb3"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>110</x> | ||||
|       <y>100</y> | ||||
|       <width>30</width> | ||||
|       <height>17</height> | ||||
|      </rect> | ||||
|     </property> | ||||
|     <property name="text"> | ||||
|      <string>3</string> | ||||
|     </property> | ||||
|    </widget> | ||||
|    <widget class="QRadioButton" name="rb4"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>60</x> | ||||
|       <y>150</y> | ||||
|       <width>30</width> | ||||
|       <height>17</height> | ||||
|      </rect> | ||||
|     </property> | ||||
|     <property name="text"> | ||||
|      <string>4</string> | ||||
|     </property> | ||||
|    </widget> | ||||
|    <widget class="QRadioButton" name="rb6"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>60</x> | ||||
|       <y>50</y> | ||||
|       <width>30</width> | ||||
|       <height>17</height> | ||||
|      </rect> | ||||
|     </property> | ||||
|     <property name="text"> | ||||
|      <string>6</string> | ||||
|     </property> | ||||
|    </widget> | ||||
|    <widget class="QDoubleSpinBox" name="sbOffset"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>10</x> | ||||
|       <y>230</y> | ||||
|       <width>130</width> | ||||
|       <height>22</height> | ||||
|      </rect> | ||||
|     </property> | ||||
|     <property name="alignment"> | ||||
|      <set>Qt::AlignCenter</set> | ||||
|     </property> | ||||
|     <property name="prefix"> | ||||
|      <string>Offset   </string> | ||||
|     </property> | ||||
|     <property name="suffix"> | ||||
|      <string>  deg</string> | ||||
|     </property> | ||||
|     <property name="decimals"> | ||||
|      <number>1</number> | ||||
|     </property> | ||||
|     <property name="minimum"> | ||||
|      <double>0.500000000000000</double> | ||||
|     </property> | ||||
|     <property name="maximum"> | ||||
|      <double>20.000000000000000</double> | ||||
|     </property> | ||||
|     <property name="singleStep"> | ||||
|      <double>0.500000000000000</double> | ||||
|     </property> | ||||
|     <property name="value"> | ||||
|      <double>2.500000000000000</double> | ||||
|     </property> | ||||
|    </widget> | ||||
|    <widget class="QCheckBox" name="cbAutoCycle"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>30</x> | ||||
|       <y>330</y> | ||||
|       <width>91</width> | ||||
|       <height>17</height> | ||||
|      </rect> | ||||
|     </property> | ||||
|     <property name="text"> | ||||
|      <string>Auto Cycle</string> | ||||
|     </property> | ||||
|    </widget> | ||||
|    <widget class="QCheckBox" name="cbOnOff"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>30</x> | ||||
|       <y>380</y> | ||||
|       <width>70</width> | ||||
|       <height>17</height> | ||||
|      </rect> | ||||
|     </property> | ||||
|     <property name="text"> | ||||
|      <string>On Off</string> | ||||
|     </property> | ||||
|    </widget> | ||||
|    <widget class="QSpinBox" name="sbDwell"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>10</x> | ||||
|       <y>280</y> | ||||
|       <width>130</width> | ||||
|       <height>22</height> | ||||
|      </rect> | ||||
|     </property> | ||||
|     <property name="alignment"> | ||||
|      <set>Qt::AlignCenter</set> | ||||
|     </property> | ||||
|     <property name="suffix"> | ||||
|      <string>   s</string> | ||||
|     </property> | ||||
|     <property name="prefix"> | ||||
|      <string>Dwell   </string> | ||||
|     </property> | ||||
|     <property name="minimum"> | ||||
|      <number>10</number> | ||||
|     </property> | ||||
|     <property name="maximum"> | ||||
|      <number>300</number> | ||||
|     </property> | ||||
|     <property name="singleStep"> | ||||
|      <number>10</number> | ||||
|     </property> | ||||
|    </widget> | ||||
|   </widget> | ||||
|   <widget class="QWidget" name=""> | ||||
|    <property name="geometry"> | ||||
|     <rect> | ||||
|      <x>0</x> | ||||
|      <y>10</y> | ||||
|      <width>256</width> | ||||
|      <height>451</height> | ||||
|      <width>258</width> | ||||
|      <height>471</height> | ||||
|     </rect> | ||||
|    </property> | ||||
|    <property name="font"> | ||||
|     <font> | ||||
|      <family>Courier New</family> | ||||
|      <pointsize>20</pointsize> | ||||
|      <weight>75</weight> | ||||
|      <bold>true</bold> | ||||
|     </font> | ||||
|    </property> | ||||
|    <layout class="QVBoxLayout" name="verticalLayout"> | ||||
|     <item> | ||||
|      <widget class="QTextBrowser" name="astroTextBrowser"> | ||||
|       <property name="font"> | ||||
|        <font> | ||||
|         <family>Courier New</family> | ||||
|         <pointsize>20</pointsize> | ||||
|         <weight>75</weight> | ||||
|         <bold>true</bold> | ||||
|        </font> | ||||
|       </property> | ||||
|      </widget> | ||||
|     </item> | ||||
|     <item> | ||||
|      <layout class="QHBoxLayout" name="horizontalLayout"> | ||||
|       <item> | ||||
|        <spacer name="horizontalSpacer_2"> | ||||
|         <property name="orientation"> | ||||
|          <enum>Qt::Horizontal</enum> | ||||
|         </property> | ||||
|         <property name="sizeHint" stdset="0"> | ||||
|          <size> | ||||
|           <width>40</width> | ||||
|           <height>20</height> | ||||
|          </size> | ||||
|         </property> | ||||
|        </spacer> | ||||
|       </item> | ||||
|       <item> | ||||
|        <widget class="QCheckBox" name="cbPointingTests"> | ||||
|         <property name="text"> | ||||
|          <string>Pointing Tests</string> | ||||
|         </property> | ||||
|        </widget> | ||||
|       </item> | ||||
|       <item> | ||||
|        <spacer name="horizontalSpacer"> | ||||
|         <property name="orientation"> | ||||
|          <enum>Qt::Horizontal</enum> | ||||
|         </property> | ||||
|         <property name="sizeHint" stdset="0"> | ||||
|          <size> | ||||
|           <width>40</width> | ||||
|           <height>20</height> | ||||
|          </size> | ||||
|         </property> | ||||
|        </spacer> | ||||
|       </item> | ||||
|      </layout> | ||||
|     </item> | ||||
|    </layout> | ||||
|   </widget> | ||||
|  </widget> | ||||
|  <resources/> | ||||
|  | ||||
| @ -520,6 +520,8 @@ void MainWindow::dataSink(int k) | ||||
|   static int nkhz; | ||||
|   static int nfsample=96000; | ||||
|   static int nxpol=0; | ||||
|   static int nsec0=0; | ||||
|   static int nsum=0; | ||||
|   static float fgreen; | ||||
|   static int ndiskdat; | ||||
|   static int nb; | ||||
| @ -529,6 +531,7 @@ void MainWindow::dataSink(int k) | ||||
|   static float rejectx; | ||||
|   static float rejecty; | ||||
|   static float slimit; | ||||
|   static double xsum=0.0; | ||||
| 
 | ||||
|   if(m_diskData) { | ||||
|     ndiskdat=1; | ||||
| @ -551,8 +554,22 @@ void MainWindow::dataSink(int k) | ||||
|            &nfsample, &fgreen, &m_adjustIQ, &m_applyIQcal, | ||||
|            &m_gainx, &m_gainy, &m_phasex, &m_phasey, &rejectx, &rejecty, | ||||
|            &px, &py, s, &nkhz, &ihsym, &nzap, &slimit, lstrong); | ||||
| 
 | ||||
|   int nsec=QDateTime::currentSecsSinceEpoch(); | ||||
|   if(nsec==nsec0) { | ||||
|     xsum+=pow(10.0,0.1*px); | ||||
|     nsum+=1; | ||||
|   } else { | ||||
|     m_xavg=0.0; | ||||
|     if(nsum>0) m_xavg=xsum/nsum; | ||||
|     xsum=pow(10.0,0.1*px); | ||||
|     nsum=1; | ||||
|   } | ||||
|   nsec0=nsec; | ||||
| 
 | ||||
|   QString t; | ||||
|   m_pctZap=nzap/178.3; | ||||
|   ui->yMeterFrame->setVisible(m_xpol); | ||||
|   if(m_xpol) { | ||||
|     lab4->setText ( | ||||
|                   QString {" Rx noise: %1  %2 %3 %% "} | ||||
| @ -1693,7 +1710,7 @@ void MainWindow::guiUpdate() | ||||
|     QDateTime t = QDateTime::currentDateTimeUtc(); | ||||
|     int fQSO=m_wide_graph_window->QSOfreq(); | ||||
|     m_astro_window->astroUpdate(t, m_myGrid, m_hisGrid, fQSO, m_setftx, | ||||
|                           m_txFreq, m_azelDir); | ||||
|                           m_txFreq, m_azelDir, m_xavg); | ||||
|     m_setftx=0; | ||||
|     QString utc = t.date().toString(" yyyy MMM dd \n") + t.time().toString(); | ||||
|     ui->labUTC->setText(utc); | ||||
|  | ||||
| @ -200,6 +200,7 @@ private: | ||||
|   //    double  m_IQphase;
 | ||||
|   double  m_cal570; | ||||
|   double  m_TxOffset; | ||||
|   double  m_xavg; | ||||
| 
 | ||||
|   bool    m_monitoring; | ||||
|   bool    m_transmitting; | ||||
|  | ||||
| @ -210,6 +210,7 @@ using SpecOp = Configuration::SpecialOperatingActivity; | ||||
| 
 | ||||
| bool m_displayBand = false; | ||||
| bool no_a7_decodes = false; | ||||
| bool keep_frequency = false; | ||||
| 
 | ||||
| namespace | ||||
| { | ||||
| @ -4133,7 +4134,7 @@ void MainWindow::pskPost (DecodedText const& decodedtext) | ||||
|   } | ||||
|   int snr = decodedtext.snr(); | ||||
|   Frequency frequency = m_freqNominalPeriod + audioFrequency;   // prevent spotting wrong band
 | ||||
|   if(grid.contains (grid_regexp)) { | ||||
|   if(grid.contains (grid_regexp)  || decodedtext.string().contains(" CQ ")) { | ||||
| //    qDebug() << "To PSKreporter:" << deCall << grid << frequency << msgmode << snr;
 | ||||
|     if (!m_psk_Reporter.addRemoteStation (deCall, grid, frequency, msgmode, snr)) | ||||
|       { | ||||
| @ -6758,7 +6759,7 @@ void MainWindow::on_actionFT8_triggered() | ||||
|     ui->txb5->setEnabled(false); | ||||
|     ui->txb6->setEnabled(false); | ||||
|   } else { | ||||
|     switch_mode (Modes::FT8); | ||||
|     if (!(keep_frequency)) switch_mode (Modes::FT8); | ||||
|   } | ||||
| 
 | ||||
|   if(m_specOp != SpecOp::HOUND) { | ||||
| @ -10006,6 +10007,8 @@ void MainWindow::on_houndButton_clicked (bool checked) | ||||
|   } else { | ||||
|     ui->houndButton->setStyleSheet(""); | ||||
|     m_config.setSpecial_None(); | ||||
|     keep_frequency = true; | ||||
|     QTimer::singleShot (250, [=] {keep_frequency = false;}); | ||||
|   } | ||||
|   m_specOp=m_config.special_op_id(); | ||||
|   on_actionFT8_triggered(); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user