QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
main.cc
Go to the documentation of this file.
1
#include "
QGCApplication.h
"
2
#include "
QGCCommandLineParser.h
"
3
#include "
LogManager.h
"
4
#include "
QGCLoggingCategory.h
"
5
#include "
Platform.h
"
6
7
#ifdef QGC_UNITTEST_BUILD
8
#include "UnitTestList.h"
9
#endif
10
11
QGC_LOGGING_CATEGORY_ON
(MainLog,
"Main"
)
12
13
int
main
(
int
argc,
char
*argv[])
14
{
15
// --- Parse command line arguments ---
16
const
auto
args =
QGCCommandLineParser::parse
(argc, argv);
17
if
(
const
auto
exitCode =
QGCCommandLineParser::handleParseResult
(args)) {
18
return
*exitCode;
19
}
20
21
// --- Platform initialization ---
22
if
(
const
auto
exitCode =
Platform::initialize
(argc, argv, args)) {
23
return
*exitCode;
24
}
25
26
QGCApplication
app(argc, argv, args);
27
28
LogManager::installHandler
();
29
30
Platform::setupPostApp
();
31
32
app.
init
();
33
34
// Apply after installFilter() (called during app.init) so rules aren't overwritten.
35
LogManager::applyEnvironmentLogLevel
();
36
37
// --- Run application or tests ---
38
const
auto
run = [&]() ->
int
{
39
using
QGCCommandLineParser::AppMode
;
40
switch
(
QGCCommandLineParser::determineAppMode
(args)) {
41
#ifdef QGC_UNITTEST_BUILD
42
case
AppMode::ListTests:
43
case
AppMode::Test:
44
return
QGCUnitTest::handleTestOptions(args);
45
#endif
46
case
AppMode::BootTest:
47
if
(!app.
bootTestPassed
()) {
48
qCCritical(MainLog) <<
"Simple boot test failed during GStreamer initialization"
;
49
return
1;
50
}
51
qCInfo(MainLog) <<
"Simple boot test completed"
;
52
return
0;
53
case
AppMode::Gui:
54
qCInfo(MainLog) <<
"Starting application event loop"
;
55
return
app.exec();
56
}
57
Q_UNREACHABLE();
58
};
59
60
const
int
exitCode = run();
61
62
// --- Cleanup ---
63
app.
shutdown
();
64
65
qCInfo(MainLog) <<
"Exiting main"
;
66
67
// Destroy LogManager while Qt is still fully functional (before static destruction).
68
delete
LogManager::instance
();
69
70
return
exitCode;
71
}
LogManager.h
Platform.h
QGCApplication.h
QGCCommandLineParser.h
QGCLoggingCategory.h
QGC_LOGGING_CATEGORY_ON
#define QGC_LOGGING_CATEGORY_ON(name, categoryStr)
Definition
QGCLoggingCategory.h:11
LogManager::applyEnvironmentLogLevel
static void applyEnvironmentLogLevel()
Definition
LogManager.cc:134
LogManager::installHandler
static void installHandler()
Definition
LogManager.cc:123
LogManager::instance
static LogManager * instance()
Definition
LogManager.cc:66
QGCApplication
The main application and management class.
Definition
QGCApplication.h:38
QGCApplication::init
void init()
Perform initialize which is common to both normal application running and unit tests.
Definition
QGCApplication.cc:221
QGCApplication::shutdown
void shutdown()
Definition
QGCApplication.cc:714
QGCApplication::bootTestPassed
bool bootTestPassed() const
Definition
QGCApplication.h:49
main
int main(int argc, char *argv[])
Definition
main.cc:13
Platform::setupPostApp
void setupPostApp()
Complete platform setup after application exists.
Definition
Platform.cc:235
Platform::initialize
std::optional< int > initialize(int argc, char *argv[], const QGCCommandLineParser::CommandLineParseResult &args)
Initialize platform: run safety checks and configure environment.
Definition
Platform.cc:160
QGCCommandLineParser::parse
CommandLineParseResult parse(int argc, char *argv[])
Parse command-line arguments with automatic QCoreApplication management.
Definition
QGCCommandLineParser.cc:415
QGCCommandLineParser::determineAppMode
AppMode determineAppMode(const CommandLineParseResult &args)
Determine the application mode from parsed arguments.
Definition
QGCCommandLineParser.cc:441
QGCCommandLineParser::AppMode
AppMode
Application execution mode.
Definition
QGCCommandLineParser.h:78
QGCCommandLineParser::handleParseResult
std::optional< int > handleParseResult(const CommandLineParseResult &result)
Handle early exit conditions (help, version, error)
Definition
QGCCommandLineParser.cc:424
src
main.cc
Generated by
1.9.8