Skip to content

Commit

Permalink
multiple udp output sockets for bottom window. You put a space in
Browse files Browse the repository at this point in the history
between them. eg. "localhost:12345 192.168.1.22:4465"
  • Loading branch information
jontio committed Oct 7, 2019
1 parent 5a4e894 commit c4524f2
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 24 deletions.
40 changes: 29 additions & 11 deletions JAERO/gui_classes/settingsdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,23 +61,41 @@ void SettingsDialog::poulatepublicvars()
beepontextmessage=ui->checkBoxbeepontextmessage->isChecked();

//bottom text window output settings
QString hostaddr=ui->lineEditudpoutputdecodedmessagesaddress->text().section(':',0,0);
if(hostaddr.toUpper()=="LOCALHOST")hostaddr="127.0.0.1";
if(!udp_for_decoded_messages_address.setAddress(hostaddr))
QStringList hosts=ui->lineEditudpoutputdecodedmessagesaddress->text().simplified().split(" ");
udp_for_decoded_messages_address.clear();
udp_for_decoded_messages_port.clear();
for(int i=0;i<hosts.size();i++)
{
qDebug()<<"Can't set UDP address";
}
udp_for_decoded_messages_port=ui->lineEditudpoutputdecodedmessagesaddress->text().section(':',1,1).toInt();
if(udp_for_decoded_messages_port==0)
{
qDebug()<<"Can't set UDP port reverting to 18765";
udp_for_decoded_messages_port=18765;
QString host=hosts[i];
QHostAddress hostaddress;
quint16 hostport;
QString hostaddress_string=host.section(':',0,0).simplified();
if(hostaddress_string.toUpper()=="LOCALHOST")hostaddress_string="127.0.0.1";
if(!hostaddress.setAddress(hostaddress_string))
{
qDebug()<<"Can't set UDP address";
}
hostport=host.section(':',1,1).toInt();
if(hostport==0)
{
qDebug()<<"Can't set UDP port reverting to 18765";
hostport=18765;
}
if(!((udp_for_decoded_messages_port.contains(hostport)&&udp_for_decoded_messages_address.contains(hostaddress))))
{
udp_for_decoded_messages_address.push_back(hostaddress);
udp_for_decoded_messages_port.push_back(hostport);
}
else
{
qDebug()<<"Can't set UDP address:port as it's already used";
}
}
udp_for_decoded_messages_enabled=ui->checkOutputDecodedMessageToUDPPort->isChecked();


