forked from mavlink/qgroundcontrol
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLogCompressor.h
41 lines (33 loc) · 1.79 KB
/
LogCompressor.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#ifndef LOGCOMPRESSOR_H
#define LOGCOMPRESSOR_H
#include <QThread>
class LogCompressor : public QThread
{
Q_OBJECT
public:
/** @brief Create the log compressor. It will only get active upon calling startCompression() */
LogCompressor(QString logFileName, QString outFileName="", QString delimiter="\t");
/** @brief Start the compression of a raw, line-based logfile into a CSV file */
void startCompression(bool holeFilling=false);
bool isFinished();
int getCurrentLine();
protected:
void run(); ///< This function actually performs the compression. It's an overloaded function from QThread
QString logFileName; ///< The input file name.
QString outFileName; ///< The output file name. If blank defaults to logFileName
bool running; ///< True when the startCompression() function is operating.
int currentDataLine; ///< The current line of data that is being processed. Only relevant when running==true
QString delimiter; ///< Delimiter between fields in the output file. Defaults to tab ('\t')
bool holeFillingEnabled; ///< Enables the filling of holes in the dataset with the previous value (or NaN if none exists)
signals:
/** @brief This signal is emitted once a logfile has been finished writing
* @param fileName The name of the output (CSV) file
*/
void finishedFile(QString fileName);
/// This signal is connected to QGCApplication::showCriticalMessage to show critical errors which come from the thread.
/// There is no need for clients to connect to this signal.
void logProcessingCriticalError(const QString& title, const QString& msg);
private:
void _signalCriticalError(const QString& msg);
};
#endif // LOGCOMPRESSOR_H