Changeset 2178 in ntrip


Ignore:
Timestamp:
Jan 4, 2010, 1:48:00 PM (14 years ago)
Author:
mervart
Message:

* empty log message *

Location:
trunk/BNC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/bncmodel.cpp

    r2171 r2178  
    187187    writeNMEAstr(nmStr);
    188188  }
     189
     190  int port = 7777;
     191
     192  if (port != 0) {
     193    _server = new QTcpServer;
     194    if ( !_server->listen(QHostAddress::Any, port) ) {
     195      emit newMessage("bncModel: Cannot listen on sync port", true);
     196    }
     197    connect(_server, SIGNAL(newConnection()), this, SLOT(slotNewConnection()));
     198    _sockets = new QList<QTcpSocket*>;
     199  }
     200  else {
     201    _server  = 0;
     202    _sockets = 0;
     203  }
     204
     205
    189206}
    190207
     
    194211  delete _nmeaStream;
    195212  delete _nmeaFile;
     213  delete _server;
     214  delete _sockets;
     215}
     216
     217// New Connection
     218////////////////////////////////////////////////////////////////////////////
     219void bncModel::slotNewConnection() {
     220  _sockets->push_back( _server->nextPendingConnection() );
     221  emit( newMessage(QString("PPP: new connection on port: # %1")
     222                   .arg(_sockets->size()).toAscii(), true) );
    196223}
    197224
     
    562589  // NMEA Output
    563590  // -----------
    564   if (_nmeaStream) {
     591  if (_nmeaStream || _sockets) {
    565592    double xyz[3];
    566593    xyz[0] = x();
     
    668695void bncModel::writeNMEAstr(const QString& nmStr) {
    669696
    670   if (!_nmeaStream) {
    671     return;
    672   }
    673 
    674697  unsigned char XOR = 0;
    675698  for (int ii = 0; ii < nmStr.length(); ii++) {
     
    677700  }
    678701 
    679   *_nmeaStream << '$' << nmStr << '*' << hex << (int) XOR << endl;
    680 
    681   _nmeaStream->flush();
    682 }
     702  if (_nmeaStream) {
     703    *_nmeaStream << '$' << nmStr << '*' << hex << (int) XOR << endl;
     704    _nmeaStream->flush();
     705  }
     706
     707  if (_sockets) {
     708    QMutableListIterator<QTcpSocket*> is(*_sockets);
     709    while (is.hasNext()) {
     710      QTcpSocket* sock = is.next();
     711      if (sock->state() == QAbstractSocket::ConnectedState) {
     712//        *sock << '$' << nmStr << '*' << hex << (int) XOR << endl;
     713//        sock->flush();
     714      }
     715      else if (sock->state() != QAbstractSocket::ConnectingState) {
     716        delete sock;
     717        is.remove();
     718      }
     719    }
     720  }
     721}
  • trunk/BNC/bncmodel.h

    r2143 r2178  
    2727
    2828#include <QtCore>
     29#include <QtNetwork>
    2930#include <newmat.h>
    3031
     
    6869  void newMessage(QByteArray msg, bool showOnScreen);
    6970
     71 private slots:
     72  void slotNewConnection();
     73
    7074 private:
    7175  double cmpValue(t_satData* satData);
     
    8993  QFile*             _nmeaFile;
    9094  QTextStream*       _nmeaStream;
     95  QTcpServer*         _server;
     96  QList<QTcpSocket*>* _sockets;
    9197};
    9298
Note: See TracChangeset for help on using the changeset viewer.