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/)
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 ()
#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();
*/
#include <sys/stat.h>
-#include <signal.h>
-#include <fcntl.h>
#include <unistd.h>
#include <cstdio>
#include <cstdlib>
#include "./life_cycle.h"
#include "utils/signals.h"
+#include "utils/system.h"
#include "config_profile/profile.h"
#if defined(EXTENDED_MEDIA_MODE)
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
/**
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
return false;
}
- return Execute(kStartHmi, NULL);
+ return utils::System(kStartHmi).Execute();
}
#endif // QT_HMI
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();
// --------------------------------------------------------------------------
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