1 #ifndef WSPRNET_H 2 #define WSPRNET_H 3 4 #include <QObject> 5 #include <QTimer> 6 #include <QString> 7 #include <QList> 8 #include <QUrlQuery> 9 #include <QQueue> 10 11 class QNetworkAccessManager; 12 class QNetworkReply; 13 14 class WSPRNet : public QObject 15 { 16 Q_OBJECT 17 18 using SpotQueue = QQueue<QUrlQuery>; 19 20 public: 21 explicit WSPRNet (QNetworkAccessManager *, QObject *parent = nullptr); 22 void upload (QString const& call, QString const& grid, QString const& rfreq, QString const& tfreq, 23 QString const& mode, float TR_peirod, QString const& tpct, QString const& dbm, 24 QString const& version, QString const& fileName); 25 void post (QString const& call, QString const& grid, QString const& rfreq, QString const& tfreq, 26 QString const& mode, float TR_period, QString const& tpct, QString const& dbm, 27 QString const& version, QString const& decode_text = QString {}); 28 signals: 29 void uploadStatus (QString); 30 31 public slots: 32 void networkReply (QNetworkReply *); 33 void work (); 34 void abortOutstandingRequests (); 35 36 private: 37 bool decodeLine (QString const& line, SpotQueue::value_type& query) const; 38 SpotQueue::value_type urlEncodeNoSpot () const; 39 SpotQueue::value_type urlEncodeSpot (SpotQueue::value_type& spot) const; 40 QString encode_mode () const; 41 42 QNetworkAccessManager * network_manager_; 43 QList<QNetworkReply *> m_outstandingRequests; 44 QString m_call; 45 QString m_grid;; 46 QString m_rfreq; 47 QString m_tfreq; 48 QString m_mode; 49 QString m_tpct; 50 QString m_dbm; 51 QString m_vers; 52 QString m_file; 53 float TR_period_; 54 int spots_to_send_; 55 SpotQueue spot_queue_; 56 QTimer upload_timer_; 57 int m_uploadType; 58 }; 59 60 #endif // WSPRNET_H 61