# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
-INPUT = /home/blacky/workspace/AudioManGUI
+INPUT = @CMAKE_CURRENT_SOURCE_DIR@
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
-INPUT = /home/blacky/workspace/AudioManagerDeamon
+INPUT = @CMAKE_CURRENT_SOURCE_DIR@
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
# should be ignored while generating the index headers.
IGNORE_PREFIX =
-dbus
+
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
-INPUT = /home/blacky/workspace/PlayerGUI
+INPUT = @CMAKE_CURRENT_SOURCE_DIR@
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
${STD_INCLUDE_DIRS}
${CMAKE_CURRENT_BINARY_DIR}
${DBUS_FOLDER}
- ../AudioManagerDeamon
+ ../AudioManagerDaemon
)
# add Qt modules here, the include will setup QT_LIBRARIES
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
-INPUT = /home/blacky/workspace/PluginRoutingInterfaceDbus
+INPUT = @CMAKE_CURRENT_SOURCE_DIR@
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
${STD_INCLUDE_DIRS}
${GLIB_INCLUDE_DIRS}
${JACK_INCLUDE_DIRS}
- ../AudioManagerDeamon
+ ../AudioManagerDaemon
)
LINK_DIRECTORIES(
# path before files name in the file list and in the header files. If set
# to NO the shortest path that makes the file name unique will be used.
-FULL_PATH_NAMES = YES
+FULL_PATH_NAMES = NO
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
# can be used to strip a user-defined part of the path. Stripping is
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
-INPUT = /home/blacky/workspace/PluginRoutingInterfaceJack
+INPUT = @CMAKE_CURRENT_SOURCE_DIR@
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
${CMAKE_CURRENT_BINARY_DIR}
${QT_INCLUDE_DIR}
${DBUS_FOLDER}
- ../AudioManagerDeamon
+ ../AudioManagerDaemon
)
# defines for QL Plugins
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
-INPUT = /home/blacky/workspace/PluginStructuralTest
+INPUT = @CMAKE_CURRENT_SOURCE_DIR@
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
Now it's time to start pulseaudio, since we need to start it with a special configuration, get into the pulseaudio directory and run
- src/pulseaudio -n -F src/default.pa -p $(pwd)/src/.libs/ -vvvv
+ src/pulseaudio -n -F src/test.pa -p $(pwd)/src/.libs/ -vvvv
The next step is to start the DLT server
--- /dev/null
+cmake_minimum_required(VERSION 2.6)
+
+PROJECT(PluginRoutingInterfaceTCP)
+
+set(CMAKE_CXX_FLAGS "-g -pipe -fPIC -Wall -W -D_REENTRANT")
+
+set(STD_INCLUDE_DIRS "/usr/include")
+set(EXECUTABLE_OUTPUT_PATH ../../bin/)
+set(LIBRARY_OUTPUT_PATH ../plugins)
+set(DBUS_FOLDER ${CMAKE_SOURCE_DIR}/../dbusInterfaces)
+
+cmake_policy(SET CMP0015 NEW)
+
+FIND_PACKAGE(Qt4 REQUIRED)
+FIND_PACKAGE(PkgConfig)
+pkg_check_modules(GLIB REQUIRED glib-2.0)
+
+INCLUDE_DIRECTORIES(
+ include
+ ${CMAKE_SOURCE_DIR}
+ ${STD_INCLUDE_DIRS}
+ ${GLIB_INCLUDE_DIRS}
+ ${DBUS_FOLDER}
+ ../AudioManagerDaemon
+)
+
+LINK_DIRECTORIES(
+ ${LINK_DIRECTORIES}
+ ${GLIB_LIBRARY_DIRS}
+)
+
+# add Qt modules here, the include will setup QT_LIBRARIES
+SET(QT_USE_QTNETWORK TRUE)
+
+# defines for QL Plugins
+ADD_DEFINITIONS(${QT_DEFINITIONS})
+ADD_DEFINITIONS(-DQT_STATICPLUGIN)
+ADD_DEFINITIONS(-DQT_PLUGIN)
+ADD_DEFINITIONS(-DQT_SHARED)
+
+
+
+INCLUDE(${QT_USE_FILE})
+
+# all source files go here
+SET(PLUGINJACK_SRCS_CXX
+ RoutingSend.cpp
+ tcpClient.cpp
+ TcpServer.cpp
+)
+
+# every header that contains QT stuff like Q_OBJECT .... and must be mocced
+SET(PLUGINJACK_MOC_SRCS
+ RoutingSend.h
+ tcpClient.h
+ TcpServer.h
+)
+
+#now take the headers, moc them and append the resulting moc files to the sources
+QT4_WRAP_CPP(PLUGINJACK_SRCS_CXX ${PLUGINJACK_MOC_SRCS})
+
+add_library(RoutingTcpPlugin ${PLUGINJACK_SRCS_CXX})
+
+TARGET_LINK_LIBRARIES(RoutingTcpPlugin
+ ${QT_LIBRARIES}
+)
+
+
+
+
--- /dev/null
+/*
+ * Bus_Interface.cpp
+ *
+ * Created on: Jan 19, 2011
+ * Author: demo
+ */
+#include <iostream>
+
+
+#include "RoutingSend.h"
+#include "routinginterface.h"
+#include "tcpMessages.h"
+
+
+using namespace std;
+
+
+void RoutingSendTcp::startup_interface(RoutingReceiveInterface* audioman){
+ audiomanager=audioman;
+ m_server=new TcpServer(AUDIOMAN_PORT);
+ m_client=new tcpClient(BEAGLE_IP,BEAGLE_PORT);
+ m_server->registerAudioManager(audiomanager);
+ cout<<"server started"<<endl;
+}
+
+void RoutingSendTcp::return_BusName(char* BusName) {
+ strcpy(BusName,BUS_NAME);
+}
+
+int RoutingSendTcp::Connect(int source, int sink){
+ return m_client->connect(source,sink);
+}
+
+void RoutingSendTcp::system_ready() {
+
+ m_client->system_ready();
+ cout<<"Tcp ready"<<endl;
+
+}
+
+
+RoutingSendInterface* SampleRoutingInterfaceTcpFactory::returnInstance(){
+ return new RoutingSendTcp();
+}
+
+Q_EXPORT_PLUGIN2(RoutingTcpPlugin, SampleRoutingInterfaceTcpFactory);
--- /dev/null
+/*
+ * Bus_Interface.h
+ *
+ * Created on: Feb 24, 2011
+ * Author: demo
+ */
+
+#ifndef BUS_INTERFACE_H_
+#define BUS_INTERFACE_H_
+
+#include <qplugin.h>
+#include "routinginterface.h"
+#include "TcpServer.h"
+#include "tcpClient.h"
+
+#define BUS_NAME "TCP"
+
+class RoutingSendTcp: public RoutingSendInterface
+{
+Q_OBJECT
+public:
+ void startup_interface(RoutingReceiveInterface * audioman);
+ void return_BusName(char * BusName);
+ int Connect(int source, int sink);
+public slots:
+ void system_ready();
+
+private:
+ RoutingReceiveInterface *audiomanager;
+ TcpServer* m_server;
+ tcpClient* m_client;
+};
+
+//That is the actual implementation of the Factory Class returning the real Interface
+
+class SampleRoutingInterfaceTcpFactory: public QObject, public RoutingInterfaceFactory
+{
+Q_OBJECT
+Q_INTERFACES(RoutingInterfaceFactory)
+public:
+ RoutingSendInterface* returnInstance();
+};
+
+#endif /* BUS_INTERFACE_H_ */
--- /dev/null
+/*
+ * TcpServer.cpp
+ *
+ * Created on: Apr 6, 2011
+ * Author: blacky
+ */
+
+#include "TcpServer.h"
+
+#include <iostream>
+#include <QList>
+#include <QByteArray>
+
+using namespace std;
+
+TcpServer::TcpServer(int ListenPort) {
+ connect(this, SIGNAL(newConnection()), this, SLOT(receivedCommand()));
+ if (! this->listen(QHostAddress::Any,ListenPort)) {
+ cout<<" Problem: "<<this->errorString().toStdString()<<endl;
+ }
+}
+
+TcpServer::~TcpServer() {
+ // TODO Auto-generated destructor stub
+}
+
+void TcpServer::registerAudioManager(RoutingReceiveInterface *audiomanager_) {
+ audiomanager=audiomanager_;
+}
+
+void TcpServer::receivedCommand() {
+ socket=this->nextPendingConnection ();
+ connect(socket, SIGNAL(readyRead()), this, SLOT(startRead()));
+ cout<<"got new command"<<endl;
+}
+
+void TcpServer::startRead() {
+ QByteArray buffer;
+ int answer;
+ bool earlyMode=false;
+ buffer=socket->readAll();
+ QList<QByteArray> bList=buffer.split('#');
+ switch (bList.at(0).toInt()) {
+ case MSG_registerDomain:
+ if (QString(bList.at(4))=="true") {
+ earlyMode=true;
+ }
+ answer=audiomanager->registerDomain((char*)bList.at(1).data(),(char*)bList.at(2).data(),(char*)bList.at(3).data(),earlyMode);
+ socket->write(QByteArray::number(answer));
+ break;
+ case MSG_registerGateway:
+ answer=audiomanager->registerGateway((char*)bList.at(1).data(),(char*)bList.at(2).data(),(char*)bList.at(3).data(),(char*)bList.at(4).data(),(char*)bList.at(5).data(),(char*)bList.at(6).data());
+ socket->write(QByteArray::number(answer));
+ break;
+ case MSG_registerSink:
+ answer=audiomanager->registerSink((char*)bList.at(1).data(),(char*)bList.at(2).data(),(char*)bList.at(3).data());
+ socket->write(QByteArray::number(answer));
+ break;
+ case MSG_registerSource:
+ answer=audiomanager->registerSource((char*)bList.at(1).data(),(char*)bList.at(2).data(),(char*)bList.at(3).data());
+ socket->write(QByteArray::number(answer));
+ break;
+ case MSG_peekDomain:
+ answer=audiomanager->peekDomain((char*)bList.at(1).data());
+ socket->write(QByteArray::number(answer));
+ break;
+ }
+}
--- /dev/null
+/*
+ * TcpServer.h
+ *
+ * Created on: Apr 6, 2011
+ * Author: blacky
+ */
+
+#ifndef I2CSERVER_H_
+#define I2CSERVER_H_
+
+#include <QtNetwork>
+#include <QObject>
+
+#include "routinginterface.h"
+#include "tcpMessages.h"
+
+class TcpServer : public QTcpServer{
+Q_OBJECT
+public:
+ TcpServer(int ListenPort);
+ virtual ~TcpServer();
+
+ void registerAudioManager(RoutingReceiveInterface *audiomanager_);
+
+public slots:
+ void receivedCommand();
+ void startRead();
+
+private:
+ QTcpSocket* socket;
+ RoutingReceiveInterface *audiomanager;
+};
+
+#endif /* I2CSERVER_H_ */
--- /dev/null
+/*
+ * udpClient.cpp
+ *
+ * Created on: Apr 6, 2011
+ * Author: blacky
+ */
+
+#include "tcpClient.h"
+#include <iostream>
+
+using namespace std;
+
+tcpClient::tcpClient(QString serverIP_, int serverPort_) {
+ serverIP=serverIP_;
+ serverPort=serverPort_;
+ QObject::connect(this, SIGNAL(connected()), this, SLOT(sendOut()));
+}
+
+tcpClient::~tcpClient() {
+ // TODO Auto-generated destructor stub
+}
+
+int tcpClient::connect(int source, int sink) {
+
+ sendBuffer.clear();
+ sendBuffer.append(QByteArray::number(MSG_CONNECT));
+ sendBuffer.append('#');
+ sendBuffer.append(QByteArray::number(source));
+ sendBuffer.append('#');
+ sendBuffer.append(QByteArray::number(sink));
+ if (send()) {
+ this->waitForReadyRead(CONNECT_TIMEOUT);
+ return this->readAll().toInt();
+ } else {
+ return -1;
+ }
+
+}
+
+void tcpClient::system_ready() {
+
+ sendBuffer.clear();
+ sendBuffer.append(QByteArray::number(SIG_system_ready));
+ send();
+}
+
+bool tcpClient::send() {
+ QHostAddress adr;
+ adr.setAddress(serverIP);
+ this->connectToHost(adr,serverPort);
+ if (!this->waitForConnected(CONNECT_TIMEOUT)) {
+ cout<<"No connection"<<endl;
+ return false;
+ } else {
+ cout<<"got connection"<<endl;
+ return true;
+ }
+}
+
+void tcpClient::sendOut() {
+ this->write(sendBuffer);
+}
--- /dev/null
+/*
+ * udpClient.h
+ *
+ * Created on: Apr 6, 2011
+ * Author: blacky
+ */
+#ifndef UDPCLIENT_H_
+#define UDPCLIENT_H_
+
+#include <QtNetwork>
+#include "tcpMessages.h"
+
+class tcpClient : public QTcpSocket
+{
+Q_OBJECT
+public:
+ tcpClient(QString serverIP, int serverPort);
+ virtual ~tcpClient();
+
+ int connect(int source, int sink);
+ void system_ready();
+
+ bool send();
+
+public slots:
+ void sendOut();
+
+
+private:
+ QString serverIP;
+ int serverPort;
+ QByteArray sendBuffer;
+
+};
+
+#endif /* UDPCLIENT_H_ */