diff options
Diffstat (limited to 'enhanced-position-service/src/main.cpp')
-rw-r--r-- | enhanced-position-service/src/main.cpp | 82 |
1 files changed, 54 insertions, 28 deletions
diff --git a/enhanced-position-service/src/main.cpp b/enhanced-position-service/src/main.cpp index 3fca398..649d8b3 100644 --- a/enhanced-position-service/src/main.cpp +++ b/enhanced-position-service/src/main.cpp @@ -4,8 +4,9 @@ * SPDX-License-Identifier: MPL-2.0 * * \ingroup EnhancedPositionService +* \author Marco Residori <marco.residori@xse.de> * -* \copyright Copyright (C) BMW Car IT GmbH 2011, 2012 +* \copyright Copyright (C) 2014, XS Embedded GmbH * * \license * This Source Code Form is subject to the terms of the @@ -15,42 +16,67 @@ * @licence end@ **************************************************************************/ -#include "serverimpl.h" -#include "demoifadaptor.h" +#include <stdio.h> +#include <signal.h> +#include <dbus-c++/dbus.h> -#include "ConfigurationImpl.h" -#include "confifadaptor.h" +#include "enhanced-position.h" +#include "position-feedback.h" +#include "configuration.h" +#include "log.h" -// e.g. testing with dbus-launch -#define USE_DBUS_SESSION_BUS 1 +const char* ENHANCED_POSITION_SERVICE_NAME = "org.genivi.positioning.EnhancedPosition"; +const char* ENHANCED_POSITION_OBJECT_PATH = "/org/genivi/positioning/EnhancedPosition"; +const char* POSITION_FEEDBACK_OBJECT_PATH = "/org/genivi/positioning/PositionFeedback"; +const char* CONFIGURATION_OBJECT_PATH = "/org/genivi/positioning/Configuration"; -int main(int argc, char *argv[]) +DLT_DECLARE_CONTEXT(gCtx); + +DBus::BusDispatcher dispatcher; + +static DBus::Connection *conn; + +void sighandler(int sig) +{ + LOG_INFO_MSG(gCtx,"Signal received"); + + dispatcher.leave(); +} + +int main() { - QCoreApplication a(argc, argv); + DLT_REGISTER_APP("ENHP", "EnhancedPositionService"); + DLT_REGISTER_CONTEXT(gCtx,"EPSR", "Global Context"); + LOG_INFO_MSG(gCtx,"starting EnhancedPositionService..."); + + signal(SIGTERM, sighandler); + signal(SIGINT, sighandler); - ServerImpl *server = new ServerImpl(); - new DemoIfAdaptor(server); + DBus::default_dispatcher = &dispatcher; - ConfigurationImpl *confServer = new ConfigurationImpl(); - new ConfigurationIfAdaptor(confServer); + conn = new DBus::Connection(DBus::Connection::SessionBus()); -#if USE_DBUS_SESSION_BUS - QDBusConnection connection = QDBusConnection::sessionBus(); -#else - QDBusConnection connection = QDBusConnection::systemBus(); -#endif + if (conn == NULL) + { + LOG_ERROR_MSG(gCtx,"Null pointer!"); + } - server->setConnection(connection); + conn->setup(&dispatcher); + conn->request_name(ENHANCED_POSITION_SERVICE_NAME); - bool ret = false; - ret |= connection.registerService("org.genivi.positioning.EnhancedPosition"); - ret |= connection.registerObject("/position", server); - ret |= connection.registerObject("/config", confServer); + EnhancedPosition EnhancedPositionServer(*conn, ENHANCED_POSITION_OBJECT_PATH); + PositionFeedback PositionFeedbackServer(*conn, POSITION_FEEDBACK_OBJECT_PATH); + Configuration ConfigurationServer(*conn, CONFIGURATION_OBJECT_PATH); + + EnhancedPositionServer.run(); + PositionFeedbackServer.run(); + ConfigurationServer.run(); - if (!ret) { - return EXIT_FAILURE; - } + dispatcher.enter(); - qDebug() << "loop ..."; - return a.exec(); + ConfigurationServer.shutdown(); + PositionFeedbackServer.shutdown(); + EnhancedPositionServer.shutdown(); + + return 0; } |