diff options
Diffstat (limited to 'src/appMain/main.cc')
-rw-r--r-- | src/appMain/main.cc | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/src/appMain/main.cc b/src/appMain/main.cc index feb5b5830e..752cfb7bb9 100644 --- a/src/appMain/main.cc +++ b/src/appMain/main.cc @@ -35,6 +35,7 @@ #include <signal.h> #include <cstdio> #include <cstdlib> +#include <memory> #include <vector> #include <string> #include <iostream> // cpplint: Streams are highly discouraged. @@ -45,7 +46,7 @@ #include "utils/log_message_loop_thread.h" #include "utils/logger.h" -#include "./life_cycle.h" +#include "appMain/life_cycle_impl.h" #include "signal_handlers.h" #include "utils/signals.h" @@ -94,8 +95,8 @@ bool InitHmi(std::string hmi_link) { * \return EXIT_SUCCESS or EXIT_FAILURE */ int32_t main(int32_t argc, char** argv) { - // Unsibscribe once for all threads - if (!utils::UnsibscribeFromTermination()) { + // Unsubscribe once for all threads + if (!utils::Signals::UnsubscribeFromTermination()) { // Can't use internal logger here exit(EXIT_FAILURE); } @@ -103,13 +104,31 @@ int32_t main(int32_t argc, char** argv) { // -------------------------------------------------------------------------- // Components initialization profile::Profile profile_instance; - main_namespace::LifeCycle life_cycle(profile_instance); + std::unique_ptr<main_namespace::LifeCycle> life_cycle( + new main_namespace::LifeCycleImpl(profile_instance)); + if ((argc > 1) && (0 != argv)) { profile_instance.set_config_file_name(argv[1]); } else { profile_instance.set_config_file_name("smartDeviceLink.ini"); } + // Reading profile offsets for real-time signals dedicated + // for Low Voltage functionality handling + main_namespace::LowVoltageSignalsOffset signals_offset{ + profile_instance.low_voltage_signal_offset(), + profile_instance.wake_up_signal_offset(), + profile_instance.ignition_off_signal_offset()}; + + // Unsubscribe once for all threads + // except specific thread dedicated for + // Low Voltage signals handling + // Thread will be created later + if (!utils::Signals::UnsubscribeFromLowVoltageSignals(signals_offset)) { + // Can't use internal logger here + exit(EXIT_FAILURE); + } + // -------------------------------------------------------------------------- // Logger initialization INIT_LOGGER("log4cxx.properties", profile_instance.logs_enabled()); @@ -134,9 +153,9 @@ int32_t main(int32_t argc, char** argv) { // -------------------------------------------------------------------------- // Components initialization - if (!life_cycle.StartComponents()) { + if (!life_cycle->StartComponents()) { LOG4CXX_FATAL(logger_, "Failed to start components"); - life_cycle.StopComponents(); + life_cycle->StopComponents(); DEINIT_LOGGER(); exit(EXIT_FAILURE); } @@ -145,9 +164,9 @@ int32_t main(int32_t argc, char** argv) { // -------------------------------------------------------------------------- // Third-Party components initialization. - if (!life_cycle.InitMessageSystem()) { + if (!life_cycle->InitMessageSystem()) { LOG4CXX_FATAL(logger_, "Failed to init message system"); - life_cycle.StopComponents(); + life_cycle->StopComponents(); DEINIT_LOGGER(); _exit(EXIT_FAILURE); } @@ -167,10 +186,10 @@ int32_t main(int32_t argc, char** argv) { } // -------------------------------------------------------------------------- - life_cycle.Run(); + life_cycle->Run(); LOG4CXX_INFO(logger_, "Stop SDL due to caught signal"); - life_cycle.StopComponents(); + life_cycle->StopComponents(); LOG4CXX_INFO(logger_, "Application has been stopped successfuly"); DEINIT_LOGGER(); |