//ads message output using SBS1 protocol over TCP
hostaddr=ui->lineEdittcpoutputadsmessagesaddress->text().section(':',0,0);
QString hostaddr=ui->lineEdittcpoutputadsmessagesaddress->text().section(':',0,0);
if(!tcp_for_ads_messages_address.setAddress(hostaddr))
{
QString tstr=ui->lineEdittcpoutputadsmessagesaddress->text().section(':',1,1);
Expand Down
4 changes: 2 additions & 2 deletions JAERO/gui_classes/settingsdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ class SettingsDialog : public QDialog
bool beepontextmessage;
void DataBaseUpdateSugestion();

QHostAddress udp_for_decoded_messages_address;
quint16 udp_for_decoded_messages_port;
QList<QHostAddress> udp_for_decoded_messages_address;
QList<quint16> udp_for_decoded_messages_port;
bool udp_for_decoded_messages_enabled;


Expand Down
44 changes: 35 additions & 9 deletions JAERO/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,8 @@ MainWindow::MainWindow(QWidget *parent) :
//add a thing for saving audio to disk with
compresseddiskwriter = new CompressedAudioDiskWriter(this);

//create udp sockets
//create udp socket for raw data and hex (not bottom textbox)
udpsocket = new QUdpSocket(this);
udpsocket_bottom_textedit = new QUdpSocket(this);

//create sbs server and connect the ADS parser to it
sbs1 = new SBS1(this);
Expand Down Expand Up @@ -920,7 +919,6 @@ void MainWindow::on_actionConnectToUDPPort_toggled(bool arg1)
aerol->DisconnectSinkDevice();
aerol2->DisconnectSinkDevice();
udpsocket->close();
udpsocket_bottom_textedit->close();
if(arg1)
{
ui->actionRawOutput->setEnabled(true);
Expand Down Expand Up @@ -1078,10 +1076,31 @@ void MainWindow::acceptsettings()

planelog->planesfolder=settingsdialog->planesfolder;
planelog->planelookup=settingsdialog->planelookup;
udpsocket_bottom_textedit->close();

//this is for bottom textbox udp output
//disconnect ports
for(int ii=0;ii<udpsockets_bottom_textedit.size();ii++)
{
udpsockets_bottom_textedit[ii].data()->close();
}
//resize number of ports
int number_of_ports_wanted=qMin(settingsdialog->udp_for_decoded_messages_address.size(),settingsdialog->udp_for_decoded_messages_port.size());
while(udpsockets_bottom_textedit.size()<number_of_ports_wanted)
{
udpsockets_bottom_textedit.push_back(new QUdpSocket(this));
}
for(int ii=number_of_ports_wanted;ii<udpsockets_bottom_textedit.size();)
{
udpsockets_bottom_textedit[ii].data()->deleteLater();
udpsockets_bottom_textedit.removeAt(ii);
}
//connect ports
if(settingsdialog->udp_for_decoded_messages_enabled)
{
udpsocket_bottom_textedit->connectToHost(settingsdialog->udp_for_decoded_messages_address, settingsdialog->udp_for_decoded_messages_port);
for(int ii=0;ii<udpsockets_bottom_textedit.size();ii++)
{
udpsockets_bottom_textedit[ii].data()->connectToHost(settingsdialog->udp_for_decoded_messages_address[ii], settingsdialog->udp_for_decoded_messages_port[ii]);
}
}

if(settingsdialog->loggingenable)compresseddiskwriter->setLogDir(settingsdialog->loggingdirectory);
Expand Down Expand Up @@ -1272,12 +1291,19 @@ void MainWindow::ACARSslot(ACARSItem &acarsitem)
{
if(settingsdialog->udp_for_decoded_messages_enabled)//((settingsdialog->udp_for_decoded_messages_enabled)&&(arincparser.adownlinkbasicreportgroup.valid))
{
if((!udpsocket_bottom_textedit->isOpen())||(!udpsocket_bottom_textedit->isWritable()))
//send bottom text window to all udp sockects
for(int ii=0;ii<udpsockets_bottom_textedit.size();ii++)
{
udpsocket_bottom_textedit->close();
udpsocket_bottom_textedit->connectToHost(settingsdialog->udp_for_decoded_messages_address, settingsdialog->udp_for_decoded_messages_port);
if(ii>=settingsdialog->udp_for_decoded_messages_address.size())continue;
if(ii>=settingsdialog->udp_for_decoded_messages_port.size())continue;
QUdpSocket *sock=udpsockets_bottom_textedit[ii].data();
if((!sock->isOpen())||(!sock->isWritable()))
{
sock->close();
sock->connectToHost(settingsdialog->udp_for_decoded_messages_address[ii], settingsdialog->udp_for_decoded_messages_port[ii]);
}
if((sock->isOpen())&&(sock->isWritable()))sock->write((humantext+"\n").toLatin1().data());
}
if((udpsocket_bottom_textedit->isOpen())&&(udpsocket_bottom_textedit->isWritable()))udpsocket_bottom_textedit->write((humantext+"\n").toLatin1().data());
}
ui->inputwidget->appendPlainText(humantext);
log(humantext);
Expand Down
3 changes: 1 addition & 2 deletions JAERO/mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,7 @@ class MainWindow : public QMainWindow


//bottom textedit output
QUdpSocket *udpsocket_bottom_textedit;
//
QList<QPointer<QUdpSocket> > udpsockets_bottom_textedit;

//ambe->pcm->vorbis->ogg->disk
QObject *ambe;
Expand Down

0 comments on commit c4524f2

Please sign in to comment.