WSJT-X/decodedtext.h
Bill Somerville 5eb5735168 Rearranged sequencing of audio streams and devices.
The code  was starting streams linked  to closed devices which  may be
causing issues on  the Mac version.  I have refactored  to ensure that
devices are always opened before related audio streams are started.

Made .h C++ headers emacs friendly.

Removed some code in the MainWindow  contructor that read the log file
but failed to check if the file exists and didn't do anything with the
data anyway.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@3977 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-04-03 19:29:13 +00:00

92 lines
2.2 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>
/*
0123456789012345678901234567890123456789
^ ^ ^ ^ ^ ^
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:
// 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/decode.f90) that formats the decoded text
enum Columns { column_time = 0,
column_snr = 5,
column_freq = 14,
column_mode = 19,
column_qsoText = 21 };
void operator=(const QString &rhs)
{
_string = rhs;
};
void operator=(const QByteArray &rhs)
{
_string = rhs;
};
void operator+=(const QString &rhs)
{
_string += rhs;
};
QString string() { return _string; };
int indexOf(QString s) { return _string.indexOf(s); };
int indexOf(QString s, int i) { return _string.indexOf(s,i); };
QString mid(int f, int t) { return _string.mid(f,t); };
QString left(int i) { return _string.left(i); };
void clear() { _string.clear(); };
QString CQersCall();
bool isJT65();
bool isJT9();
bool isTX();
int frequencyOffset(); // hertz offset from the tuned dial or rx frequency, aka audio frequency
int snr();
// find and extract any report. Returns true if this is a standard message
bool report(const QString myCall, /*mod*/QString& report);
// get the first text word, usually the call
QString call();
// get the second word, most likely the de call and the third word, most likely grid
void deCallAndGrid(/*out*/QString& call, QString& grid);
int timeInSeconds();
// returns a string of the SNR field with a leading + or - followed by two digits
QString report();
private:
QString _string;
};
extern "C" { bool stdmsg_(const char* msg, int len); }
#endif // DECODEDTEXT_H