/*! * * Copyright (c) 2019-2024 Diality Inc. - All Rights Reserved. * \copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file main.cpp * \author (last) Behrouz NematiPour * \date (last) 01-Aug-2024 * \author (original) Behrouz NematiPour * \date (original) 24-Sep-2019 * */ /*! * \mainpage UI Software Design Description * \details Detailed Description.\n * This document has been generated by Doxygen.\n * This document describes the detail description of the UI Application Software design.\n * UI Application starts by Application Initialization which happens in \ref main() "Application Initialization".\n * For information please see : * - \ref main() * - \subpage CommandLineSwitches * - \subpage DenaliMessageStructure * - \subpage MessageFlow * - \subpage GeneralModelsDescription * - \subpage MessageView */ // Qt #include #include #include #include #include #include // FW #include "Compatible.h" // Project #include "FileHandler.h" #include "MainTimer.h" #include "CanInterface.h" #include "FrameInterface.h" #include "MessageAcknowModel.h" #include "MessageDispatcher.h" #include "ApplicationController.h" #include "GuiController.h" #include "Logger.h" #include "DeviceController.h" #include "BluetoothInterface.h" #include "CloudSyncController.h" //AMIR #include "Settings.h" #include "Threads.h" // kernel #include /*! * \brief signalhandler * \details When application terminates it quits gracefully. * \param sig - The Linux signal causes the termination. */ void signalhandler(int sig) { if (sig == SIGINT) { qDebug() << QObject::tr("Application terminated by SIGINT"); qApp->quit(); } else if (sig == SIGTERM) { qDebug() << QObject::tr("Application terminated by SIGTERM"); qApp->quit(); } } int gFakeInterval = 0 ; QByteArray gFakeData = "" ; const char *gFakeData_default = "00" ; bool gSendEmptyKeepAwake = false ; bool gFakeSeqAtBegin = false ; bool gDisableUnhandledReport = false ; bool gDisableDialinUnhandled = false ; bool gDisableTimeout = false ; bool gDisableAlarmNoMinimize = false ; bool gDisableSDCFailLogStop = false ; bool gDisableCloudSyncFailStop = false ; bool gDisableCheckInLog = false ; bool gDisableAcknowLog = false ; bool gConsoleoutLogs = false ; bool gConsoleoutFrameInterface = false ; bool gConsoleoutCanInterface = false ; bool gEnableDryDemo = false ; QString gActiveCANBus = "can0"; bool gEnableManufacturing = false ; bool gEnableUpdating = false ; bool gUseRootHome = false ; bool gLogLongName = false ; bool gLogUpload = false ; bool gLogCompress = false ; bool gLogUnhandledOnly = false ; QString gParserErrorText = ""; QString gStandard_tmp = QString("/%1/").arg("tmp"); /*! * \page CommandLineSwitches Denali Command Line Switches * \verbatim * Usage: ./denali [options] * Denali * * Options: * -h, --help Displays help on commandline options. * --help-all Displays help including Qt specific * options. * -v, --version Displays version information. * -c, --canOut Show the Can Frame Output * -m, --msgOut Show the Message Output * -l, --logOut Show the Logs Output * -0, --enable-keep-awake Enable send low priority, empty message * on the CANBus just to keep UI board CAN * driver awake * -i, --fake-interval Test fake message interval(ms) * -f, --fake-message Test fake message data * will use default sequenced long fake * message if set to 00(default) * will used only if correct integer value * assigned for interval option * -b, --fake-message-seq-at-begin Test fake message sequence at the * beginning of the frame * -u, --disable-unhandled-report Disable unhandled messages report as an * error in the log * -d, --disable-dialin-unhandled Disable the Dialin messages logged as * unhandled * -q, --disable-timeout Disables communication timeout * -a, --disable-alarm-no-minimize Disables alarm no minimize * -S, --disable-sd-card-fail-log-stop disable-sd-card-fail-log-stop * -C, --disable-cloudsync-fail-stop disable-cloudsync-fail-stop * -k, --disable-check-in-log Disables Check-In Log * -K, --disable-acknow-log Disables Acknowledgment Log * -D, --enable-dry-demo Enables Dry-Demo Mode * -A, --active-can-bus Sets the Active CANBus [Shall start with * 'can' or 'vcan] * -E, --enable-manufacturing Enables the manufacturing mode to * configure the system for the first time. * -R, --use-root-home In case the application is not in * Manufacturing Setup but needs to use root * home folder for configurations. * -U, --enable-update-mode Enables the update mode to update only * necessary files during the update and * keep the rest. * -x, --use-log-long-name Use the log long file name format * _