summaryrefslogtreecommitdiff
path: root/enhanced-position-service/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'enhanced-position-service/src/main.cpp')
-rw-r--r--enhanced-position-service/src/main.cpp82
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;
}