Fixed bug causing compound calls not to send when a grid locator larger than 4 characters was set in the configuration

This commit is contained in:
Jordan Sherer 2018-08-11 10:06:50 -04:00
parent a5b6984ede
commit c042a72d0d
2 changed files with 6 additions and 2 deletions

View File

@ -5839,7 +5839,7 @@ QStringList MainWindow::buildFT8MessageFrames(QString const& text){
// prepare compound
bool compound = Radio::is_compound_callsign(m_config.my_callsign());
QString mygrid = m_config.my_grid();
QString mygrid = m_config.my_grid().left(4);
QString mycall = m_config.my_callsign();
QString basecall = Radio::base_callsign(m_config.my_callsign());
if(basecall != mycall){

View File

@ -75,6 +75,7 @@ QSet<int> buffered_cmds = {6, 7, 8};
QString callsign_pattern = QString("(?<callsign>[A-Z0-9/]+)");
QString optional_cmd_pattern = QString("(?<cmd>\\s?(?:AGN[?]|ACK|73|YES|NO|SNR|PWR|QSL[?]?|RR|HEARING|[?@&$%|!# ]))?");
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_pwr_pattern = QString("(?<pwr>(?<=PWR)\\s?\\d+\\s?[KM]?W)?");
QString optional_num_pattern = QString("(?<num>(?<=SNR|HEARING)\\s?[-+]?(?:3[01]|[0-2]?[0-9]))?");
@ -84,7 +85,7 @@ QRegularExpression directed_re("^" +
optional_pwr_pattern +
optional_num_pattern);
QRegularExpression beacon_re(R"(^(?<type>CQCQCQ|BEACON)(?:\s(?<grid>[A-Z]{2}[0-9]{2}))?\b)");
QRegularExpression beacon_re(R"(^(?<type>CQCQCQ|BEACON)(?:\s(?<grid>[A-R]{2}[0-9]{2}))?\b)");
QRegularExpression compound_re("^[<]" +
callsign_pattern +
@ -1197,12 +1198,15 @@ QStringList Varicode::unpackBeaconMessage(const QString &text, quint8 *pType, bo
QString Varicode::packCompoundMessage(QString const &text, int *n){
QString frame;
qDebug() << "trying to pack compound message" << text;
auto parsedText = compound_re.match(text);
if(!parsedText.hasMatch()){
if(n) *n = 0;
return frame;
}
qDebug() << parsedText.capturedTexts();
QString callsign = parsedText.captured("callsign");
QString grid = parsedText.captured("grid");
QString cmd = parsedText.captured("cmd");