source: ntrip/trunk/BNC/src/upload/bncephuploadcaster.cpp @ 7717

Last change on this file since 7717 was 7717, checked in by stuerze, 3 years ago

minor changes

File size: 3.3 KB
Line 
1/* -------------------------------------------------------------------------
2 * BKG NTRIP Server
3 * -------------------------------------------------------------------------
4 *
5 * Class:      bncEphUploadCaster
6 *
7 * Purpose:    Connection to NTRIP Caster for Ephemeris
8 *
9 * Author:     L. Mervart
10 *
11 * Created:    03-Apr-2011
12 *
13 * Changes:
14 *
15 * -----------------------------------------------------------------------*/
16
17#include <iostream>
18#include <math.h>
19#include "bncephuploadcaster.h"
20#include "bncsettings.h"
21#include "RTCM3/ephEncoder.h"
22
23using namespace std;
24
25// Constructor
26////////////////////////////////////////////////////////////////////////////
27bncEphUploadCaster::bncEphUploadCaster() : bncEphUser(true) {
28  bncSettings settings;
29
30  QString mountpoint = settings.value("uploadEphMountpoint").toString();
31  if (mountpoint.isEmpty()) {
32    _ephUploadCaster = 0;
33  }
34  else {
35    QString outHost  = settings.value("uploadEphHost").toString();
36    int     outPort  = settings.value("uploadEphPort").toInt();
37    QString password = settings.value("uploadEphPassword").toString();
38    int     sampl    = settings.value("uploadEphSample").toInt();
39
40    _ephUploadCaster = new bncUploadCaster(mountpoint, outHost, outPort,
41                                           password, -1, sampl);
42
43    connect(_ephUploadCaster, SIGNAL(newBytes(QByteArray,double)),
44          this, SIGNAL(newBytes(QByteArray,double)));
45
46    _ephUploadCaster->start();
47  }
48}
49
50// Destructor
51////////////////////////////////////////////////////////////////////////////
52bncEphUploadCaster::~bncEphUploadCaster() {
53  if (_ephUploadCaster) {
54    _ephUploadCaster->deleteSafely();
55  }
56}
57
58// List of Stored Ephemeris changed (virtual)
59////////////////////////////////////////////////////////////////////////////
60void bncEphUploadCaster::ephBufferChanged() {
61  if (_ephUploadCaster) {
62    QByteArray outBuffer;
63
64    QDateTime now = currentDateAndTimeGPS();
65    bncTime currentTime(now.toString(Qt::ISODate).toStdString());
66
67    QListIterator<QString> it(prnList());
68    while (it.hasNext()) {
69      const t_eph* eph = ephLast(it.next());
70
71      bncTime toc = eph->TOC();
72      double timeDiff = fabs(toc - currentTime);
73
74      const t_ephGPS*  ephGPS  = dynamic_cast<const t_ephGPS*>(eph);
75      const t_ephGlo*  ephGlo  = dynamic_cast<const t_ephGlo*>(eph);
76      const t_ephGal*  ephGal  = dynamic_cast<const t_ephGal*>(eph);
77      const t_ephSBAS* ephSBAS = dynamic_cast<const t_ephSBAS*>(eph);
78      const t_ephBDS*  ephBDS  = dynamic_cast<const t_ephBDS*>(eph);
79
80      unsigned char Array[80];
81      int size = 0;
82
83      if (ephGPS) {
84        if (timeDiff <= 4*3600) {
85          size = t_ephEncoder::RTCM3(*ephGPS, Array);
86        }
87      }
88      else if (ephGlo) {
89        if (timeDiff <= 1*3600) {
90          size = t_ephEncoder::RTCM3(*ephGlo, Array);
91        }
92      }
93      else if (ephGal) {
94        if (timeDiff <= 4*3600) {
95          size = t_ephEncoder::RTCM3(*ephGal, Array);
96        }
97      }
98      else if (ephSBAS) {
99        if (timeDiff <= 600) {
100          size = t_ephEncoder::RTCM3(*ephSBAS, Array);
101        }
102      }
103      else if (ephBDS) {
104        if (timeDiff <= 6*3600) {
105          size = t_ephEncoder::RTCM3(*ephBDS, Array);
106        }
107      }
108      if (size > 0) {
109        outBuffer += QByteArray((char*) Array, size);
110      }
111    }
112    if (outBuffer.size() > 0) {
113      _ephUploadCaster->setOutBuffer(outBuffer);
114    }
115  }
116}
Note: See TracBrowser for help on using the repository browser.