summaryrefslogtreecommitdiff
path: root/AudioManagerDaemon/src/main.cpp
diff options
context:
space:
mode:
authorchristian mueller <christian.ei.mueller@bmw.de>2012-01-10 15:58:38 +0100
committerchristian mueller <christian.ei.mueller@bmw.de>2012-01-12 00:09:34 +0100
commit472d0762b68ce0f2a755b4215515a3e031831495 (patch)
tree276e811f00dfe17cba15c56092b33d67ba2793f6 /AudioManagerDaemon/src/main.cpp
parent6ebae8c4d3a340c135ed2f5f611a0e1c31994164 (diff)
downloadaudiomanager-472d0762b68ce0f2a755b4215515a3e031831495.tar.gz
* recreated the header files out of the model. Added versioning support in the headerfiles generated
* ensured compatibility with 64 bit systems while compiling dbus [ changed FindDBUS.cmake] * updated the README to better support building * updated typo in introspectable string of DBusWrapper * reworked including strategie * added getInterfafeVersion method on all interfaces * added Interface Versioning support * added version as part of .so ending * it is no possible to set a vector of source and sink sound properties at a time * added interface to ask for all loaded plugins on RoutingSender * added first version of telnet server (not yet productive) - set to not active in CMakeLists.txt * added changelog (created out of git commit log) * added default values for all enum types to be save even on other if communication is on other domain
Diffstat (limited to 'AudioManagerDaemon/src/main.cpp')
-rw-r--r--AudioManagerDaemon/src/main.cpp67
1 files changed, 51 insertions, 16 deletions
diff --git a/AudioManagerDaemon/src/main.cpp b/AudioManagerDaemon/src/main.cpp
index 5d840a9..d5c447d 100644
--- a/AudioManagerDaemon/src/main.cpp
+++ b/AudioManagerDaemon/src/main.cpp
@@ -36,19 +36,21 @@
//todo: make sure all configurations are tested
#include <config.h>
+#include <SocketHandler.h>
#ifdef WITH_DBUS_WRAPPER
#include <dbus/DBusWrapper.h>
#endif
#include "DatabaseHandler.h"
-#include "DatabaseObserver.h"
-#include "RoutingReceiver.h"
-#include "CommandReceiver.h"
-#include "ControlReceiver.h"
#include "ControlSender.h"
#include "CommandSender.h"
#include "RoutingSender.h"
-#include <SocketHandler.h>
+#include "RoutingReceiver.h"
+#include "CommandReceiver.h"
+#include "ControlReceiver.h"
+#include "DatabaseObserver.h"
+#include "TelnetServer.h"
#include <sys/resource.h>
+#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
#include <cstdlib>
@@ -58,8 +60,6 @@
#include <string.h>
#include <stdio.h>
-
-
#include <dlt/dlt.h>
DLT_DECLARE_CONTEXT(AudioManager)
@@ -69,19 +69,24 @@ using namespace am;
const char* USAGE_DESCRIPTION = "Usage:\tAudioManagerDaemon [options]\n"
"options:\t\n"
"\t-h: print this message\t\n"
+ "\t-i: info about current settings \t\n"
"\t-v: print version\t\n"
"\t-d: daemonize AudioManager \t\n"
- "\t-p: path for sqlite database (default is in memory)\t\n"
- "\t-c: <Name> use controllerPlugin <Name> (full path with .so ending)\t\n"
- "\t-l: <Name> replace command plugin directory with <Name> (full path)\t\n"
- "\t-r: <Name> replace routing plugin directory with <Name> (full path)\t\n"
- "\t-L: <Name> add command plugin directory with <Name> (full path)\t\n"
- "\t-R: <Name> add routing plugin directory with <Name> (full path)\t\n";
+ "\t-p<path> path for sqlite database (default is in memory)\t\n"
+ "\t-t<port> port for telnetconnection\t\n"
+ "\t-m<max> number of max telnetconnections\t\n"
+ "\t-c<Name> use controllerPlugin <Name> (full path with .so ending)\t\n"
+ "\t-l<Name> replace command plugin directory with <Name> (full path)\t\n"
+ "\t-r<Name> replace routing plugin directory with <Name> (full path)\t\n"
+ "\t-L<Name> add command plugin directory with <Name> (full path)\t\n"
+ "\t-R<Name> add routing plugin directory with <Name> (full path)\t\n";
std::string controllerPlugin=std::string(CONTROLLER_PLUGIN);
std::vector<std::string> listCommandPluginDirs;
std::vector<std::string> listRoutingPluginDirs;
std::string databasePath=std::string(":memory:");
+unsigned int telnetport=DEFAULT_TELNETPORT;
+unsigned int maxConnections=MAX_TELNETCONNECTIONS;
void daemonize ()
{
@@ -136,10 +141,29 @@ void parseCommandLine(int argc, char **argv)
{
while (optind < argc)
{
- int option = getopt (argc, argv, "h::v::c::l::r::L::R::d");
+ int option = getopt (argc, argv, "h::v::c::l::r::L::R::d::t::m::i::");
switch (option)
{
+ case 'i':
+ printf("Current settings:\n");
+ printf("\tAudioManagerDaemon Version:\t\t%s\n",DAEMONVERSION);
+ printf("\tTelnet portNumber:\t\t\t%i\n",telnetport);
+ printf("\tTelnet maxConnections:\t\t\t%i\n",maxConnections);
+ printf("\tSqlite Database path:\t\t\t%s\n",databasePath.c_str());
+ printf("\tControllerPlugin: \t\t\t%s\n",controllerPlugin.c_str());
+ printf("\tDirectory of CommandPlugins: \t\t%s\n",listCommandPluginDirs.front().c_str());
+ printf("\tDirectory of RoutingPlugins: \t\t%s\n",listRoutingPluginDirs.front().c_str());
+ exit(0);
+ break;
+ case 't':
+ assert(atoi(optarg)!=0);
+ telnetport=atoi(optarg);
+ break;
+ case 'm':
+ assert(atoi(optarg)!=0);
+ maxConnections=atoi(optarg);
+ break;
case 'p':
assert(!controllerPlugin.empty());
databasePath=std::string(optarg);
@@ -215,7 +239,6 @@ int main(int argc, char *argv[])
signalChildAction.sa_flags = SA_NOCLDWAIT;
sigaction (SIGCHLD, &signalChildAction, NULL);
-
//Instantiate all classes. Keep in same order !
#ifdef WITH_SOCKETHANDLER_LOOP
SocketHandler iSocketHandler;
@@ -233,13 +256,15 @@ int main(int argc, char *argv[])
RoutingSender iRoutingSender(listRoutingPluginDirs);
CommandSender iCommandSender(listCommandPluginDirs);
ControlSender iControlSender(controllerPlugin);
- DatabaseObserver iObserver(&iCommandSender, &iRoutingSender);
#ifdef WITH_DBUS_WRAPPER
#ifdef WITH_SOCKETHANDLER_LOOP
CommandReceiver iCommandReceiver(&iDatabaseHandler,&iControlSender,&iSocketHandler,&iDBusWrapper);
RoutingReceiver iRoutingReceiver(&iDatabaseHandler,&iRoutingSender,&iControlSender,&iSocketHandler,&iDBusWrapper);
ControlReceiver iControlReceiver(&iDatabaseHandler,&iRoutingSender,&iCommandSender,&iSocketHandler);
+#ifdef WITH_TELNET
+ TelnetServer iTelnetServer(&iSocketHandler,&iCommandSender,&iCommandReceiver,&iRoutingSender,&iRoutingReceiver,&iControlSender,&iControlReceiver,&iDatabaseHandler,telnetport,maxConnections);
+#endif
#else /*WITH_SOCKETHANDLER_LOOP */
CommandReceiver iCommandReceiver(&iDatabaseHandler,&iControlSender,&iDBusWrapper);
RoutingReceiver iRoutingReceiver(&iDatabaseHandler,&iRoutingSender,&iControlSender,&iDBusWrapper);
@@ -249,8 +274,18 @@ int main(int argc, char *argv[])
CommandReceiver iCommandReceiver(&iDatabaseHandler,&iControlSender,&iSocketHandler);
RoutingReceiver iRoutingReceiver(&iDatabaseHandler,&iRoutingSender,&iControlSender,&iSocketHandler);
ControlReceiver iControlReceiver(&iDatabaseHandler,&iRoutingSender,&iCommandSender,&iSocketHandler);
+#ifdef WITH_TELNET
+ TelnetServer iTelnetServer(&iSocketHandler,telnetport,maxConnections);
+#endif
#endif /*WITH_DBUS_WRAPPER*/
+#ifdef WITH_TELNET
+ DatabaseObserver iObserver(&iCommandSender, &iRoutingSender,&iTelnetServer);
+#else
+ DatabaseObserver iObserver(&iCommandSender, &iRoutingSender);
+#endif
+
+
//since the plugins have been loaded by the *Senders before, we can tell the Controller this:
iControlSender.hookAllPluginsLoaded();