diff options
author | christian mueller <christian.ei.mueller@bmw.de> | 2011-12-22 17:27:16 +0100 |
---|---|---|
committer | christian mueller <christian.ei.mueller@bmw.de> | 2011-12-23 01:36:59 +0100 |
commit | 4f74d6e303c58326fe75ee75e1c92cf9263f800d (patch) | |
tree | da2c725f7cbad20e35169476b801066689a382a2 /AudioManagerDaemon | |
parent | 4618280b6d777ac7bf3bb5cf5b0ea3f0d9e4b2b7 (diff) | |
download | audiomanager-4f74d6e303c58326fe75ee75e1c92cf9263f800d.tar.gz |
* rework of buildsystem
* now everything depends on a toplevel CMakefile
* cleanup of makefiles and compiler options
Diffstat (limited to 'AudioManagerDaemon')
21 files changed, 356 insertions, 1857 deletions
diff --git a/AudioManagerDaemon/CMakeLists.txt b/AudioManagerDaemon/CMakeLists.txt index 472d23e..39c576f 100644 --- a/AudioManagerDaemon/CMakeLists.txt +++ b/AudioManagerDaemon/CMakeLists.txt @@ -14,69 +14,86 @@ cmake_minimum_required(VERSION 2.6) PROJECT(AudioManagerDeamon) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic") -#set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -DDLT_CONTEXT=AudioManager") +set(DOC_OUTPUT_PATH ${DOC_OUTPUT_PATH}/AudioManager) +set(INCLUDES_FOLDER "include") -##todo only when dbus needed! -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}") - -set(STD_INCLUDE_DIRS "/usr/include") -set(DBUS_FOLDER ${CMAKE_SOURCE_DIR}/../dbusInterfaces) -set(AUDIO_INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../includes) -set(DBUS_INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../dbusIncludes) -set(INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/include) -set(DOC_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/../doc/AudioManager) -set(EXECUTABLE_OUTPUT_PATH ../../bin/) -set(DOC_OUTPUT_PATH ../../doc/) -set(DOCUMENT $ENV{gendoc}) - -file(MAKE_DIRECTORY ${DOC_OUTPUT_PATH}) - -FIND_PACKAGE(PkgConfig) pkg_check_modules(SQLITE REQUIRED sqlite3) -pkg_check_modules(DLT REQUIRED automotive-dlt) -##todo: only when dbus is reuqired ! -find_package (Threads) -FIND_PACKAGE(DBUS REQUIRED) +IF(WITH_DBUS_WRAPPER) + FIND_PACKAGE(DBUS REQUIRED) +ENDIF(WITH_DBUS_WRAPPER) + +SET(AUDIOMAN_SRCS_CXX + src/CommandReceiver.cpp + src/CommandSender.cpp + src/ControlReceiver.cpp + src/ControlSender.cpp + src/DatabaseHandler.cpp + src/DatabaseObserver.cpp + src/main.cpp + src/RoutingReceiver.cpp + src/RoutingSender.cpp + src/SocketHandler.cpp +) + +IF(WITH_DBUS_WRAPPER) + SET (AUDIOMAN_SRCS_CXX + ${AUDIOMAN_SRCS_CXX} + src/DBusWrapper.cpp + ) +ENDIF(WITH_DBUS_WRAPPER) -file(GLOB AUDIOMAN_SRCS_CXX "src/*.cpp") +IF(WITH_SOCKETHANDLER_LOOP) + SET (AUDIOMAN_SRCS_CXX + ${AUDIOMAN_SRCS_CXX} + src/SocketHandler.cpp + ) +ENDIF(WITH_SOCKETHANDLER_LOOP) INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR} - ${STD_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR} ${DLT_INCLUDE_DIRS} - ${DBUS_INCLUDE_DIR} ${AUDIO_INCLUDES_FOLDER} ${INCLUDES_FOLDER} - ${DBUS_ARCH_INCLUDE_DIR} - ${DBUS_INCLUDES_FOLDER} ) +IF(WITH_DBUS_WRAPPER) +INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} + ${DBUS_ARCH_INCLUDE_DIR} + ${DBUS_INCLUDE_DIR} +) +ENDIF(WITH_DBUS_WRAPPER) + ADD_EXECUTABLE(AudioManager ${AUDIOMAN_SRCS_CXX}) -##todo only when dbus is required +IF(WITH_DBUS_WRAPPER) TARGET_LINK_LIBRARIES(AudioManager ${SQLITE_LIBRARIES} ${DLT_LIBRARIES} ${DBUS_LIBRARY} - ${CMAKE_THREAD_LIBS_INIT} ) +ELSE(WITH_DBUS_WRAPPER) + TARGET_LINK_LIBRARIES(AudioManager + ${SQLITE_LIBRARIES} + ${DLT_LIBRARIES} +) +ENDIF(WITH_DBUS_WRAPPER) -add_subdirectory (test) +IF(WITH_TESTS) + add_subdirectory (test) +ENDIF(WITH_TESTS) -#add a target to generate API documentation with Doxygen -find_package(Doxygen) -if(DOXYGEN_FOUND) -if(DOCUMENT) - configure_file(Doxyfile.in ${PROJECT_BINARY_DIR}/Doxyfile @ONLY IMMEDIATE) +IF(WITH_DOCUMENTATION) + file(MAKE_DIRECTORY ${DOC_OUTPUT_PATH}) + configure_file(${DOXY_FILE} ${DOC_OUTPUT_PATH}/Doxyfile @ONLY IMMEDIATE) add_custom_target (Docs ALL - COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH} - SOURCES ${PROJECT_BINARY_DIR}/Doxyfile) -endif(DOCUMENT) -endif(DOXYGEN_FOUND) + COMMAND ${DOXYGEN_EXECUTABLE} ${DOC_OUTPUT_PATH}/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH} + SOURCES ${PROJECT_BINARY_DIR} ${DOC_OUTPUT_PATH}/Doxyfile + ) +ENDIF(WITH_DOCUMENTATION) diff --git a/AudioManagerDaemon/Doxyfile.in b/AudioManagerDaemon/Doxyfile.in deleted file mode 100644 index bb1ef58..0000000 --- a/AudioManagerDaemon/Doxyfile.in +++ /dev/null @@ -1,1661 +0,0 @@ -# Doxyfile 1.7.1 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# http://www.gnu.org/software/libiconv for the list of possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = AudioManager - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = 0.1 - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# 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 - -# 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 -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) - -JAVADOC_AUTOBRIEF = YES - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for -# Java. For instance, namespaces will be presented as packages, qualified -# scopes will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources only. Doxygen will then generate output that is more tailored for -# Fortran. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for -# VHDL. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given extension. -# Doxygen has a built-in mapping, but you can override or extend it using this -# tag. The format is ext=language, where ext is a file extension, and language -# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, -# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make -# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C -# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions -# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. -# Doxygen will parse them like normal C++ but will assume all classes use public -# instead of private inheritance when no explicit protection keyword is present. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate getter -# and setter methods for a property. Setting this option to YES (the default) -# will make doxygen to replace the get and set methods by a property in the -# documentation. This will only work if the methods are indeed getting or -# setting a simple type. If this is not the case, or you want to show the -# methods anyway, you should set this option to NO. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum -# is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically -# be useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. - -TYPEDEF_HIDES_STRUCT = YES - -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to -# determine which symbols to keep in memory and which to flush to disk. -# When the cache is full, less often used symbols will be written to disk. -# For small to medium size projects (<1000 input files) the default value is -# probably good enough. For larger projects a too small cache size can cause -# doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penality. -# If the system has enough physical memory increasing the cache will improve the -# performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will rougly double the -# memory usage. The cache size is given by this formula: -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols - -SYMBOL_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = YES - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base -# name of the file that contains the anonymous namespace. By default -# anonymous namespace are hidden. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen -# will list include files with double quotes in the documentation -# rather than with sharp brackets. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = YES - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen -# will sort the (brief and detailed) documentation of class members so that -# constructors and destructors are listed first. If set to NO (the default) -# the constructors will appear in the respective orders defined by -# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. -# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO -# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the -# hierarchy of group names into alphabetical order. If set to NO (the default) -# the group names will appear in their defined order. - -SORT_GROUP_NAMES = YES - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. -# This will remove the Files entry from the Quick Index and from the -# Folder Tree View (if specified). The default is YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the -# Namespaces page. This will remove the Namespaces entry from the Quick Index -# and from the Folder Tree View (if specified). The default is YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command <command> <input-file>, where <command> is the value of -# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. The create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. -# You can optionally specify a file name after the option, if omitted -# DoxygenLayout.xml will be used as the name of the layout file. - -LAYOUT_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -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 -# also the default input encoding. Doxygen uses libiconv (or the iconv built -# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for -# the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 - -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cpp \ - *.c++ \ - *.d \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.idl \ - *.odl \ - *.cs \ - *.php \ - *.php3 \ - *.inc \ - *.m \ - *.mm \ - *.dox \ - *.py \ - *.f90 \ - *.f \ - *.vhd \ - *.vhdl - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = ../../AudioManGUI - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command <filter> <input-file>, where <filter> -# is the value of the INPUT_FILTER tag, and <input-file> is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. Otherwise they will link to the documentation. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = YES - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. -# Doxygen will adjust the colors in the stylesheet and background images -# according to this color. Hue is specified as an angle on a colorwheel, -# see http://en.wikipedia.org/wiki/Hue for more information. -# For instance the value 0 represents red, 60 is yellow, 120 is green, -# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. -# The allowed range is 0 to 359. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of -# the colors in the HTML output. For a value of 0 the output will use -# grayscales only. A value of 255 will produce the most vivid colors. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to -# the luminance component of the colors in the HTML output. Values below -# 100 gradually make the output lighter, whereas values above 100 make -# the output darker. The value divided by 100 is the actual gamma applied, -# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, -# and 100 does not change the gamma. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting -# this to NO can help when comparing the output of multiple runs. - -HTML_TIMESTAMP = YES - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). - -HTML_DYNAMIC_SECTIONS = YES - -# If the GENERATE_DOCSET tag is set to YES, additional index files -# will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 (Leopard). -# To create a documentation set, doxygen will generate a Makefile in the -# HTML output directory. Running make will produce the docset in that -# directory and running "make install" will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find -# it at startup. -# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. - -GENERATE_DOCSET = NO - -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the -# feed. A documentation feed provides an umbrella under which multiple -# documentation sets from a single provider (such as a company or product suite) -# can be grouped. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that -# should uniquely identify the documentation set bundle. This should be a -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen -# will append .docset to the name. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING -# is used to encode HtmlHelp index (hhk), content (hhc) and project file -# content. - -CHM_INDEX_ENCODING = - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated -# that can be used as input for Qt's qhelpgenerator to generate a -# Qt Compressed Help (.qch) of the generated HTML documentation. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can -# be used to specify the file name of the resulting .qch file. -# The path specified is relative to the HTML output folder. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#namespace - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#virtual-folders - -QHP_VIRTUAL_FOLDER = doc - -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to -# add. For more information please see -# http://doc.trolltech.com/qthelpproject.html#custom-filters - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see -# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters"> -# Qt Help Project / Custom Filters</a>. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's -# filter section matches. -# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes"> -# Qt Help Project / Filter Attributes</a>. - -QHP_SECT_FILTER_ATTRS = - -# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can -# be used to specify the location of Qt's qhelpgenerator. -# If non-empty doxygen will try to run qhelpgenerator on the generated -# .qhp file. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files -# will be generated, which together with the HTML files, form an Eclipse help -# plugin. To install this plugin and make it available under the help contents -# menu in Eclipse, the contents of the directory containing the HTML and XML -# files needs to be copied into the plugins directory of eclipse. The name of -# the directory within the plugins directory should be the same as -# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before -# the help appears. - -GENERATE_ECLIPSEHELP = YES - -# A unique identifier for the eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have -# this name. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. -# If the tag value is set to YES, a side panel will be generated -# containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). -# Windows users are probably better off using the HTML help feature. - -GENERATE_TREEVIEW = YES - -# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, -# and Class Hierarchy pages using a tree view instead of an ordered list. - -USE_INLINE_TREES = YES - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open -# links to external symbols imported via tag files in a separate window. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of Latex formulas included -# as images in the HTML documentation. The default is 10. Note that -# when you change the font size after a successful doxygen run you need -# to manually remove any form_*.png images from the HTML output directory -# to force them to be regenerated. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are -# not supported properly for IE 6.0, but are supported on all modern browsers. -# Note that when changing this option you need to delete any form_*.png files -# in the HTML output before the changes have effect. - -FORMULA_TRANSPARENT = YES - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box -# for the HTML output. The underlying search engine uses javascript -# and DHTML and should work on any modern browser. Note that when using -# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets -# (GENERATE_DOCSET) there is already a search function so this one should -# typically be disabled. For large projects the javascript based search engine -# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. - -SEARCHENGINE = YES - -# When the SERVER_BASED_SEARCH tag is enabled the search engine will be -# implemented using a PHP enabled web server instead of at the web client -# using Javascript. Doxygen will generate the search PHP script and index -# file to put on the web server. The advantage of the server -# based approach is that it scales better to large projects and allows -# full text search. The disadvances is that it is more difficult to setup -# and does not have live searching capabilities. - -SERVER_BASED_SEARCH = NO - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. -# Note that when enabling USE_PDFLATEX this option is only used for -# generating bitmaps for formulas in the HTML output, but not in the -# Makefile that is written to the output directory. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = YES - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -# If LATEX_SOURCE_CODE is set to YES then doxygen will include -# source code with syntax highlighting in the LaTeX output. -# Note that which sources are shown also depends on other settings -# such as SOURCE_BROWSER. - -LATEX_SOURCE_CODE = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = NO - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see -# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = YES - -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is -# allowed to run in parallel. When set to 0 (the default) doxygen will -# base this on the number of processors available in the system. You can set it -# explicitly to a value larger than 0 to get control over the balance -# between CPU load and processing speed. - -DOT_NUM_THREADS = 0 - -# By default doxygen will write a font called FreeSans.ttf to the output -# directory and reference it in all dot files that doxygen generates. This -# font does not include all possible unicode characters however, so when you need -# these (or just want a differently looking font) you can specify the font name -# using DOT_FONTNAME. You need need to make sure dot is able to find the font, -# which can be done by putting it in a standard location or by setting the -# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory -# containing the font. - -DOT_FONTNAME = FreeSans.ttf - -# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. -# The default size is 10pt. - -DOT_FONTSIZE = 10 - -# By default doxygen will tell dot to use the output directory to look for the -# FreeSans.ttf font (which doxygen will put there itself). If you specify a -# different font using DOT_FONTNAME you can set the path where dot -# can find it using this tag. - -DOT_FONTPATH = - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT options are set to YES then -# doxygen will generate a call dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable call graphs -# for selected functions only using the \callgraph command. - -CALL_GRAPH = YES - -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then -# doxygen will generate a caller dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable caller -# graphs for selected functions only using the \callergraph command. - -CALLER_GRAPH = YES - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen if the -# number of direct children of the root node in a graph is already larger than -# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. - -DOT_GRAPH_MAX_NODES = 50 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not -# seem to support this out of the box. Warning: Depending on the platform used, -# enabling this option may lead to badly anti-aliased labels on the edges of -# a graph (i.e. they become hard to read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES diff --git a/AudioManagerDaemon/FindDBUS.cmake b/AudioManagerDaemon/FindDBUS.cmake deleted file mode 100644 index 48bc348..0000000 --- a/AudioManagerDaemon/FindDBUS.cmake +++ /dev/null @@ -1,45 +0,0 @@ -############################################################################ -# -# Copyright 2010, 2011 BMW Car IT GmbH -# -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -############################################################################ - -FIND_PATH(DBUS_INCLUDE_DIR dbus/dbus.h -/usr/include/dbus-1.0 -) - -FIND_PATH(DBUS_ARCH_INCLUDE_DIR dbus/dbus-arch-deps.h -/usr/lib/dbus-1.0/include -) - -FIND_LIBRARY(DBUS_LIBRARY -NAMES dbus-1 -PATHS /lib -) - -SET( DBUS_FOUND "NO" ) -IF(DBUS_LIBRARY) - SET( DBUS_FOUND "YES" ) - message(STATUS "Found DBUS libs: ${DBUS_LIBRARY}") - message(STATUS "Found DBUS includes: ${DBUS_INCLUDE_DIR}") - message(STATUS "Found DBUS arch dependent includes: ${DBUS_ARCH_INCLUDE_DIR}") -ENDIF(DBUS_LIBRARY) - -MARK_AS_ADVANCED( - DBUS_INCLUDE_DIR - DBUS_ARCH_INCLUDE_DIR - DBUS_LIBRARY -) diff --git a/AudioManagerDaemon/include/CommandReceiver.h b/AudioManagerDaemon/include/CommandReceiver.h index 7a4fdc8..6d9201f 100644 --- a/AudioManagerDaemon/include/CommandReceiver.h +++ b/AudioManagerDaemon/include/CommandReceiver.h @@ -26,8 +26,12 @@ #define COMMANDRECEIVER_H_ #include <command/CommandReceiveInterface.h> +#include <config.h> +#ifdef WITH_DBUS_WRAPPER +#include <dbus/DBusWrapper.h> +#endif +#include <SocketHandler.h> #include "DatabaseHandler.h" -#include "DBusWrapper.h" #include "ControlSender.h" namespace am { @@ -37,7 +41,9 @@ namespace am { */ class CommandReceiver: public CommandReceiveInterface { public: - CommandReceiver(DatabaseHandler* iDatabaseHandler, DBusWrapper* iDBusWrapper, ControlSender* iControlSender); + CommandReceiver(DatabaseHandler* iDatabaseHandler, ControlSender* iControlSender,DBusWrapper* iDBusWrapper); + CommandReceiver(DatabaseHandler* iDatabaseHandler, ControlSender* iControlSender,SocketHandler* iSocketHandler); + CommandReceiver(DatabaseHandler* iDatabaseHandler, ControlSender* iControlSender,SocketHandler* iSocketHandler,DBusWrapper* iDBusWrapper); virtual ~CommandReceiver(); am_Error_e connect(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t& mainConnectionID) ; am_Error_e disconnect(const am_mainConnectionID_t mainConnectionID) ; @@ -57,11 +63,13 @@ public: am_Error_e getListSystemProperties(std::vector<am_SystemProperty_s>& listSystemProperties) const ; am_Error_e getTimingInformation(const am_mainConnectionID_t mainConnectionID, am_timeSync_t& delay) const ; am_Error_e getDBusConnectionWrapper(DBusWrapper*& dbusConnectionWrapper) const ; + am_Error_e getSocketHandler(SocketHandler*& socketHandler) const; private: DatabaseHandler* mDatabaseHandler; //!< pointer to the databasehandler DBusWrapper* mDBusWrapper; //!< pointer to the dbuswrapper ControlSender* mControlSender; //!< pointer to the control sender + SocketHandler* mSocketHandler; //!< pointer to the SocketHandler }; } diff --git a/AudioManagerDaemon/include/ControlReceiver.h b/AudioManagerDaemon/include/ControlReceiver.h index 7692a10..303d675 100644 --- a/AudioManagerDaemon/include/ControlReceiver.h +++ b/AudioManagerDaemon/include/ControlReceiver.h @@ -26,6 +26,11 @@ #define CONTRONLRECEIVER_H_ #include <control/ControlReceiveInterface.h> +#include <SocketHandler.h> +#include <config.h> +#ifdef WITH_DBUS_WRAPPER +#include <dbus/DBusWrapper.h> +#endif #include "DatabaseHandler.h" #include "RoutingSender.h" #include "CommandSender.h" @@ -37,6 +42,7 @@ namespace am { */ class ControlReceiver: public ControlReceiveInterface { public: + ControlReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, CommandSender *iCommandSender, SocketHandler *iSocketHandler); ControlReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, CommandSender *iCommandSender); virtual ~ControlReceiver(); am_Error_e getRoute(const bool onlyfree, const am_sourceID_t sourceID, const am_sinkID_t sinkID, std::vector<am_Route_s>& returnList) ; @@ -100,11 +106,13 @@ public: am_Error_e getListSystemProperties(std::vector<am_SystemProperty_s>& listSystemProperties) const ; void setRoutingReady() ; void setCommandReady() ; + am_Error_e getSocketHandler(SocketHandler*& socketHandler); private: DatabaseHandler* mDatabaseHandler; //!< pointer tto the databasehandler RoutingSender* mRoutingSender; //!< pointer to the routing send interface. CommandSender* mCommandSender; //!< pointer to the command send interface + SocketHandler* mSocketHandler; //!< pointer to the socketHandler }; } diff --git a/AudioManagerDaemon/include/RoutingReceiver.h b/AudioManagerDaemon/include/RoutingReceiver.h index 01933d5..f3ba2fe 100644 --- a/AudioManagerDaemon/include/RoutingReceiver.h +++ b/AudioManagerDaemon/include/RoutingReceiver.h @@ -25,7 +25,12 @@ #ifndef ROUTINGRECEIVER_H_ #define ROUTINGRECEIVER_H_ -#include "routing/RoutingReceiveInterface.h" +#include <routing/RoutingReceiveInterface.h> +#include <SocketHandler.h> +#include <config.h> +#ifdef WITH_DBUS_WRAPPER +#include <dbus/DBusWrapper.h> +#endif #include "DatabaseHandler.h" #include "RoutingSender.h" #include "ControlSender.h" @@ -37,7 +42,9 @@ namespace am { */ class RoutingReceiver : public RoutingReceiveInterface { public: - RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, ControlSender *iControlSender); + RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, ControlSender *iControlSender, SocketHandler *iSocketHandler); + RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, ControlSender *iControlSender, DBusWrapper *iDBusWrapper); + RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, ControlSender *iControlSender,SocketHandler *iSocketHandler,DBusWrapper *iDBusWrapper); virtual ~RoutingReceiver(); void ackConnect(const am_Handle_s handle, const am_connectionID_t connectionID, const am_Error_e error) ; void ackDisconnect(const am_Handle_s handle, const am_connectionID_t connectionID, const am_Error_e error) ; @@ -62,8 +69,8 @@ public: am_Error_e deregisterSource(const am_sourceID_t sourceID) ; am_Error_e registerCrossfader(const am_Crossfader_s& crossfaderData, am_crossfaderID_t& crossfaderID) ; am_Error_e deregisterCrossfader(const am_crossfaderID_t crossfaderID) ; - am_Error_e peekSinkClassID(const std::string& name, am_sourceClass_t& sourceClassID) ; - am_Error_e peekSourceClassID(const std::string& name, am_sinkClass_t& sinkClassID) ; + am_Error_e peekSinkClassID(const std::string name, const am_sinkClass_t& sinkClassID) ; + am_Error_e peekSourceClassID(const std::string name, const am_sourceClass_t& sourceClassID) ; void hookInterruptStatusChange(const am_sourceID_t sourceID, const am_InterruptState_e interruptState) ; void hookDomainRegistrationComplete(const am_domainID_t domainID) ; void hookSinkAvailablityStatusChange(const am_sinkID_t sinkID, const am_Availability_s& availability) ; @@ -71,11 +78,15 @@ public: void hookDomainStateChange(const am_domainID_t domainID, const am_DomainState_e domainState) ; void hookTimingInformationChanged(const am_connectionID_t connectionID, const am_timeSync_t delay) ; am_Error_e sendChangedData(const std::vector<am_EarlyData_s>& earlyData) ; - am_Error_e getDBusConnectionWrapper(DBusWrapper* dbusConnectionWrapper) const ; + am_Error_e getDBusConnectionWrapper(DBusWrapper*& dbusConnectionWrapper) const ; + am_Error_e getSocketHandler(SocketHandler*& socketHandler) const; + private: DatabaseHandler *mDatabaseHandler; //!< pointer to the databaseHandler RoutingSender *mRoutingSender; //!< pointer to the routingSender ControlSender *mControlSender; //!< pointer to the controlSender + DBusWrapper *mDBusWrapper; //!< pointer to dbuswrapper + SocketHandler *mSocketHandler; //!< pointer to sockethandler }; diff --git a/AudioManagerDaemon/src/CommandReceiver.cpp b/AudioManagerDaemon/src/CommandReceiver.cpp index 80e3c8e..1497176 100644 --- a/AudioManagerDaemon/src/CommandReceiver.cpp +++ b/AudioManagerDaemon/src/CommandReceiver.cpp @@ -23,7 +23,8 @@ */ #include "CommandReceiver.h" - +#include <SocketHandler.h> +#include <config.h> #include <assert.h> #include <dlt/dlt.h> @@ -31,14 +32,36 @@ DLT_IMPORT_CONTEXT(DLT_CONTEXT) using namespace am; -CommandReceiver::CommandReceiver (DatabaseHandler* iDatabaseHandler, DBusWrapper* iDBusWrapper, ControlSender* iControlSender) - : mDatabaseHandler(iDatabaseHandler), - mDBusWrapper(iDBusWrapper), - mControlSender(iControlSender) +am::CommandReceiver::CommandReceiver(DatabaseHandler *iDatabaseHandler, ControlSender *iControlSender, DBusWrapper *iDBusWrapper) +: mDatabaseHandler(iDatabaseHandler), + mControlSender(iControlSender), + mDBusWrapper(iDBusWrapper) +{ +assert(mDatabaseHandler!=NULL); +assert(mDBusWrapper!=NULL); +assert(mControlSender!=NULL); +} + +am::CommandReceiver::CommandReceiver(DatabaseHandler *iDatabaseHandler, ControlSender *iControlSender, SocketHandler *iSocketHandler) +: mDatabaseHandler(iDatabaseHandler), + mControlSender(iControlSender), + mSocketHandler(iSocketHandler) { - assert(mDatabaseHandler!=NULL); - assert(mDBusWrapper!=NULL); - assert(mControlSender!=NULL); +assert(mDatabaseHandler!=NULL); +assert(mSocketHandler!=NULL); +assert(mControlSender!=NULL); +} + +am::CommandReceiver::CommandReceiver(DatabaseHandler *iDatabaseHandler, ControlSender *iControlSender, SocketHandler *iSocketHandler, DBusWrapper *iDBusWrapper) +: mDatabaseHandler(iDatabaseHandler), + mControlSender(iControlSender), + mDBusWrapper(iDBusWrapper), + mSocketHandler(iSocketHandler) +{ +assert(mDatabaseHandler!=NULL); +assert(mSocketHandler!=NULL); +assert(mControlSender!=NULL); +assert(mDBusWrapper!=NULL); } CommandReceiver::~CommandReceiver() @@ -171,14 +194,28 @@ am_Error_e CommandReceiver::getTimingInformation(const am_mainConnectionID_t mai return mDatabaseHandler->getTimingInformation(mainConnectionID,delay); } - - am_Error_e CommandReceiver::getDBusConnectionWrapper(DBusWrapper*& dbusConnectionWrapper) const { +#ifdef WITH_DBUS_WRAPPER dbusConnectionWrapper=mDBusWrapper; return E_OK; +#else + return E_UNKNOWN; +#endif /*WITH_DBUS_WRAPPER*/ } +am_Error_e am::CommandReceiver::getSocketHandler(SocketHandler *& socketHandler) const +{ +#ifdef WITH_SOCKETHANDLER_LOOP + socketHandler=mSocketHandler; + return E_OK; +#else + return E_UNKNOWN; +#endif /*WITH_SOCKETHANDLER_LOOP*/ +} + + + diff --git a/AudioManagerDaemon/src/ControlReceiver.cpp b/AudioManagerDaemon/src/ControlReceiver.cpp index 4cce437..d5f2deb 100644 --- a/AudioManagerDaemon/src/ControlReceiver.cpp +++ b/AudioManagerDaemon/src/ControlReceiver.cpp @@ -22,6 +22,7 @@ * */ +#include <config.h> #include "ControlReceiver.h" #include <assert.h> #include <dlt/dlt.h> @@ -30,16 +31,29 @@ DLT_IMPORT_CONTEXT(DLT_CONTEXT) using namespace am; -ControlReceiver::ControlReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, CommandSender *iCommandSender) +ControlReceiver::ControlReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, CommandSender *iCommandSender, SocketHandler *iSocketHandler) : mDatabaseHandler(iDatabaseHandler), mRoutingSender(iRoutingSender), - mCommandSender(iCommandSender) + mCommandSender(iCommandSender), + mSocketHandler(iSocketHandler) { assert(mDatabaseHandler!=NULL); assert(mRoutingSender!=NULL); assert(mCommandSender!=NULL); + assert(mSocketHandler!=NULL); } +ControlReceiver::ControlReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, CommandSender *iCommandSender) + : mDatabaseHandler(iDatabaseHandler), + mRoutingSender(iRoutingSender), + mCommandSender(iCommandSender) +{ +assert(mDatabaseHandler!=NULL); +assert(mRoutingSender!=NULL); +assert(mCommandSender!=NULL); +} + + ControlReceiver::~ControlReceiver() { } @@ -503,5 +517,17 @@ void ControlReceiver::setRoutingReady() mRoutingSender->routingInterfacesReady(); } +am_Error_e am::ControlReceiver::getSocketHandler(SocketHandler *& socketHandler) +{ +#ifdef WITH_SOCKETHANDLER_LOOP + socketHandler=mSocketHandler; + return E_OK; +#else + return E_UNKNOWN; +#endif +} + + + diff --git a/AudioManagerDaemon/src/DBusWrapper.cpp b/AudioManagerDaemon/src/DBusWrapper.cpp index 0c0ccee..b631a5f 100644 --- a/AudioManagerDaemon/src/DBusWrapper.cpp +++ b/AudioManagerDaemon/src/DBusWrapper.cpp @@ -22,16 +22,15 @@ * */ -#include "DBusWrapper.h" -#include "SocketHandler.h" +#include <dbus/DBusWrapper.h> +#include <SocketHandler.h> +#include <config.h> #include <fstream> #include <sstream> #include <string> #include <dlt/dlt.h> #include <assert.h> - - -#include <iostream> //remove ! +#include <stdlib.h> using namespace am; @@ -48,6 +47,46 @@ DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \ DBusWrapper* DBusWrapper::mReference = NULL; +DBusWrapper::DBusWrapper() + : pDbusDispatchCallback(this,&DBusWrapper::dbusDispatchCallback), + pDbusFireCallback(this,&DBusWrapper::dbusFireCallback), + pDbusCheckCallback(this,&DBusWrapper::dbusCheckCallback), + pDbusTimerCallback(this,&DBusWrapper::dbusTimerCallback), + mDbusConnection(0), + mDBusError(), + mNodesList(), + mListTimerhandlePointer() +{ + dbus_error_init(&mDBusError); + DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBusWrapper::DBusWrapper Opening DBus connection")); + mDbusConnection=dbus_bus_get(DBUS_BUS_SESSION, &mDBusError); + if (dbus_error_is_set(&mDBusError)) + { + DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusWrapper::DBusWrapper Error while getting the DBus")); + dbus_error_free(&mDBusError); + } + if (NULL == mDbusConnection) + { + DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusWrapper::DBusWrapper DBus Connection is null")); + } + + //first, we are old enought to live longer then the connection: + dbus_connection_set_exit_on_disconnect(mDbusConnection, FALSE); + + mObjectPathVTable.message_function=DBusWrapper::cbRootIntrospection; + dbus_connection_register_object_path(mDbusConnection,DBUS_SERVICE_OBJECT_PATH , &mObjectPathVTable, this); + int ret = dbus_bus_request_name(mDbusConnection,DBUS_SERVICE_PREFIX,DBUS_NAME_FLAG_DO_NOT_QUEUE, &mDBusError); + if (dbus_error_is_set(&mDBusError)) + { + DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusWrapper::DBusWrapper Name Error"),DLT_STRING(mDBusError.message)); + dbus_error_free(&mDBusError); + } + if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) + { + DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusWrapper::DBusWrapper Wrapper is not the Primary Owner"), DLT_INT(ret)); + exit(1); + } +} DBusWrapper::DBusWrapper(SocketHandler* socketHandler) : pDbusDispatchCallback(this,&DBusWrapper::dbusDispatchCallback), @@ -61,11 +100,9 @@ DBusWrapper::DBusWrapper(SocketHandler* socketHandler) mSocketHandler(socketHandler) { assert(mSocketHandler!=0); - //ok, first lets get the connection - dbus_error_init(&mDBusError); + dbus_error_init(&mDBusError); DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBusWrapper::DBusWrapper Opening DBus connection")); - mDbusConnection=dbus_bus_get(DBUS_BUS_SESSION, &mDBusError); if (dbus_error_is_set(&mDBusError)) { @@ -85,11 +122,20 @@ DBusWrapper::DBusWrapper(SocketHandler* socketHandler) //dbus_connection_set_dispatch_status_function //add watch functions: - dbus_bool_t ok=dbus_connection_set_watch_functions(mDbusConnection, addWatch, removeWatch, toogleWatch , this, NULL); + dbus_bool_t watch=dbus_connection_set_watch_functions(mDbusConnection, addWatch, removeWatch, toogleWatch , this, NULL); + if (!watch) + { + DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusWrapper::DBusWrapper Registering of watch functions failed")); + } //add timer functions: - dbus_bool_t ok2=dbus_connection_set_timeout_functions(mDbusConnection, addTimeout, removeTimeout, toggleTimeout, this, NULL); + dbus_bool_t timer=dbus_connection_set_timeout_functions(mDbusConnection, addTimeout, removeTimeout, toggleTimeout, this, NULL); + if(!timer) + { + DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusWrapper::DBusWrapper Registering of timer functions failed")); + } + //register callback for Introspectio mObjectPathVTable.message_function=DBusWrapper::cbRootIntrospection; dbus_connection_register_object_path(mDbusConnection,DBUS_SERVICE_OBJECT_PATH , &mObjectPathVTable, this); int ret = dbus_bus_request_name(mDbusConnection,DBUS_SERVICE_PREFIX,DBUS_NAME_FLAG_DO_NOT_QUEUE, &mDBusError); @@ -101,16 +147,8 @@ DBusWrapper::DBusWrapper(SocketHandler* socketHandler) if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) { DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusWrapper::DBusWrapper Wrapper is not the Primary Owner"), DLT_INT(ret)); + exit(1); } -// dbus_connection_ref(mDbusConnection); -// DBusDispatchStatus dstatus; -// do -// { -// dstatus=dbus_connection_dispatch(mDbusConnection); -// std::cout<<"status"<<dstatus<<std::endl; -// } -// while (dstatus!=DBUS_DISPATCH_COMPLETE); -// dbus_connection_unref(mDbusConnection); } DBusWrapper::~DBusWrapper() @@ -194,7 +232,7 @@ DBusHandlerResult DBusWrapper::cbRootIntrospection(DBusConnection *conn, DBusMes void DBusWrapper::dbusMainLoop() { - DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBusWrapper::~dbusMainLoop Entering MainLoop")); + DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBusWrapper::dbusMainLoop Entering MainLoop")); while (dbus_connection_read_write_dispatch(mDbusConnection, -1)) { @@ -216,16 +254,18 @@ dbus_bool_t DBusWrapper::addWatch(DBusWatch *watch, void *userData) dbus_bool_t DBusWrapper::addWatchDelegate(DBusWatch * watch, void* userData) { - short event=0; + int16_t event=0; + sh_pollHandle_t handle=0; uint flags=dbus_watch_get_flags(watch); - /* no watch flags for disabled watches */ + + /* no watch flags for disabled watches */ if (dbus_watch_get_enabled(watch)) { if (flags & DBUS_WATCH_READABLE) event |= POLLIN; if (flags & DBUS_WATCH_WRITABLE) event |= POLLOUT; } - sh_pollHandle_t handle=0; + DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBusWrapper::addWatchDelegate entered new watch, fd="),DLT_INT(dbus_watch_get_unix_fd(watch)),DLT_STRING("event flag="),DLT_INT(event)); am_Error_e error=mSocketHandler->addFDPoll(dbus_watch_get_unix_fd(watch),event,NULL,&pDbusFireCallback,&pDbusCheckCallback,&pDbusDispatchCallback,watch,handle); //if everything is alright, add the watch and the handle to our map so we know this relationship @@ -234,7 +274,7 @@ dbus_bool_t DBusWrapper::addWatchDelegate(DBusWatch * watch, void* userData) mMapHandleWatch.insert(std::make_pair(watch,handle)); return true; } - return false; + DLT_LOG(DLT_CONTEXT,DLT_LOG_ERROR, DLT_STRING("DBusWrapper::addWatchDelegate entering watch failed")); } void DBusWrapper::removeWatch(DBusWatch *watch, void *userData) @@ -249,6 +289,7 @@ void DBusWrapper::removeWatchDelegate(DBusWatch *watch, void *userData) std::map<DBusWatch*,sh_pollHandle_t>::iterator iterator=mMapHandleWatch.begin(); iterator=mMapHandleWatch.find(watch); if (iterator!=mMapHandleWatch.end()) mSocketHandler->removeFDPoll(iterator->second); + DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBusWrapper::removeWatch removed watch with handle"),DLT_INT(iterator->second)); mMapHandleWatch.erase(iterator); } @@ -261,7 +302,7 @@ void DBusWrapper::toogleWatch(DBusWatch *watch, void *userData) void DBusWrapper::toogleWatchDelegate(DBusWatch *watch, void *userData) { - short event=0; + int16_t event=0; int watchFD=dbus_watch_get_unix_fd(watch); uint flags=dbus_watch_get_flags(watch); /* no watch flags for disabled watches */ @@ -273,6 +314,7 @@ void DBusWrapper::toogleWatchDelegate(DBusWatch *watch, void *userData) std::map<DBusWatch*,sh_pollHandle_t>::iterator iterator=mMapHandleWatch.begin(); iterator=mMapHandleWatch.find(watch); if (iterator!=mMapHandleWatch.end()) mSocketHandler->updateEventFlags(iterator->second,event); + DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBusWrapper::toogleWatchDelegate watch was toggeled")); } dbus_bool_t DBusWrapper::addTimeout(DBusTimeout *timeout, void* userData) @@ -295,7 +337,7 @@ dbus_bool_t DBusWrapper::addTimeoutDelegate(DBusTimeout *timeout,void* userData) //prepare handle and callback. new is eval, but there is no other choice because we need the pointer! sh_timerHandle_t* handle=new sh_timerHandle_t; mListTimerhandlePointer.push_back(handle); - TBasicTimerCallback* buffer=&pDbusTimerCallback; + shTimerCallBack* buffer=&pDbusTimerCallback; //add the timer to the pollLoop mSocketHandler->addTimer(pollTimeout,buffer,*handle,timeout); @@ -305,6 +347,7 @@ dbus_bool_t DBusWrapper::addTimeoutDelegate(DBusTimeout *timeout,void* userData) //save timeout in Socket context userData=timeout; + DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBusWrapper::addTimeoutDelegate a timeout was added")); return true; } @@ -332,6 +375,7 @@ void DBusWrapper::removeTimeoutDelegate(DBusTimeout *timeout, void* userData) } } delete handle; + DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBusWrapper::removeTimeoutDelegate a timeout was removed")); } void DBusWrapper::toggleTimeout(DBusTimeout *timeout, void* userData) @@ -347,6 +391,7 @@ bool am::DBusWrapper::dbusDispatchCallback(const sh_pollHandle_t handle, void *u dbus_connection_ref(mDbusConnection); if (dbus_connection_dispatch(mDbusConnection)==DBUS_DISPATCH_COMPLETE) returnVal=true; dbus_connection_unref(mDbusConnection); + DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBusWrapper::dbusDispatchCallback was called")); return returnVal; } @@ -356,6 +401,7 @@ bool am::DBusWrapper::dbusCheckCallback(const sh_pollHandle_t handle, void *user dbus_connection_ref(mDbusConnection); if (dbus_connection_get_dispatch_status(mDbusConnection) == DBUS_DISPATCH_DATA_REMAINS) returnVal=true; dbus_connection_unref(mDbusConnection); + DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBusWrapper::dbusCheckCallback was called")); return returnVal; } @@ -364,22 +410,17 @@ void am::DBusWrapper::dbusFireCallback(const pollfd pollfd, const sh_pollHandle_ assert(userData!=NULL); uint flags=0; - if (!dbus_watch_get_enabled((DBusWatch*)userData)) - { - std::cout<<"sdfsdf"<<std::endl; - } - if (pollfd.revents & POLLIN) flags |= DBUS_WATCH_READABLE; if (pollfd.revents & POLLOUT) flags |= DBUS_WATCH_WRITABLE; if (pollfd.revents & POLLHUP) flags |= DBUS_WATCH_HANGUP; if (pollfd.revents & POLLERR) flags |= DBUS_WATCH_ERROR; -// std::cout<<fd<<" "<<revent<<std::endl; DBusWatch *watch=(DBusWatch*)userData; dbus_connection_ref(mDbusConnection); bool ok=dbus_watch_handle(watch, flags); dbus_connection_unref(mDbusConnection); + DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBusWrapper::dbusFireCallback was called")); } void DBusWrapper::toggleTimeoutDelegate(DBusTimeout *timeout, void* userData) @@ -401,6 +442,7 @@ void DBusWrapper::toggleTimeoutDelegate(DBusTimeout *timeout, void* userData) { mSocketHandler->stopTimer(*handle); } + DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBusWrapper::toggleTimeoutDelegate was called")); } void DBusWrapper::dbusTimerCallback(sh_timerHandle_t handle, void *userData) @@ -414,6 +456,7 @@ void DBusWrapper::dbusTimerCallback(sh_timerHandle_t handle, void *userData) mSocketHandler->restartTimer(handle,ts); } dbus_timeout_handle((DBusTimeout*)userData); + DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("DBusWrapper::dbusTimerCallback was called")); } diff --git a/AudioManagerDaemon/src/RoutingReceiver.cpp b/AudioManagerDaemon/src/RoutingReceiver.cpp index b9dc3ac..5629e67 100644 --- a/AudioManagerDaemon/src/RoutingReceiver.cpp +++ b/AudioManagerDaemon/src/RoutingReceiver.cpp @@ -24,21 +24,46 @@ */ #include "RoutingReceiver.h" -#include "RoutingSender.h" -#include "DatabaseHandler.h" -#include "ControlSender.h" #include <assert.h> using namespace am; -RoutingReceiver::RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, ControlSender *iControlSender) +am::RoutingReceiver::RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, ControlSender *iControlSender, SocketHandler *iSocketHandler) :mDatabaseHandler(iDatabaseHandler), mRoutingSender(iRoutingSender), - mControlSender(iControlSender) + mControlSender(iControlSender), + mSocketHandler(iSocketHandler) { - assert(mDatabaseHandler!=0); - assert(mRoutingSender!=0); - assert(mControlSender!=0); +assert(mDatabaseHandler!=NULL); +assert(mRoutingSender!=NULL); +assert(mControlSender!=NULL); +assert(mSocketHandler!=NULL); +} + +am::RoutingReceiver::RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, ControlSender *iControlSender, DBusWrapper *iDBusWrapper) + :mDatabaseHandler(iDatabaseHandler), + mRoutingSender(iRoutingSender), + mControlSender(iControlSender), + mDBusWrapper(iDBusWrapper) +{ +assert(mDatabaseHandler!=NULL); +assert(mRoutingSender!=NULL); +assert(mControlSender!=NULL); +assert(mDBusWrapper!=NULL); +} + +am::RoutingReceiver::RoutingReceiver(DatabaseHandler *iDatabaseHandler, RoutingSender *iRoutingSender, ControlSender *iControlSender, SocketHandler *iSocketHandler, DBusWrapper *iDBusWrapper) + :mDatabaseHandler(iDatabaseHandler), + mRoutingSender(iRoutingSender), + mControlSender(iControlSender), + mSocketHandler(iSocketHandler), + mDBusWrapper(iDBusWrapper) +{ +assert(mDatabaseHandler!=NULL); +assert(mRoutingSender!=NULL); +assert(mControlSender!=NULL); +assert(mSocketHandler!=NULL); +assert(mDBusWrapper!=NULL); } @@ -318,21 +343,38 @@ am_Error_e RoutingReceiver::sendChangedData(const std::vector<am_EarlyData_s> & -am_Error_e RoutingReceiver::peekSinkClassID(const std::string & name, am_sourceClass_t & sourceClassID) +am_Error_e RoutingReceiver::peekSinkClassID(const std::string name, const am_sinkClass_t& sinkClassID) { //todo: implement return E_NOT_USED; } -am_Error_e RoutingReceiver::peekSourceClassID(const std::string & name, am_sinkClass_t & sinkClassID) +am_Error_e RoutingReceiver::peekSourceClassID(const std::string name, const am_sourceClass_t& sourceClassID) { //todo: implement return E_NOT_USED; } -am_Error_e RoutingReceiver::getDBusConnectionWrapper(DBusWrapper *dbusConnectionWrapper) const +am_Error_e am::RoutingReceiver::getDBusConnectionWrapper(DBusWrapper *& dbusConnectionWrapper) const { - //todo: return DbusWrapper - return E_NOT_USED; +#ifdef WITH_DBUS_WRAPPER + dbusConnectionWrapper=mDBusWrapper; + return E_OK; +#else + return E_UNKNOWN; +#endif } + +am_Error_e am::RoutingReceiver::getSocketHandler(SocketHandler *& socketHandler) const +{ +#ifdef WITH_SOCKETHANDLER_LOOP + socketHandler=mSocketHandler; + return E_OK; +#else + return E_UNKNOWN; +#endif +} + + + diff --git a/AudioManagerDaemon/src/SocketHandler.cpp b/AudioManagerDaemon/src/SocketHandler.cpp index 5a0de5e..fa04f3a 100644 --- a/AudioManagerDaemon/src/SocketHandler.cpp +++ b/AudioManagerDaemon/src/SocketHandler.cpp @@ -172,7 +172,7 @@ void SocketHandler::stop_listening() * @param callback the callback that shall be called if the filedescriptor poll succeeded * @return E_OK if the descriptor was added, E_NON_EXISTENT if the fd is not valid */ -am_Error_e SocketHandler::addFDPoll(const int fd,const short event, shPollPrepare *prepare,shPollFired *fired,shPollCheck *check,shPollDispatch *dispatch, void* userData,sh_pollHandle_t& handle) +am_Error_e SocketHandler::addFDPoll(const int fd,const int16_t event, shPollPrepare *prepare,shPollFired *fired,shPollCheck *check,shPollDispatch *dispatch, void* userData,sh_pollHandle_t& handle) { if (!fdIsValid(fd)) return E_NON_EXISTENT; @@ -338,7 +338,7 @@ am_Error_e SocketHandler::stopTimer(const sh_timerHandle_t handle) * @param event the event flags * @return E_OK on succsess, E_NON_EXISTENT if fd was not found */ -am_Error_e SocketHandler::updateEventFlags(const sh_pollHandle_t handle, const short events) +am_Error_e SocketHandler::updateEventFlags(const sh_pollHandle_t handle, const int16_t events) { mListPoll_t::iterator iterator=mListPoll.begin(); diff --git a/AudioManagerDaemon/src/main.cpp b/AudioManagerDaemon/src/main.cpp index 7da8f2d..5edc6cb 100644 --- a/AudioManagerDaemon/src/main.cpp +++ b/AudioManagerDaemon/src/main.cpp @@ -35,7 +35,13 @@ //todo: there is a bug in the visible flags of sinks and sources. fix it. //todo: check namespace handling. no use.. in headers //todo: make sure that iterators have a fixed end to prevent crashed while adding vectors while iterating on critical vectors +//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" @@ -44,20 +50,13 @@ #include "ControlSender.h" #include "CommandSender.h" #include "RoutingSender.h" -#include "DBusWrapper.h" -#include "SocketHandler.h" -#include <dbus/dbus.h> #include <dlt/dlt.h> DLT_DECLARE_CONTEXT(DLT_CONTEXT) using namespace am; -#define DEFAULT_PLUGIN_COMMAND_DIR "/home/christian/workspace/gitserver/build/plugins/command" -#define DEFAULT_PLUGIN_ROUTING_DIR "/home/christian/workspace/gitserver/build/plugins/routing" -#define CONTROLLER_PLUGIN "/home/christian/workspace/gitserver/build/plugins/control/libPluginControlInterface.so" - int main(int argc, char *argv[]) { DLT_REGISTER_APP("AudioManagerDeamon","AudioManagerDeamon"); @@ -71,16 +70,39 @@ int main(int argc, char *argv[]) listRoutingPluginDirs.push_back(std::string(DEFAULT_PLUGIN_ROUTING_DIR)); //change this to be modified by the commandline! //Instantiate all classes. Keep in same order ! - DatabaseHandler iDatabaseHandler(std::string(":memory:")); +#ifdef WITH_SOCKETHANDLER_LOOP SocketHandler iSocketHandler; +#endif + +#ifdef WITH_DBUS_WRAPPER +#ifdef WITH_SOCKETHANDLER_LOOP DBusWrapper iDBusWrapper(&iSocketHandler); +#else /*WITH_SOCKETHANDLER_LOOP*/ + DBusWrapper iDBusWrapper; +#endif /*WITH_SOCKETHANDLER_LOOP*/ +#endif /*WITH_DBUS_WRAPPER */ + + DatabaseHandler iDatabaseHandler(std::string(":memory:")); RoutingSender iRoutingSender(listRoutingPluginDirs); CommandSender iCommandSender(listCommandPluginDirs); ControlSender iControlSender(std::string(CONTROLLER_PLUGIN)); DatabaseObserver iObserver(&iCommandSender, &iRoutingSender); - CommandReceiver iCommandReceiver(&iDatabaseHandler,&iDBusWrapper,&iControlSender); - RoutingReceiver iRoutingReceiver(&iDatabaseHandler,&iRoutingSender,&iControlSender); + +#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); +#else /*WITH_SOCKETHANDLER_LOOP */ + CommandReceiver iCommandReceiver(&iDatabaseHandler,&iControlSender,&iDBusWrapper); + RoutingReceiver iRoutingReceiver(&iDatabaseHandler,&iRoutingSender,&iControlSender,&iDBusWrapper); ControlReceiver iControlReceiver(&iDatabaseHandler,&iRoutingSender,&iCommandSender); +#endif /*WITH_SOCKETHANDLER_LOOP*/ +#else /*WITH_DBUS_WRAPPER*/ + CommandReceiver iCommandReceiver(&iDatabaseHandler,&iControlSender,&iSocketHandler); + RoutingReceiver iRoutingReceiver(&iDatabaseHandler,&iRoutingSender,&iControlSender,&iSocketHandler); + ControlReceiver iControlReceiver(&iDatabaseHandler,&iRoutingSender,&iCommandSender,&iSocketHandler); +#endif /*WITH_DBUS_WRAPPER*/ //since the plugins have been loaded by the *Senders before, we can tell the Controller this: iControlSender.hookAllPluginsLoaded(); @@ -89,8 +111,15 @@ int main(int argc, char *argv[]) iCommandSender.startupInterface(&iCommandReceiver); iRoutingSender.startupRoutingInterface(&iRoutingReceiver); +#ifdef WITH_SOCKETHANDLER_LOOP iSocketHandler.start_listenting(); - //iDBusWrapper.dbusMainLoop(); +#endif /*WITH_SOCKETHANDLER_LOOP*/ + +#ifdef WITH_DBUS_WRAPPER +#ifdef WITH_SIMPLEDBUS_LOOP + iDBusWrapper.dbusMainLoop(); +#endif/*WITH_SIMPLEDBUS_LOOP*/ +#endif /*WITH_DBUS_WRAPPER*/ } diff --git a/AudioManagerDaemon/test/CMakeLists.txt b/AudioManagerDaemon/test/CMakeLists.txt index 3ee415a..7f8c054 100644 --- a/AudioManagerDaemon/test/CMakeLists.txt +++ b/AudioManagerDaemon/test/CMakeLists.txt @@ -12,7 +12,10 @@ cmake_minimum_required(VERSION 2.6) +set(EXECUTABLE_OUTPUT_PATH ${TEST_EXECUTABLE_OUTPUT_PATH}) +FIND_PACKAGE(GTest REQUIRED) + add_subdirectory (database) add_subdirectory (routingInterface) add_subdirectory (controlInterface) -#add_subdirectory (sockethandler)
\ No newline at end of file +#add_subdirectory (sockethandler) diff --git a/AudioManagerDaemon/test/controlInterface/CMakeLists.txt b/AudioManagerDaemon/test/controlInterface/CMakeLists.txt index 8ac7cd1..6e0acad 100644 --- a/AudioManagerDaemon/test/controlInterface/CMakeLists.txt +++ b/AudioManagerDaemon/test/controlInterface/CMakeLists.txt @@ -25,16 +25,8 @@ cmake_minimum_required(VERSION 2.6) PROJECT(controlInterfacetest) -#set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -DUNIT_TEST=1 -DDLT_CONTEXT=AudioManager") -set(STD_INCLUDE_DIRS "/usr/include") -set(DBUS_FOLDER ${CMAKE_SOURCE_DIR}/../../../dbusInterfaces) -set(AUDIO_INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../../../includes) -set(DBUS_INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../../../../dbusIncludes) -set(INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../../include) -set(EXECUTABLE_OUTPUT_PATH ../../../../test/) - FIND_PACKAGE(PkgConfig) pkg_check_modules(SQLITE REQUIRED sqlite3) pkg_check_modules(DLT REQUIRED automotive-dlt) @@ -48,6 +40,7 @@ INCLUDE_DIRECTORIES( ${STD_INCLUDE_DIRS} ${DLT_INCLUDE_DIRS} ${DBUS_INCLUDE_DIR} + ${GTEST_INCLUDE_DIR} ${INCLUDES_FOLDER} ) @@ -70,7 +63,7 @@ TARGET_LINK_LIBRARIES(controlInterfaceTest ${DLT_LIBRARIES} ${DBUS_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} - gtest + ${GTEST_LIBRARIES} gmock ) diff --git a/AudioManagerDaemon/test/controlInterface/controlInterfaceTest.cpp b/AudioManagerDaemon/test/controlInterface/controlInterfaceTest.cpp index c59ac06..2efcc64 100644 --- a/AudioManagerDaemon/test/controlInterface/controlInterfaceTest.cpp +++ b/AudioManagerDaemon/test/controlInterface/controlInterfaceTest.cpp @@ -34,7 +34,8 @@ using namespace testing; DLT_DECLARE_CONTEXT(DLT_CONTEXT) controlInterfaceTest::controlInterfaceTest() - :plistCommandPluginDirs(), + :pDBusWrapper((DBusWrapper*)1), //to get rid of assert + plistCommandPluginDirs(), plistRoutingPluginDirs(), pDatabaseHandler(std::string(":memory:")), pRoutingSender(plistRoutingPluginDirs), @@ -47,7 +48,7 @@ controlInterfaceTest::controlInterfaceTest() pControlInterfaceBackdoor(), pDatabaseObserver(&pCommandSender,&pRoutingSender), pControlReceiver(&pDatabaseHandler,&pRoutingSender,&pCommandSender), - pRoutingReceiver(&pDatabaseHandler,&pRoutingSender,&pControlSender) + pRoutingReceiver(&pDatabaseHandler,&pRoutingSender,&pControlSender,pDBusWrapper) { pDatabaseHandler.registerObserver(&pDatabaseObserver); pControlInterfaceBackdoor.replaceController(&pControlSender,&pMockControlInterface); diff --git a/AudioManagerDaemon/test/controlInterface/controlInterfaceTest.h b/AudioManagerDaemon/test/controlInterface/controlInterfaceTest.h index a3a2a50..5b1bd99 100644 --- a/AudioManagerDaemon/test/controlInterface/controlInterfaceTest.h +++ b/AudioManagerDaemon/test/controlInterface/controlInterfaceTest.h @@ -27,6 +27,7 @@ #include <gtest/gtest.h> #include <gmock/gmock.h> +#include <dbus/DBusWrapper.h> #include <dlt/dlt.h> #include "MockInterfaces.h" #include "DatabaseHandler.h" @@ -47,6 +48,7 @@ class controlInterfaceTest : public ::testing::Test{ public: controlInterfaceTest(); ~controlInterfaceTest(); + DBusWrapper* pDBusWrapper; std::vector<std::string> plistCommandPluginDirs; std::vector<std::string> plistRoutingPluginDirs; DatabaseHandler pDatabaseHandler; diff --git a/AudioManagerDaemon/test/database/CMakeLists.txt b/AudioManagerDaemon/test/database/CMakeLists.txt index 59c40e8..1f368aa 100644 --- a/AudioManagerDaemon/test/database/CMakeLists.txt +++ b/AudioManagerDaemon/test/database/CMakeLists.txt @@ -25,16 +25,8 @@ cmake_minimum_required(VERSION 2.6) PROJECT(datbaseTest) -#set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -DUNIT_TEST=1 -DDLT_CONTEXT=AudioManager") -set(STD_INCLUDE_DIRS "/usr/include") -set(DBUS_FOLDER ${CMAKE_SOURCE_DIR}/../../../dbusInterfaces) -set(AUDIO_INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../../../includes) -set(DBUS_INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../../../../dbusIncludes) -set(INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../../include) -set(EXECUTABLE_OUTPUT_PATH ../../../../test/) - FIND_PACKAGE(PkgConfig) pkg_check_modules(SQLITE REQUIRED sqlite3) pkg_check_modules(DLT REQUIRED automotive-dlt) @@ -68,6 +60,6 @@ TARGET_LINK_LIBRARIES( databasetest ${DLT_LIBRARIES} ${DBUS_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} - gtest + ${GTEST_LIBRARIES} gmock )
\ No newline at end of file diff --git a/AudioManagerDaemon/test/routingInterface/CMakeLists.txt b/AudioManagerDaemon/test/routingInterface/CMakeLists.txt index 654c726..292065b 100644 --- a/AudioManagerDaemon/test/routingInterface/CMakeLists.txt +++ b/AudioManagerDaemon/test/routingInterface/CMakeLists.txt @@ -28,13 +28,6 @@ PROJECT(routingInterfaceTest) #set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUNIT_TEST=1 -DDLT_CONTEXT=AudioManager") -set(STD_INCLUDE_DIRS "/usr/include") -set(DBUS_FOLDER ${CMAKE_SOURCE_DIR}/../../../dbusInterfaces) -set(AUDIO_INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../../../includes) -set(DBUS_INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../../../../dbusIncludes) -set(INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../../include) -set(EXECUTABLE_OUTPUT_PATH ../../../../test/) - FIND_PACKAGE(PkgConfig) pkg_check_modules(SQLITE REQUIRED sqlite3) pkg_check_modules(DLT REQUIRED automotive-dlt) @@ -68,7 +61,7 @@ TARGET_LINK_LIBRARIES(routinginterfacetest ${DLT_LIBRARIES} ${DBUS_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} - gtest + ${GTEST_LIBRARIES} gmock ) diff --git a/AudioManagerDaemon/test/sockethandler/CMakeLists.txt b/AudioManagerDaemon/test/sockethandler/CMakeLists.txt index a7dd63d..787b120 100644 --- a/AudioManagerDaemon/test/sockethandler/CMakeLists.txt +++ b/AudioManagerDaemon/test/sockethandler/CMakeLists.txt @@ -33,7 +33,7 @@ set(DBUS_FOLDER ${CMAKE_SOURCE_DIR}/../../../dbusInterfaces) set(AUDIO_INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../../../includes) set(DBUS_INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../../../../dbusIncludes) set(INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../../include) -set(EXECUTABLE_OUTPUT_PATH ../../../../test/) + FIND_PACKAGE(PkgConfig) pkg_check_modules(DLT REQUIRED automotive-dlt) diff --git a/AudioManagerDaemon/test/sockethandler/sockethandlerTest.cpp b/AudioManagerDaemon/test/sockethandler/sockethandlerTest.cpp index c9c17cb..bb72324 100644 --- a/AudioManagerDaemon/test/sockethandler/sockethandlerTest.cpp +++ b/AudioManagerDaemon/test/sockethandler/sockethandlerTest.cpp @@ -25,13 +25,13 @@ sockethandlerTest::~sockethandlerTest() { } -void fdCallBack::connectSocket(int fd, const short events,void * userData) +void fdCallBack::connectSocket(int fd, const int16_t events,void * userData) { std::cout<<"Socket connection received and open"<<std::endl; //accept the connection mSocketConnection = accept(fd, NULL, NULL); - short event = 0; + int16_t event = 0; event |=POLLIN; shPollCallBack* buf=&pSocketDataCallback; @@ -52,7 +52,7 @@ fdCallBack::fdCallBack(SocketHandler *SocketHandler) -void am::fdCallBack::handleSocketData(int fd, const short events, void* userdata) +void am::fdCallBack::handleSocketData(int fd, const int16_t events, void* userdata) { char buffer[3000]; std::string msg; @@ -148,7 +148,7 @@ void* playWithSocketServer(void* data) listen(socketHandle, 3); //prepare the event (we want POLLIN because we need to listen) - short event = 0; + int16_t event = 0; event |=POLLIN; shPollCallBack* buf=&testCallback.pSocketConnectionCallback; diff --git a/AudioManagerDaemon/test/sockethandler/sockethandlerTest.h b/AudioManagerDaemon/test/sockethandler/sockethandlerTest.h index 81ded2a..85e2dca 100644 --- a/AudioManagerDaemon/test/sockethandler/sockethandlerTest.h +++ b/AudioManagerDaemon/test/sockethandler/sockethandlerTest.h @@ -18,8 +18,8 @@ class fdCallBack public: fdCallBack(SocketHandler *SocketHandler); virtual ~fdCallBack(); - void connectSocket(int fd,const short events,void * userData); - void handleSocketData(int fd,const short events,void * userData); + void connectSocket(int fd,const int16_t events,void * userData); + void handleSocketData(int fd,const int16_t events,void * userData); TSpecificPollCallback<fdCallBack> pSocketDataCallback; TSpecificPollCallback<fdCallBack> pSocketConnectionCallback; private: |