Added CMD. Fixed sending of spots over the network API. Changed the basic response of QUERY MSGS
This commit is contained in:
		
							parent
							
								
									03f351551d
								
							
						
					
					
						commit
						78c1c9f1cf
					
				| @ -454,7 +454,6 @@ private: | |||||||
|   Q_SLOT void on_add_macro_push_button_clicked (bool = false); |   Q_SLOT void on_add_macro_push_button_clicked (bool = false); | ||||||
|   Q_SLOT void on_delete_macro_push_button_clicked (bool = false); |   Q_SLOT void on_delete_macro_push_button_clicked (bool = false); | ||||||
|   Q_SLOT void on_PTT_method_button_group_buttonClicked (int); |   Q_SLOT void on_PTT_method_button_group_buttonClicked (int); | ||||||
|   Q_SLOT void on_station_message_line_edit_textChanged(QString const&); |  | ||||||
|   Q_SLOT void on_groups_line_edit_textChanged(QString const&); |   Q_SLOT void on_groups_line_edit_textChanged(QString const&); | ||||||
|   Q_SLOT void on_qth_message_line_edit_textChanged(QString const&); |   Q_SLOT void on_qth_message_line_edit_textChanged(QString const&); | ||||||
|   Q_SLOT void on_cq_message_line_edit_textChanged(QString const&); |   Q_SLOT void on_cq_message_line_edit_textChanged(QString const&); | ||||||
| @ -1157,7 +1156,6 @@ Configuration::impl::impl (Configuration * self, QDir const& temp_directory, | |||||||
|   ui_->callsign_line_edit->setValidator (new CallsignValidator {this}); |   ui_->callsign_line_edit->setValidator (new CallsignValidator {this}); | ||||||
|   ui_->grid_line_edit->setValidator (new MaidenheadLocatorValidator {this, MaidenheadLocatorValidator::Length::doubleextended}); |   ui_->grid_line_edit->setValidator (new MaidenheadLocatorValidator {this, MaidenheadLocatorValidator::Length::doubleextended}); | ||||||
|   ui_->add_macro_line_edit->setValidator (new QRegExpValidator {message_alphabet, this}); |   ui_->add_macro_line_edit->setValidator (new QRegExpValidator {message_alphabet, this}); | ||||||
|   ui_->station_message_line_edit->setValidator (new QRegExpValidator {message_alphabet, this}); |  | ||||||
|   ui_->qth_message_line_edit->setValidator (new QRegExpValidator {message_alphabet, this}); |   ui_->qth_message_line_edit->setValidator (new QRegExpValidator {message_alphabet, this}); | ||||||
|   ui_->reply_message_line_edit->setValidator (new QRegExpValidator {message_alphabet, this}); |   ui_->reply_message_line_edit->setValidator (new QRegExpValidator {message_alphabet, this}); | ||||||
|   ui_->cq_message_line_edit->setValidator (new QRegExpValidator {message_alphabet, this}); |   ui_->cq_message_line_edit->setValidator (new QRegExpValidator {message_alphabet, this}); | ||||||
| @ -1166,7 +1164,6 @@ Configuration::impl::impl (Configuration * self, QDir const& temp_directory, | |||||||
|   setUppercase(ui_->callsign_line_edit); |   setUppercase(ui_->callsign_line_edit); | ||||||
|   setUppercase(ui_->grid_line_edit); |   setUppercase(ui_->grid_line_edit); | ||||||
|   setUppercase(ui_->add_macro_line_edit); |   setUppercase(ui_->add_macro_line_edit); | ||||||
|   setUppercase(ui_->station_message_line_edit); |  | ||||||
|   setUppercase(ui_->qth_message_line_edit); |   setUppercase(ui_->qth_message_line_edit); | ||||||
|   setUppercase(ui_->reply_message_line_edit); |   setUppercase(ui_->reply_message_line_edit); | ||||||
|   setUppercase(ui_->cq_message_line_edit); |   setUppercase(ui_->cq_message_line_edit); | ||||||
| @ -2782,11 +2779,6 @@ void Configuration::impl::on_sound_output_combo_box_currentTextChanged (QString | |||||||
|   default_audio_output_device_selected_ = QAudioDeviceInfo::defaultOutputDevice ().deviceName () == text; |   default_audio_output_device_selected_ = QAudioDeviceInfo::defaultOutputDevice ().deviceName () == text; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Configuration::impl::on_station_message_line_edit_textChanged(QString const &text) |  | ||||||
| { |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| void Configuration::impl::on_groups_line_edit_textChanged(QString const &text) | void Configuration::impl::on_groups_line_edit_textChanged(QString const &text) | ||||||
| { | { | ||||||
| } | } | ||||||
|  | |||||||
| @ -9954,18 +9954,32 @@ void MainWindow::processCommandActivity() { | |||||||
|             continue; |             continue; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         // PROCESS BUFFERED CMD
 | ||||||
|  |         else if (d.cmd == " CMD" && ui->autoReplyButton->isChecked()){ | ||||||
|  |             qDebug() << "skipping incoming command" << d.text; | ||||||
|  | 
 | ||||||
|  |             // make sure this is explicit
 | ||||||
|  |             continue; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         // PROCESS BUFFERED QUERY
 |         // PROCESS BUFFERED QUERY
 | ||||||
|         else if (d.cmd == " QUERY" && ui->autoReplyButton->isChecked()){ |         else if (d.cmd == " QUERY" && ui->autoReplyButton->isChecked()){ | ||||||
|             qDebug() << "received raw query" << d.text; |             QStringList segs = d.text.split(" "); | ||||||
|  |             if(segs.isEmpty()){ | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
| 
 | 
 | ||||||
|             // NOOP
 |             auto cmd = segs.first(); | ||||||
|             continue; |             segs.removeFirst(); | ||||||
|  | 
 | ||||||
|  |             if(cmd == "MSG"){ | ||||||
|  | 
 | ||||||
|  |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // PROCESS BUFFERED QUERY MSGS
 |         // PROCESS BUFFERED QUERY MSGS
 | ||||||
|         else if (d.cmd == " QUERY MSGS" && ui->autoReplyButton->isChecked()){ |         else if (d.cmd == " QUERY MSGS" && ui->autoReplyButton->isChecked()){ | ||||||
|             auto who = d.from; |             auto who = d.from; | ||||||
|             auto cmd = |  | ||||||
| 
 | 
 | ||||||
|             auto inbox = Inbox(inboxPath()); |             auto inbox = Inbox(inboxPath()); | ||||||
|             if(!inbox.open()){ |             if(!inbox.open()){ | ||||||
| @ -9976,19 +9990,16 @@ void MainWindow::processCommandActivity() { | |||||||
|             foreach(auto pair, v){ |             foreach(auto pair, v){ | ||||||
|                 auto params = pair.second.params(); |                 auto params = pair.second.params(); | ||||||
|                 auto text = params.value("TEXT").toString().trimmed(); |                 auto text = params.value("TEXT").toString().trimmed(); | ||||||
|                 auto from = params.value("FROM").toString(); |  | ||||||
|                 if(!text.isEmpty()){ |                 if(!text.isEmpty()){ | ||||||
|                     // mark as delivered
 |                     reply = QString("%1 YES").arg(who); | ||||||
|                     pair.second.setType("DELIVERED"); |  | ||||||
|                     inbox.set(pair.first, pair.second); |  | ||||||
| 
 |  | ||||||
|                     // and then reply with the text
 |  | ||||||
|                     reply = QString("%1>%2 DE %3").arg(who).arg(text).arg(from); |  | ||||||
|                     break; |                     break; | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             reply = replies.join("\n"); |             // if this is not an allcall and we have no messages, reply no.
 | ||||||
|  |             if(!isAllCall && reply.isEmpty()){ | ||||||
|  |                 reply = QString("%1 NO").arg(who); | ||||||
|  |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // PROCESS BUFFERED QUERY CALL
 |         // PROCESS BUFFERED QUERY CALL
 | ||||||
| @ -10266,6 +10277,9 @@ void MainWindow::processSpots() { | |||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     // Get the dial frequency to report
 | ||||||
|  |     auto dial = dialFrequency(); | ||||||
|  | 
 | ||||||
|     // Process spots to be sent...
 |     // Process spots to be sent...
 | ||||||
|     pskSetLocal(); |     pskSetLocal(); | ||||||
|     aprsSetLocal(); |     aprsSetLocal(); | ||||||
| @ -10275,9 +10289,19 @@ void MainWindow::processSpots() { | |||||||
|         if(d.call.isEmpty()){ |         if(d.call.isEmpty()){ | ||||||
|             continue; |             continue; | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|         qDebug() << "spotting call to reporting networks" << d.call << d.snr << d.freq; |         qDebug() << "spotting call to reporting networks" << d.call << d.snr << d.freq; | ||||||
|  | 
 | ||||||
|         pskLogReport("JS8", d.freq, d.snr, d.call, d.grid); |         pskLogReport("JS8", d.freq, d.snr, d.call, d.grid); | ||||||
|         aprsLogReport(d.freq, d.snr, d.call, d.grid); |         aprsLogReport(d.freq, d.snr, d.call, d.grid); | ||||||
|  | 
 | ||||||
|  |         sendNetworkMessage("RX.SPOT", "", { | ||||||
|  |             {"DIAL", QVariant(dial)}, | ||||||
|  |             {"OFFSET", QVariant(d.freq)}, | ||||||
|  |             {"CALL", QVariant(d.call)}, | ||||||
|  |             {"SNR", QVariant(d.snr)}, | ||||||
|  |             {"GRID", QVariant(d.grid)}, | ||||||
|  |         }); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										15
									
								
								varicode.cpp
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								varicode.cpp
									
									
									
									
									
								
							| @ -92,7 +92,7 @@ QMap<QString, int> directed_cmds = { | |||||||
|     {" QSL?",    22  }, // do you copy?
 |     {" QSL?",    22  }, // do you copy?
 | ||||||
|     {" QSL",     23  }, // i copy
 |     {" QSL",     23  }, // i copy
 | ||||||
| 
 | 
 | ||||||
|     // {" ",     24  }, // unused
 |     {" CMD",     24  }, // open ended command
 | ||||||
| 
 | 
 | ||||||
|     {" SNR",     25  }, // seen a station at the provided snr
 |     {" SNR",     25  }, // seen a station at the provided snr
 | ||||||
|     {" NO",      26  }, // negative confirm
 |     {" NO",      26  }, // negative confirm
 | ||||||
| @ -105,13 +105,13 @@ QMap<QString, int> directed_cmds = { | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // commands allowed to be processed
 | // commands allowed to be processed
 | ||||||
| QSet<int> allowed_cmds = {-1, 0, 1, /*2,*/ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, /*16,*/ 17, 18, 19, 20, 21, 22, 23, /*24,*/ 25, 26, 27, 28, 29, 30, 31}; | QSet<int> allowed_cmds = {-1, 0, 1, /*2,*/ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, /*16,*/ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; | ||||||
| 
 | 
 | ||||||
| // commands that result in an autoreply
 | // commands that result in an autoreply (which can be relayed)
 | ||||||
| QSet<int> autoreply_cmds = {0, 1, 3, 4, 6, 10, 12, 13, 30}; | QSet<int> autoreply_cmds = {0, 1, 3, 4, 6, 10, 11, 12, 13, 30}; | ||||||
| 
 | 
 | ||||||
| // commands that should be buffered
 | // commands that should be buffered
 | ||||||
| QSet<int> buffered_cmds = {3, 5, /*6,*/ /*7,*/ 10, 11, 12, 13, 14, 15}; | QSet<int> buffered_cmds = {3, 5, /*6,*/ /*7,*/ 10, 11, 12, 13, 14, 15, 24}; | ||||||
| 
 | 
 | ||||||
| // commands that may include an SNR value
 | // commands that may include an SNR value
 | ||||||
| QSet<int> snr_cmds = {25, 29}; | QSet<int> snr_cmds = {25, 29}; | ||||||
| @ -124,11 +124,12 @@ QMap<int, int> checksum_cmds = { | |||||||
|     { 12, 16 }, |     { 12, 16 }, | ||||||
|     { 13, 16 }, |     { 13, 16 }, | ||||||
|     { 14, 16 }, |     { 14, 16 }, | ||||||
|     { 15,  0 } |     { 15,  0 }, | ||||||
|  |     { 24, 16 } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| QString callsign_pattern = QString("(?<callsign>[@]?[A-Z0-9/]+)"); | QString callsign_pattern = QString("(?<callsign>[@]?[A-Z0-9/]+)"); | ||||||
| QString optional_cmd_pattern = QString("(?<cmd>\\s?(?:AGN[?]|QSL[?]|HW CPY[?]|APRS[:]|MSG TO[:]|SNR[?]|QTH[?]|GRID[?]|STATUS[?]|HEARING[?]|(?:(?:STATUS|HEARING|QUERY CALL|QUERY MSGS|QUERY|ACK|73|YES|NO|SNR|QSL|RR|SK|FB|QTH|GRID|TU)(?=[ ]|$))|[?> ]))?"); | QString optional_cmd_pattern = QString("(?<cmd>\\s?(?:AGN[?]|QSL[?]|HW CPY[?]|APRS[:]|MSG TO[:]|SNR[?]|QTH[?]|GRID[?]|STATUS[?]|HEARING[?]|(?:(?:STATUS|HEARING|QUERY CALL|QUERY MSGS|QUERY|CMD|ACK|73|YES|NO|SNR|QSL|RR|SK|FB|QTH|GRID|TU)(?=[ ]|$))|[?> ]))?"); | ||||||
| QString optional_grid_pattern = QString("(?<grid>\\s?[A-R]{2}[0-9]{2})?"); | QString optional_grid_pattern = QString("(?<grid>\\s?[A-R]{2}[0-9]{2})?"); | ||||||
| QString optional_extended_grid_pattern = QString("^(?<grid>\\s?(?:[A-R]{2}[0-9]{2}(?:[A-X]{2}(?:[0-9]{2})?)*))?"); | QString optional_extended_grid_pattern = QString("^(?<grid>\\s?(?:[A-R]{2}[0-9]{2}(?:[A-X]{2}(?:[0-9]{2})?)*))?"); | ||||||
| QString optional_num_pattern = QString("(?<num>(?<=SNR|ACK)\\s?[-+]?(?:3[01]|[0-2]?[0-9]))?"); | QString optional_num_pattern = QString("(?<num>(?<=SNR|ACK)\\s?[-+]?(?:3[01]|[0-2]?[0-9]))?"); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Jordan Sherer
						Jordan Sherer