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

Last change on this file since 7716 was 7716, checked in by stuerze, 8 years ago

minor changes

File size: 3.5 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 (eph->checkState() == t_eph::ok && timeDiff <= 4*3600) {
85 size = t_ephEncoder::RTCM3(*ephGPS, Array);
86 }
87 }
88 else if (ephGlo) {
89 if (eph->checkState() == t_eph::ok && timeDiff <= 1*3600) {
90 size = t_ephEncoder::RTCM3(*ephGlo, Array);
91 }
92 }
93 else if (ephGal) {
94 if (eph->checkState() == t_eph::ok && timeDiff <= 4*3600) {
95 size = t_ephEncoder::RTCM3(*ephGal, Array);
96 }
97 }
98 else if (ephSBAS) {
99 if (eph->checkState() == t_eph::ok && timeDiff <= 600) {
100 size = t_ephEncoder::RTCM3(*ephSBAS, Array);
101 }
102 }
103 else if (ephBDS) {
104 if (eph->checkState() == t_eph::ok && 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.