diff options
author | Justin Dickow <jjdickow@gmail.com> | 2014-07-17 13:33:52 -0400 |
---|---|---|
committer | Justin Dickow <jjdickow@gmail.com> | 2014-07-17 13:33:52 -0400 |
commit | e95ad3b0a720d0301b4b4d8e895c427b6560880d (patch) | |
tree | 906935b6846071000ebab5e979d5fe902151f9d7 | |
parent | 0d4653c3f3160267f4399ba7df4636170b87fbdd (diff) | |
download | smartdevicelink-e95ad3b0a720d0301b4b4d8e895c427b6560880d.tar.gz |
appMain 3.5 updates
Authors
Alex Kutsan
Alexander Kutsan
Andrey Oleynik
Dmitriy Klimenko
Dmitriy Trunov
Dmitry Chmerev
Igor Kozyrenko
Konstantin Kolodiy
Nikita Vaganov
Polina Vyshnevska
Victor Slobodyanik
Vlad Semenyuk
Vladislav Smenyuk
Signed-off-by: Justin Dickow <jjdickow@gmail.com>
-rw-r--r-- | src/appMain/CMakeLists.txt | 9 | ||||
-rwxr-xr-x | src/appMain/init_policy.sh | 6 | ||||
-rwxr-xr-x | src/appMain/init_policy_pasa.sh | 4 | ||||
-rw-r--r-- | src/appMain/life_cycle.cc | 19 | ||||
-rw-r--r-- | src/appMain/main.cc | 86 | ||||
-rw-r--r-- | src/appMain/smartDeviceLink.ini | 5 |
6 files changed, 49 insertions, 80 deletions
diff --git a/src/appMain/CMakeLists.txt b/src/appMain/CMakeLists.txt index f32c200c5..f837c4412 100644 --- a/src/appMain/CMakeLists.txt +++ b/src/appMain/CMakeLists.txt @@ -112,6 +112,10 @@ file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/smartDeviceLink.ini DESTINATION ${CMAKE_CU file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/policy_table.json DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/hmi_capabilities.json DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/sdl_preloaded_pt.json DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) +if (CMAKE_SYSTEM_NAME STREQUAL "QNX") + file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/init_policy.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) +endif () + if (BUILD_TESTS) file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/log4cxx.properties DESTINATION ${CMAKE_BINARY_DIR}/test/) @@ -162,3 +166,8 @@ elseif (${QT_HMI}) PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) endif () +if (CMAKE_SYSTEM_NAME STREQUAL "QNX") + install(FILES init_policy.sh DESTINATION bin + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ + GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) +endif () diff --git a/src/appMain/init_policy.sh b/src/appMain/init_policy.sh new file mode 100755 index 000000000..40ecbea51 --- /dev/null +++ b/src/appMain/init_policy.sh @@ -0,0 +1,6 @@ +# This script star QDB server for SDL +# Need superuser to start qdb + +LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/qnx650/target/qnx6/x86/usr/lib +export LD_LIBRARY_PATH +/usr/sbin/qdb -c policy.ini diff --git a/src/appMain/init_policy_pasa.sh b/src/appMain/init_policy_pasa.sh new file mode 100755 index 000000000..16c82441b --- /dev/null +++ b/src/appMain/init_policy_pasa.sh @@ -0,0 +1,4 @@ +# This script prepare policy database on QNX for PASA + +cat /fs/mp/sql/policy.cfg > /pps/qnx/qdb/config/policy.db +mkdir -p /fs/rwdata/storage/policy diff --git a/src/appMain/life_cycle.cc b/src/appMain/life_cycle.cc index da876179c..3218de538 100644 --- a/src/appMain/life_cycle.cc +++ b/src/appMain/life_cycle.cc @@ -253,30 +253,23 @@ bool LifeCycle::InitMessageSystem() { #endif // MQUEUE_HMIADAPTER void LifeCycle::StopComponents() { -#ifdef TIME_TESTER - if (time_tester_) { - time_tester_->Stop(); - delete time_tester_; - time_tester_ = NULL; - } -#endif //TIME_TESTER hmi_handler_->set_message_observer(NULL); connection_handler_->set_connection_handler_observer(NULL); protocol_handler_->RemoveProtocolObserver(app_manager_); + app_manager_->Stop(); + + LOG4CXX_INFO(logger_, "Destroying Media Manager"); + protocol_handler_->RemoveProtocolObserver(media_manager_); + media_manager_->SetProtocolHandler(NULL); + media_manager::MediaManagerImpl::destroy(); LOG4CXX_INFO(logger_, "Destroying Application Manager."); - app_manager_->Stop(); application_manager::ApplicationManagerImpl::destroy(); LOG4CXX_INFO(logger_, "Destroying Transport Manager."); transport_manager_->Stop(); transport_manager::TransportManagerDefault::destroy(); - LOG4CXX_INFO(logger_, "Destroying Media Manager"); - protocol_handler_->RemoveProtocolObserver(media_manager_); - media_manager_->SetProtocolHandler(NULL); - media_manager::MediaManagerImpl::destroy(); - LOG4CXX_INFO(logger_, "Destroying Connection Handler."); protocol_handler_->set_session_observer(NULL); connection_handler::ConnectionHandlerImpl::destroy(); diff --git a/src/appMain/main.cc b/src/appMain/main.cc index 514454f06..6d982160a 100644 --- a/src/appMain/main.cc +++ b/src/appMain/main.cc @@ -33,8 +33,6 @@ */ #include <sys/stat.h> -#include <signal.h> -#include <fcntl.h> #include <unistd.h> #include <cstdio> #include <cstdlib> @@ -48,6 +46,7 @@ #include "./life_cycle.h" #include "utils/signals.h" +#include "utils/system.h" #include "config_profile/profile.h" #if defined(EXTENDED_MEDIA_MODE) @@ -64,61 +63,11 @@ CREATE_LOGGERPTR_GLOBAL(logger, "appMain") namespace { -const char kBrowser[] = "/usr/bin/chromium-browser"; -const char kBrowserName[] = "chromium-browser"; -const char kBrowserParams[] = "--auth-schemes=basic,digest,ntlm"; -const char kLocalHostAddress[] = "127.0.0.1"; -const char kApplicationVersion[] = "Develop"; - -#ifdef __QNX__ -bool Execute(std::string command, const char * const *) { - if (system(command.c_str()) == -1) { - LOG4CXX_FATAL(logger, "Can't start HMI!"); - return false; - } - return true; -} -#else -bool Execute(std::string file, const char * const * argv) { - // Create a child process. - pid_t pid_hmi = fork(); - - switch (pid_hmi) { - case -1: { // Error - LOG4CXX_FATAL(logger, "fork() failed!"); - return false; - } - case 0: { // Child process - int32_t fd_dev0 = open("/dev/null", O_RDWR, S_IWRITE); - if (0 > fd_dev0) { - LOG4CXX_FATAL(logger, "Open dev0 failed!"); - return false; - } - // close input/output file descriptors. - close(STDIN_FILENO); - close(STDOUT_FILENO); - close(STDERR_FILENO); - - // move input/output to /dev/null. - dup2(fd_dev0, STDIN_FILENO); - dup2(fd_dev0, STDOUT_FILENO); - dup2(fd_dev0, STDERR_FILENO); - - // Execute the program. - if (execvp(file.c_str(), const_cast<char* const *>(argv)) == -1) { - LOG4CXX_ERROR_WITH_ERRNO(logger, "execvp() failed! Can't start HMI!"); - _exit(EXIT_FAILURE); - } - - return true; - } - default: { /* Parent process */ - LOG4CXX_INFO(logger, "Process created with pid " << pid_hmi); - return true; - } - } -} -#endif +const std::string kBrowser = "/usr/bin/chromium-browser"; +const std::string kBrowserName = "chromium-browser"; +const std::string kBrowserParams = "--auth-schemes=basic,digest,ntlm"; +const std::string kLocalHostAddress = "127.0.0.1"; +const std::string kApplicationVersion = "SDL_RB_B3.5"; #ifdef WEB_HMI /** @@ -157,12 +106,8 @@ if (stat(hmi_link.c_str(), &sb) == -1) { LOG4CXX_FATAL(logger, "HMI index.html doesn't exist!"); return false; } - - std::string kBin = kBrowser; - const char* const kParams[4] = {kBrowserName, kBrowserParams, - hmi_link.c_str(), NULL}; - - return Execute(kBin, kParams); + return utils::System(kBrowser, kBrowserName).Add(kBrowserParams).Add(hmi_link) + .Execute(); } #endif // WEB_HMI @@ -179,7 +124,7 @@ bool InitHmi() { return false; } - return Execute(kStartHmi, NULL); + return utils::System(kStartHmi).Execute(); } #endif // QT_HMI @@ -215,6 +160,16 @@ int32_t main(int32_t argc, char** argv) { profile::Profile::instance()->config_file_name("smartDeviceLink.ini"); } +#ifdef __QNX__ + if (!profile::Profile::instance()->policy_turn_off()) { + if (!utils::System("./init_policy.sh").Execute(true)) { + LOG4CXX_ERROR(logger, "Failed initialization of policy database"); + DEINIT_LOGGER(); + exit(EXIT_FAILURE); + } + } +#endif // __QNX__ + main_namespace::LifeCycle::instance()->StartComponents(); // -------------------------------------------------------------------------- @@ -228,8 +183,7 @@ int32_t main(int32_t argc, char** argv) { LOG4CXX_INFO(logger, "InitMessageBroker successful"); if (profile::Profile::instance()->launch_hmi()) { - if (profile::Profile::instance()->server_address() == - std::string(kLocalHostAddress)) { + if (profile::Profile::instance()->server_address() == kLocalHostAddress) { LOG4CXX_INFO(logger, "Start HMI on localhost"); #ifndef NO_HMI diff --git a/src/appMain/smartDeviceLink.ini b/src/appMain/smartDeviceLink.ini index 379e89329..50f916aaf 100644 --- a/src/appMain/smartDeviceLink.ini +++ b/src/appMain/smartDeviceLink.ini @@ -64,7 +64,10 @@ NamedVideoPipePath = /tmp/video_stream_pipe NamedAudioPipePath = /tmp/audio_stream_pipe VideoStreamFile = video_stream_file AudioStreamFile = audio_stream_file -RecordingFile = audio.8bit.wav +; Recording file source (used for audio pass thru emulation only) +RecordingFileSource = audio.8bit.wav +; Recording file for audio pass thru +RecordingFileName = record.wav ; HelpPromt and TimeOutPrompt is a vector of strings separated by comma |