Index: main.cpp =================================================================== diff -u -rda12b441af2a10d0650f528325ca93d04eefac5f -rc933552983a659ca4cc351ff4d43d07319adab1e --- main.cpp (.../main.cpp) (revision da12b441af2a10d0650f528325ca93d04eefac5f) +++ main.cpp (.../main.cpp) (revision c933552983a659ca4cc351ff4d43d07319adab1e) @@ -23,48 +23,96 @@ // Qt #include #include -#include +#include #include +#include // Project #include "maintimer.h" +#include "caninterface.h" +#include "frameinterface.h" +#include "messagedispatcher.h" #include "applicationcontroller.h" +#include "guicontroller.h" +#ifdef UNIT_TEST + #include TEST_CLASS_INCLUDE + QTEST_MAIN(TEST_CLASS_NAME) +#else /*! \brief Application Initialization\n - * this section includes: + * Some part of the application need to be initialized out of any thread. + * So is initialized here to be initialized in the main thread. + * this section also includes: */ int main(int argc, char *argv[]) { //! - Qt Application initialization and parameters settings // Qt Core Application parameters settings // Qt Core Application Initialization - QGuiApplication app(argc, argv); + QApplication app(argc, argv); QCoreApplication::setApplicationName(QLatin1String("Denali")); QCoreApplication::setOrganizationName(QLatin1String("Diality Inc.")); + // Test code for debugging can messages + bool _consoleoutFrameInterface = false; + bool _consoleoutCanInterface = false; + QStringList args = app.arguments(); + if (args.length() >= 2) { + _consoleoutFrameInterface = args[1] == "1"; + } + if (args.length() >= 3) { + _consoleoutCanInterface = args[2] == "1"; + } + //! - Setting the application version regarding the Bamboo build number. QString ver_revis = QString("%1").arg(VER_REVIS); - if (ver_revis.isEmpty()) ver_revis = QString("%1").arg(VER_DEVEL); + if (ver_revis.isEmpty()) { + ver_revis = QString("%1").arg(VER_DEVEL); + } QCoreApplication::setApplicationVersion(QString("%1.%2.%3") .arg(VER_MAJOR) .arg(VER_MINOR) .arg(ver_revis)); //! - Translation initialization QTranslator translator; - if (translator.load(QLocale(), app.applicationName(), QLatin1String("_"), QLatin1String(":/translations"))) + bool trLoaded = translator.load(QLocale(), app.applicationName(), QLatin1String("_"), QLatin1String(":/translations")); + if (trLoaded) { app.installTranslator(&translator); + } //! - Initializing Main Timer - MainTimer::I()->init(); + _MainTimer->init(); + + //! - Initializing CanBus Interface + _CanInterface->init(); + _CanInterface->enableConsoleOut(_consoleoutCanInterface); + + //! - Initializing CanBus Message Handler + _FrameInterface->init(); + + //! - Initializing CanBus Message Dispatcher + _MessageDispatcher->init(); + _MessageDispatcher->enableConsoleOut(_consoleoutFrameInterface); + //! - Initializing Application Controller - QObject::connect(ApplicationController::I(), &ApplicationController::quit, &app, [](int retcode) { - // TODO : Logger needs to log this issue - qDebug() << "Application Terminated:" << retcode; + _ApplicationController->init(); + QObject::connect(&app, &QApplication::aboutToQuit, []() { + emit _ApplicationController->quit(); + }); + QObject::connect(_ApplicationController, &ApplicationController::quit, &app, [](int retcode) { + _CanInterface->quit(); QCoreApplication::exit(retcode); + qDebug() << QObject::tr("Application Terminated: %1").arg(retcode); }, Qt::QueuedConnection); - ApplicationController::I()->init(); + ////! - Initializing GUI Controller + _GuiController->init(); + + //! - Initialize the Qml Viewer and starts GUI + startGui(); + return app.exec(); } +#endif