Skip to content

Commit

Permalink
Merge branch 'master' of pixhawk.ethz.ch:qgroundcontrol
Browse files Browse the repository at this point in the history
  • Loading branch information
hengli committed Oct 29, 2010
2 parents c1613c0 + 0b0b475 commit 53e8ec1
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 2 deletions.
3 changes: 3 additions & 0 deletions src/Core.cc
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,9 @@ Core::Core(int &argc, char* argv[]) : QApplication(argc, argv)
// to make sure that all components are initialized when the
// first messages arrive
UDPLink* udpLink = new UDPLink(QHostAddress::Any, 14550);
// Listen on Multicast-Address 239.255.77.77, Port 14550
//QHostAddress * multicast_udp = new QHostAddress("239.255.77.77");
//UDPLink* udpLink = new UDPLink(*multicast_udp, 14550);
mainWindow->addLink(udpLink);

// Check if link could be connected
Expand Down
40 changes: 38 additions & 2 deletions src/comm/UDPLink.cc
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ This file is part of the QGROUNDCONTROL project
#include "UDPLink.h"
#include "LinkManager.h"
#include "MG.h"
#include <netinet/in.h>

UDPLink::UDPLink(QHostAddress host, quint16 port)
{
Expand Down Expand Up @@ -197,11 +198,46 @@ bool UDPLink::connect()
{
socket = new QUdpSocket(this);

//Check if we are using a multicast-address
// bool multicast = false;
// if (host.isInSubnet(QHostAddress("224.0.0.0"),4))
// {
// multicast = true;
// connectState = socket->bind(port, QUdpSocket::ShareAddress);
// }
// else
// {
connectState = socket->bind(host, port);
// }

//Provides Multicast functionality to UdpSocket
/* not working yet
if (multicast)
{
int sendingFd = socket->socketDescriptor();
if (sendingFd != -1)
{
// set up destination address
struct sockaddr_in sendAddr;
memset(&sendAddr,0,sizeof(sendAddr));
sendAddr.sin_family=AF_INET;
sendAddr.sin_addr.s_addr=inet_addr(HELLO_GROUP);
sendAddr.sin_port=htons(port);
// set TTL
unsigned int ttl = 1; // restricted to the same subnet
if (setsockopt(sendingFd, IPPROTO_IP, IP_MULTICAST_TTL, (unsigned int*)&ttl, sizeof(ttl) ) < 0)
{
std::cout << "TTL failed\n";
}
}
}
*/

//QObject::connect(socket, SIGNAL(readyRead()), this, SLOT(readPendingDatagrams()));
QObject::connect(socket, SIGNAL(readyRead()), this, SLOT(readBytes()));

connectState = socket->bind(host, port);

emit connected(connectState);
if (connectState)
{
Expand Down
1 change: 1 addition & 0 deletions src/comm/UDPLink.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ class UDPLink : public LinkInterface

public:
UDPLink(QHostAddress host = QHostAddress::Any, quint16 port = 14550);
//UDPLink(QHostAddress host = "239.255.76.67", quint16 port = 7667);
~UDPLink();

bool isConnected();
Expand Down

0 comments on commit 53e8ec1

Please sign in to comment.