| 
									
										
										
										
											2014-04-03 19:29:13 +00:00
										 |  |  | // -*- Mode: C++ -*-
 | 
					
						
							| 
									
										
										
										
											2013-08-25 01:48:45 +00:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * 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.
 | 
					
						
							| 
									
										
										
										
											2016-05-05 18:53:00 +00:00
										 |  |  |      // We rely on these columns being the same in the fortran code (lib/decoder.f90) that formats the decoded text
 | 
					
						
							| 
									
										
										
										
											2013-08-25 01:48:45 +00:00
										 |  |  |      enum Columns { column_time    = 0, | 
					
						
							|  |  |  |                     column_snr     = 5, | 
					
						
							| 
									
										
										
										
											2015-04-22 17:48:03 +00:00
										 |  |  |                     column_dt      = 9, | 
					
						
							| 
									
										
										
										
											2013-08-25 01:48:45 +00:00
										 |  |  |                     column_freq    = 14, | 
					
						
							|  |  |  |                     column_mode    = 19, | 
					
						
							| 
									
										
										
										
											2016-05-05 18:53:00 +00:00
										 |  |  |                     column_qsoText = 22 }; | 
					
						
							| 
									
										
										
										
											2013-08-25 01:48:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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(); | 
					
						
							| 
									
										
										
										
											2015-04-22 17:48:03 +00:00
										 |  |  |     float dt(); | 
					
						
							| 
									
										
										
										
											2013-08-25 01:48:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // find and extract any report. Returns true if this is a standard message
 | 
					
						
							| 
									
										
										
										
											2015-03-04 12:22:33 +00:00
										 |  |  |   bool report(QString const& myBaseCall, QString const& dxBaseCall, /*mod*/QString& report); | 
					
						
							| 
									
										
										
										
											2013-08-25 01:48:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // 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
 | 
					
						
							| 
									
										
										
										
											2016-10-03 17:08:02 +00:00
										 |  |  |     void deCallAndGrid(/*out*/QString& call, QString& grid); | 
					
						
							| 
									
										
										
										
											2013-08-25 01:48:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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
 |