summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Dickow <jjdickow@gmail.com>2014-07-17 13:33:52 -0400
committerJustin Dickow <jjdickow@gmail.com>2014-07-17 13:33:52 -0400
commite95ad3b0a720d0301b4b4d8e895c427b6560880d (patch)
tree906935b6846071000ebab5e979d5fe902151f9d7
parent0d4653c3f3160267f4399ba7df4636170b87fbdd (diff)
downloadsmartdevicelink-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.txt9
-rwxr-xr-xsrc/appMain/init_policy.sh6
-rwxr-xr-xsrc/appMain/init_policy_pasa.sh4
-rw-r--r--src/appMain/life_cycle.cc19
-rw-r--r--src/appMain/main.cc86
-rw-r--r--src/appMain/smartDeviceLink.ini5
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