| 1 | /* -------------------------------------------------------------------------
|
|---|
| 2 | * BKG NTRIP Client
|
|---|
| 3 | * -------------------------------------------------------------------------
|
|---|
| 4 | *
|
|---|
| 5 | * Class: bncNetRequest
|
|---|
| 6 | *
|
|---|
| 7 | * Purpose: Prepare and submit network request
|
|---|
| 8 | *
|
|---|
| 9 | * Author: L. Mervart
|
|---|
| 10 | *
|
|---|
| 11 | * Created: 09-Dec-2008
|
|---|
| 12 | *
|
|---|
| 13 | * Changes:
|
|---|
| 14 | *
|
|---|
| 15 | * -----------------------------------------------------------------------*/
|
|---|
| 16 |
|
|---|
| 17 | #include <iostream>
|
|---|
| 18 | #include <iomanip>
|
|---|
| 19 |
|
|---|
| 20 | #include "bncnetrequest.h"
|
|---|
| 21 | #include "RTCM3/RTCM3Decoder.h"
|
|---|
| 22 |
|
|---|
| 23 | using namespace std;
|
|---|
| 24 |
|
|---|
| 25 | // Constructor
|
|---|
| 26 | ////////////////////////////////////////////////////////////////////////////
|
|---|
| 27 | bncNetRequest::bncNetRequest() {
|
|---|
| 28 | _manager = 0;
|
|---|
| 29 | _reply = 0;
|
|---|
| 30 | _decoder = new RTCM3Decoder("TEST1");
|
|---|
| 31 | connect((RTCM3Decoder*) _decoder, SIGNAL(newMessage(QByteArray,bool)),
|
|---|
| 32 | this, SIGNAL(slotNewMessage(QByteArray,bool)));
|
|---|
| 33 | }
|
|---|
| 34 |
|
|---|
| 35 | // Destructor
|
|---|
| 36 | ////////////////////////////////////////////////////////////////////////////
|
|---|
| 37 | bncNetRequest::~bncNetRequest() {
|
|---|
| 38 | cout << "~bncNetRequest" << endl;
|
|---|
| 39 | delete _reply;
|
|---|
| 40 | delete _manager;
|
|---|
| 41 | }
|
|---|
| 42 |
|
|---|
| 43 | // Network Request
|
|---|
| 44 | ////////////////////////////////////////////////////////////////////////////
|
|---|
| 45 | t_irc bncNetRequest::request(const QUrl& url) {
|
|---|
| 46 |
|
|---|
| 47 | // Network Access Manager
|
|---|
| 48 | // ----------------------
|
|---|
| 49 | if (_manager == 0) {
|
|---|
| 50 | _manager = new QNetworkAccessManager(this);
|
|---|
| 51 | }
|
|---|
| 52 | else {
|
|---|
| 53 | return failure;
|
|---|
| 54 | }
|
|---|
| 55 |
|
|---|
| 56 | // Network Request
|
|---|
| 57 | // ---------------
|
|---|
| 58 | QNetworkRequest request;
|
|---|
| 59 | request.setUrl(url);
|
|---|
| 60 | request.setRawHeader("Host" , url.host().toAscii());
|
|---|
| 61 | request.setRawHeader("Ntrip-Version", "NTRIP/2.0");
|
|---|
| 62 | request.setRawHeader("User-Agent" , "NTRIP BNC/1.7");
|
|---|
| 63 | if (!url.userName().isEmpty()) {
|
|---|
| 64 | request.setRawHeader("Authorization", "Basic " +
|
|---|
| 65 | (url.userName() + ":" + url.password()).toAscii().toBase64());
|
|---|
| 66 | }
|
|---|
| 67 | request.setRawHeader("Connection" , "close");
|
|---|
| 68 |
|
|---|
| 69 | _reply = _manager->get(request);
|
|---|
| 70 |
|
|---|
| 71 | connect(_reply, SIGNAL(finished()), this, SLOT(slotReplyFinished()));
|
|---|
| 72 | connect(_reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));
|
|---|
| 73 | connect(_reply, SIGNAL(error(QNetworkReply::NetworkError)),
|
|---|
| 74 | this, SLOT(slotError(QNetworkReply::NetworkError)));
|
|---|
| 75 | connect(_reply, SIGNAL(sslErrors(const QList<QSslError>&)),
|
|---|
| 76 | this, SLOT(slotSslErrors(const QList<QSslError>&)));
|
|---|
| 77 |
|
|---|
| 78 |
|
|---|
| 79 | return success;
|
|---|
| 80 | }
|
|---|
| 81 |
|
|---|
| 82 | //
|
|---|
| 83 | ////////////////////////////////////////////////////////////////////////////
|
|---|
| 84 | void bncNetRequest::slotReplyFinished() {
|
|---|
| 85 | cout << "slotReplyFinished" << endl;
|
|---|
| 86 | this->deleteLater();
|
|---|
| 87 | }
|
|---|
| 88 |
|
|---|
| 89 | //
|
|---|
| 90 | ////////////////////////////////////////////////////////////////////////////
|
|---|
| 91 | void bncNetRequest::slotReadyRead() {
|
|---|
| 92 | cout << "slotReadyRead" << endl;
|
|---|
| 93 | QByteArray buffer = _reply->readAll();
|
|---|
| 94 | <<<<<<< bncnetrequest.cpp
|
|---|
| 95 | cerr << buffer.data();
|
|---|
| 96 | =======
|
|---|
| 97 |
|
|---|
| 98 | vector<string> errmsg;
|
|---|
| 99 | _decoder->Decode(buffer.data(), buffer.length(), errmsg);
|
|---|
| 100 |
|
|---|
| 101 | QListIterator<p_obs> it(_decoder->_obsList);
|
|---|
| 102 | while (it.hasNext()) {
|
|---|
| 103 | p_obs obs = it.next();
|
|---|
| 104 | cout << obs->_o.satSys << obs->_o.satNum << " "
|
|---|
| 105 | << obs->_o.GPSWeek << " "
|
|---|
| 106 | << obs->_o.GPSWeeks << " "
|
|---|
| 107 | << obs->_o.C1 << " "
|
|---|
| 108 | << obs->_o.C2 << " "
|
|---|
| 109 | << obs->_o.P1 << " "
|
|---|
| 110 | << obs->_o.P2 << " "
|
|---|
| 111 | << obs->_o.L1 << " "
|
|---|
| 112 | << obs->_o.L2 << endl;
|
|---|
| 113 | delete obs;
|
|---|
| 114 | }
|
|---|
| 115 | _decoder->_obsList.clear();
|
|---|
| 116 | >>>>>>> 1.9
|
|---|
| 117 | }
|
|---|
| 118 |
|
|---|
| 119 | //
|
|---|
| 120 | ////////////////////////////////////////////////////////////////////////////
|
|---|
| 121 | void bncNetRequest::slotError(QNetworkReply::NetworkError) {
|
|---|
| 122 | cout << "slotError " << _reply->error() << endl
|
|---|
| 123 | << _reply->errorString().toAscii().data() << endl;
|
|---|
| 124 | }
|
|---|
| 125 |
|
|---|
| 126 | //
|
|---|
| 127 | ////////////////////////////////////////////////////////////////////////////
|
|---|
| 128 | void bncNetRequest::slotSslErrors(const QList<QSslError>&) {
|
|---|
| 129 | cout << "slotSslError" << endl;
|
|---|
| 130 | }
|
|---|
| 131 |
|
|---|
| 132 | //
|
|---|
| 133 | ////////////////////////////////////////////////////////////////////////////
|
|---|
| 134 | void bncNetRequest::slotNewMessage(QByteArray msg, bool) {
|
|---|
| 135 | cout << "Message: " << msg.data() << endl;
|
|---|
| 136 | }
|
|---|