mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-25 13:48:42 -05:00
88 lines
2.4 KiB
C++
88 lines
2.4 KiB
C++
// -*- Mode: C++ -*-
|
|
/*
|
|
* Class to handle the formatted string as returned from the fortran decoder
|
|
*
|
|
* VK3ACF August 2013
|
|
*/
|
|
|
|
|
|
#ifndef DECODEDTEXT_H
|
|
#define DECODEDTEXT_H
|
|
|
|
#include <QString>
|
|
|
|
|
|
|
|
/*
|
|
012345678901234567890123456789012345678901
|
|
^ ^ ^ ^ ^ ^
|
|
2343 -11 0.8 1259 # CQ VP2X/GM4WJS GL33
|
|
2343 -11 0.8 1259 # CQ 999 VP2V/GM4WJS
|
|
2343 -11 0.8 1259 # YV6BFE F6GUU R-08
|
|
2343 -19 0.3 718 # VE6WQ SQ2NIJ -14
|
|
2343 -7 0.3 815 # KK4DSD W7VP -16
|
|
2343 -13 0.1 3627 @ CT1FBK IK5YZT R+02
|
|
|
|
0605 Tx 1259 # CQ VK3ACF QF22
|
|
*/
|
|
|
|
class DecodedText
|
|
{
|
|
public:
|
|
explicit DecodedText (QString const& message);
|
|
|
|
QString string() const { return string_; };
|
|
QString clean_string() const { return clean_string_; };
|
|
QStringList messageWords () const;
|
|
int indexOf(QString s) const { return string_.indexOf(s); };
|
|
int indexOf(QString s, int i) const { return string_.indexOf(s,i); };
|
|
QString mid(int f, int t) const { return string_.mid(f,t); };
|
|
QString left(int i) const { return string_.left(i); };
|
|
|
|
void clear() { string_.clear(); };
|
|
|
|
QString CQersCall() const;
|
|
|
|
bool isJT65() const;
|
|
bool isJT9() const;
|
|
bool isTX() const;
|
|
bool isStandardMessage () const {return is_standard_;}
|
|
bool isLowConfidence () const;
|
|
int frequencyOffset() const; // hertz offset from the tuned dial or rx frequency, aka audio frequency
|
|
int snr() const;
|
|
float dt() const;
|
|
|
|
// find and extract any report. Returns true if this is a standard message
|
|
bool report(QString const& myBaseCall, QString const& dxBaseCall, /*mod*/QString& report) const;
|
|
|
|
// get the first message text word, usually the call
|
|
QString call() const;
|
|
|
|
// get the second word, most likely the de call and the third word, most likely grid
|
|
void deCallAndGrid(/*out*/QString& call, QString& grid) const;
|
|
|
|
unsigned timeInSeconds() const;
|
|
|
|
// returns a string of the SNR field with a leading + or - followed by two digits
|
|
QString report() const;
|
|
|
|
private:
|
|
// These define the columns in the decoded text where fields are to be found.
|
|
// We rely on these columns being the same in the fortran code (lib/decoder.f90) that formats the decoded text
|
|
enum Columns {column_time = 0,
|
|
column_snr = 5,
|
|
column_dt = 9,
|
|
column_freq = 14,
|
|
column_mode = 19,
|
|
column_qsoText = 22 };
|
|
|
|
QString string_;
|
|
QString clean_string_;
|
|
int padding_;
|
|
QString message_;
|
|
QString message0_;
|
|
bool is_standard_;
|
|
};
|
|
|
|
#endif // DECODEDTEXT_H
|