+DroneThread::DroneThread(DroneControl *parentp,QHostAddress host)
+{
+
+ struct ip_mreq imreq;
+ QString my_ip;
+ qDebug() << "DroneThread::DroneThread";
+ my_ip="192.168.1.2";
+ stopped=false;
+ state=notInitialized;
+ parent=parentp;
+ navSock=new QUdpSocket();
+ QList<QNetworkConfiguration> netconfs=QNetworkConfigurationManager().allConfigurations();
+ foreach (QNetworkConfiguration np,netconfs) {
+ qDebug() << "network Confifuration name " << np.name() << np.bearerName() << np.bearerTypeName();
+ QNetworkSession ns(np);
+ if(ns.interface().addressEntries().empty())
+ qDebug() << "network session " << ns.interface().humanReadableName() << "**NotConfig**";
+ else {
+ qDebug() << "network session " << ns.interface().humanReadableName() << ns.interface().addressEntries().first().ip();
+ // Ubuntu may give wlan0 as "Ethernet"
+ if((np.bearerName()==QString("WLAN")) || (ns.interface().humanReadableName()==QString("wlan0")) ) {
+ my_ip=ns.interface().addressEntries().first().ip().toString();
+ qDebug() << "My IP is " << my_ip;
+ }
+ }
+ }
+ if(!navSock->bind(QHostAddress::Any,5554))
+ qDebug() << "Cant open any: 5554" << navSock->errorString() ;
+//#if 0
+ // Qt 4.7.x
+ imreq.imr_multiaddr.s_addr=inet_addr("224.1.1.1");
+ imreq.imr_interface.s_addr=inet_addr(my_ip.toAscii());
+ setsockopt(navSock->socketDescriptor(),IPPROTO_IP,IP_ADD_MEMBERSHIP,&imreq,sizeof(imreq));
+//#else
+ // Qt 4.8
+ if(!navSock->joinMulticastGroup(QHostAddress("224.1.1.1")))
+ qDebug() << "can't join multicast Group 224.1.1.1" << navSock->errorString();
+//#endif
+ cmdSock=new QUdpSocket();
+ cmdSock->bind(QHostAddress::Any,5556);
+ droneHost=host;
+ recordLog=false;
+ logFile=NULL;
+ logFileName="";
+ seq=1;
+ m_pitch=0;
+ m_roll=0;
+ m_yaw=0;
+ m_vv=0;
+ m_fgain=1.0;
+ m_bgain=1.0;
+ m_rgain=1.0;
+ m_lgain=1.0;
+ noreply=0;
+ start();
+
+};