diff options
Diffstat (limited to 'src/uscxml/plugins/invoker')
-rw-r--r-- | src/uscxml/plugins/invoker/CMakeLists.txt | 102 | ||||
-rw-r--r-- | src/uscxml/plugins/invoker/vxml/VoiceXMLInvoker.cpp | 67 | ||||
-rw-r--r-- | src/uscxml/plugins/invoker/vxml/VoiceXMLInvoker.h | 51 |
3 files changed, 163 insertions, 57 deletions
diff --git a/src/uscxml/plugins/invoker/CMakeLists.txt b/src/uscxml/plugins/invoker/CMakeLists.txt index 4d38199..3f43acb 100644 --- a/src/uscxml/plugins/invoker/CMakeLists.txt +++ b/src/uscxml/plugins/invoker/CMakeLists.txt @@ -1,7 +1,7 @@ # sample invoker - include to make sure it compiles file(GLOB_RECURSE SAMPLE_INVOKER - src/uscxml/plugins/invoker/sample/*.cpp - src/uscxml/plugins/invoker/sample/*.h + sample/*.cpp + sample/*.h ) source_group("Invoker\\sample" FILES ${SAMPLE_INVOKER}) if (BUILD_AS_PLUGINS) @@ -18,8 +18,8 @@ endif() # DirMon invoker to watch for filesystem changes file(GLOB_RECURSE DIRMON_INVOKER - src/uscxml/plugins/invoker/filesystem/dirmon/*.cpp - src/uscxml/plugins/invoker/filesystem/dirmon/*.h + filesystem/dirmon/*.cpp + filesystem/dirmon/*.h ) source_group("Invoker\\dirmon" FILES ${DIRMON_INVOKER}) if (BUILD_AS_PLUGINS) @@ -36,8 +36,8 @@ endif() # System invoker to open a native command file(GLOB_RECURSE SYSTEM_INVOKER - src/uscxml/plugins/invoker/system/*.cpp - src/uscxml/plugins/invoker/system/*.h + system/*.cpp + system/*.h ) source_group("Invoker\\system" FILES ${SYSTEM_INVOKER}) if (BUILD_AS_PLUGINS) @@ -53,11 +53,10 @@ endif() # SQLite3 SQL Invoker -find_package(Sqlite3) if (SQLITE3_FOUND) file(GLOB_RECURSE SQLITE3_INVOKER - src/uscxml/plugins/invoker/sqlite3/*.cpp - src/uscxml/plugins/invoker/sqlite3/*.h + sqlite3/*.cpp + sqlite3/*.h ) source_group("Invoker\\sqlite" FILES ${SQLITE3_INVOKER}) if (BUILD_AS_PLUGINS) @@ -74,12 +73,10 @@ endif() # ffmpeg invoker -find_package(FFMPEG) if (FFMPEG_FOUND) - list (APPEND USCXML_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIR}) file(GLOB_RECURSE FFMPEG_INVOKER - src/uscxml/plugins/invoker/ffmpeg/*.cpp - src/uscxml/plugins/invoker/ffmpeg/*.h + ffmpeg/*.cpp + ffmpeg/*.h ) source_group("Invoker\\ffmpeg" FILES ${FFMPEG_INVOKER}) if (BUILD_AS_PLUGINS) @@ -96,16 +93,10 @@ endif() # UMUNDO invoker -if (WIN32) - find_package(UMUNDO COMPONENTS convenience) -else() - find_package(UMUNDO COMPONENTS rpc serial core) -endif() if (UMUNDO_FOUND) - list (APPEND USCXML_INCLUDE_DIRS ${UMUNDO_INCLUDE_DIR}) file(GLOB_RECURSE UMUNDO_INVOKER - src/uscxml/plugins/invoker/umundo/*.cpp - src/uscxml/plugins/invoker/umundo/*.h) + umundo/*.cpp + umundo/*.h) source_group("Invoker\\umundo" FILES ${UMUNDO_INVOKER}) if (BUILD_AS_PLUGINS) add_library( @@ -117,17 +108,15 @@ if (UMUNDO_FOUND) set_target_properties(invoker_umundo PROPERTIES FOLDER "Plugin Invoker") else() list (APPEND USCXML_FILES ${UMUNDO_INVOKER}) - list (APPEND USCXML_OPT_LIBS ${UMUNDO_LIBRARIES}) endif() - add_definitions("-DUMUNDO_STATIC") endif() # USCXML invoker file(GLOB_RECURSE USCXML_INVOKER - src/uscxml/plugins/invoker/scxml/*.cpp - src/uscxml/plugins/invoker/scxml/*.h) + scxml/*.cpp + scxml/*.h) source_group("Invoker\\uscxml" FILES ${USCXML_INVOKER}) if (BUILD_AS_PLUGINS) add_library( @@ -144,8 +133,8 @@ endif() # HTTP server invoker file(GLOB_RECURSE HTTPSERVLET_INVOKER - src/uscxml/plugins/invoker/http/*.cpp - src/uscxml/plugins/invoker/http/*.h) + http/*.cpp + http/*.h) source_group("Invoker\\httpservlet" FILES ${HTTPSERVLET_INVOKER}) if (BUILD_AS_PLUGINS) add_library( @@ -162,8 +151,8 @@ endif() # Heartbeat invoker file(GLOB_RECURSE HEARTBEAT_INVOKER - src/uscxml/plugins/invoker/heartbeat/*.cpp - src/uscxml/plugins/invoker/heartbeat/*.h + heartbeat/*.cpp + heartbeat/*.h ) source_group("Invoker\\heartbeat" FILES ${HEARTBEAT_INVOKER}) if (BUILD_AS_PLUGINS) @@ -178,22 +167,10 @@ endif() # OpenSceneGraph invoker -if (UNIX) - set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_ORIG}) # link dynamically! -elseif(WIN32) - if (ENV{OSG_ROOT} STREQUAL "") - set(ENV{OSG_ROOT} "C:/Program Files/OpenSceneGraph-3.0.1") - endif() -endif() -find_package(OpenSceneGraph COMPONENTS osgViewer osgGA osgText osgFX osgManipulator osgDB osgUtil OpenThreads) -find_package(OpenGL) if (OPENSCENEGRAPH_FOUND AND OPENGL_FOUND) - list (APPEND USCXML_INCLUDE_DIRS ${OPENSCENEGRAPH_INCLUDE_DIRS}) - list (APPEND USCXML_INCLUDE_DIRS ${OPENGL_INCLUDE_DIR}) - file(GLOB OPENSCENEGRAPH_INVOKER - src/uscxml/plugins/invoker/graphics/openscenegraph/*.cpp - src/uscxml/plugins/invoker/graphics/openscenegraph/*.h) + graphics/openscenegraph/*.cpp + graphics/openscenegraph/*.h) source_group("Invoker\\scenegraph" FILES ${OPENSCENEGRAPH_INVOKER}) if (BUILD_AS_PLUGINS) @@ -207,12 +184,11 @@ if (OPENSCENEGRAPH_FOUND AND OPENGL_FOUND) set_target_properties(invoker_openscenegraph PROPERTIES FOLDER "Plugin Invoker") else() list (APPEND USCXML_FILES ${OPENSCENEGRAPH_INVOKER}) - list (APPEND USCXML_OPT_LIBS ${OPENSCENEGRAPH_LIBRARIES} ${OPENGL_LIBRARIES}) endif() file(GLOB OPENSCENEGRAPH_CONVERTER_INVOKER - src/uscxml/plugins/invoker/graphics/openscenegraph/converter/*.cpp - src/uscxml/plugins/invoker/graphics/openscenegraph/converter/*.h) + graphics/openscenegraph/converter/*.cpp + graphics/openscenegraph/converter/*.h) source_group("Invoker\\scenegraph\\convert" FILES ${OPENSCENEGRAPH_CONVERTER_INVOKER}) if (BUILD_AS_PLUGINS) @@ -226,21 +202,14 @@ if (OPENSCENEGRAPH_FOUND AND OPENGL_FOUND) set_target_properties(invoker_openscenegraph_convert PROPERTIES FOLDER "Plugin Invoker") else() list (APPEND USCXML_FILES ${OPENSCENEGRAPH_CONVERTER_INVOKER}) - list (APPEND USCXML_OPT_LIBS ${OPENSCENEGRAPH_LIBRARIES} ${OPENGL_LIBRARIES}) endif() endif() -if (UNIX) - set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) -endif() # MILES modality components -find_package(MILES) if (MILES_FOUND AND OFF) - list (APPEND USCXML_INCLUDE_DIRS ${MILES_INCLUDE_DIR}) - # openal is only needed for miles find_package(OpenAL REQUIRED) # find_package(JPEG REQUIRED) @@ -249,8 +218,8 @@ if (MILES_FOUND AND OFF) list (APPEND USCXML_INCLUDE_DIRS ${OPENAL_INCLUDE_DIR}) file(GLOB_RECURSE MILES_INVOKER - src/uscxml/plugins/invoker/miles/*.cpp - src/uscxml/plugins/invoker/miles/*.h) + miles/*.cpp + miles/*.h) source_group("Invoker\\miles" FILES ${MILES_INVOKER}) # message("MILES_INVOKER ${MILES_INVOKER}") @@ -265,8 +234,27 @@ if (MILES_FOUND AND OFF) set_target_properties(invoker_miles PROPERTIES FOLDER "Plugin Invoker") else() list (APPEND USCXML_FILES ${MILES_INVOKER}) - list (APPEND USCXML_OPT_LIBS ${MILES_LIBRARIES}) - list (APPEND USCXML_OPT_LIBS ${OPENAL_LIBRARY}) endif() endif() +# VoiceXML modality components + +if (UMUNDO_FOUND) + file(GLOB_RECURSE VXML_INVOKER + vxml/*.cpp + vxml/*.h + ) + source_group("Invoker\\voicexml" FILES ${VXML_INVOKER}) + if (BUILD_AS_PLUGINS) + add_library( + invoker_voicexml SHARED + ${VXML_INVOKER}) + target_link_libraries(invoker_voicexml uscxml) + set_target_properties(invoker_voicexml PROPERTIES FOLDER "Plugin Invoker") + else() + list (APPEND USCXML_FILES ${VXML_INVOKER}) + endif() +endif() + +set(USCXML_INCLUDE_DIRS ${USCXML_INCLUDE_DIRS} PARENT_SCOPE) +set(USCXML_FILES ${USCXML_FILES} PARENT_SCOPE)
\ No newline at end of file diff --git a/src/uscxml/plugins/invoker/vxml/VoiceXMLInvoker.cpp b/src/uscxml/plugins/invoker/vxml/VoiceXMLInvoker.cpp new file mode 100644 index 0000000..e7d1440 --- /dev/null +++ b/src/uscxml/plugins/invoker/vxml/VoiceXMLInvoker.cpp @@ -0,0 +1,67 @@ +#include "VoiceXMLInvoker.h" +#include <glog/logging.h> + +#ifdef BUILD_AS_PLUGINS +#include <Pluma/Connector.hpp> +#endif + +namespace uscxml { + +#ifdef BUILD_AS_PLUGINS +PLUMA_CONNECTOR +bool connect(pluma::Host& host) { + host.add( new VoiceXMLInvokerProvider() ); + return true; +} +#endif + +VoiceXMLInvoker::VoiceXMLInvoker() { +} + +VoiceXMLInvoker::~VoiceXMLInvoker() { +}; + +boost::shared_ptr<IOProcessorImpl> VoiceXMLInvoker::create(InterpreterImpl* interpreter) { + boost::shared_ptr<VoiceXMLInvoker> invoker = boost::shared_ptr<VoiceXMLInvoker>(new VoiceXMLInvoker()); + invoker->_interpreter = interpreter; + invoker->_pub = umundo::TypedPublisher("mmi:jvoicexml"); + invoker->_sub = umundo::TypedSubscriber("mmi:jvoicexml"); + + invoker->_pub.registerType("LifeCycleEvent", new ::LifeCycleEvent()); + + + invoker->_node.addPublisher(invoker->_pub); + invoker->_node.addSubscriber(invoker->_sub); + + return invoker; +} + +void VoiceXMLInvoker::receive(void* object, umundo::Message* msg) { + std::cout << msg->getMeta("um.s11n.type") << std::endl; +} + +Data VoiceXMLInvoker::getDataModelVariables() { + Data data; + return data; +} + +void VoiceXMLInvoker::send(const SendRequest& req) { + StartRequest start; + std::stringstream domSS; + domSS << req.getFirstDOMElement(); + start.content = domSS.str(); + + start.contentURL.href = "http://localhost/~sradomski/hello.vxml"; + start.requestId = "asdf"; + start.source = "asdf"; + start.target = "umundo://mmi/jvoicexml"; + ::LifeCycleEvent lce = MMIProtoBridge::toProto(start); + _pub.sendObj("LifeCycleEvent", &lce); +} + +void VoiceXMLInvoker::invoke(const InvokeRequest& req) { + _pub.waitForSubscribers(1); + +} + +}
\ No newline at end of file diff --git a/src/uscxml/plugins/invoker/vxml/VoiceXMLInvoker.h b/src/uscxml/plugins/invoker/vxml/VoiceXMLInvoker.h new file mode 100644 index 0000000..450af5d --- /dev/null +++ b/src/uscxml/plugins/invoker/vxml/VoiceXMLInvoker.h @@ -0,0 +1,51 @@ +#ifndef VOICEXMLINVOKER_H_W09J90F0 +#define VOICEXMLINVOKER_H_W09J90F0 + +#include <uscxml/Interpreter.h> +#include <uscxml/plugins/ioprocessor/modality/MMIComponent.h> +#include <uscxml/plugins/ioprocessor/modality/MMIProtoBridge.h> + +#include <umundo/core.h> +#include <umundo/s11n.h> + +#ifdef BUILD_AS_PLUGINS +#include "uscxml/plugins/Plugins.h" +#endif + +namespace uscxml { + +class VoiceXMLInvoker : public InvokerImpl, public umundo::TypedReceiver { +public: + VoiceXMLInvoker(); + virtual ~VoiceXMLInvoker(); + virtual boost::shared_ptr<IOProcessorImpl> create(InterpreterImpl* interpreter); + + virtual std::set<std::string> getNames() { + std::set<std::string> names; + names.insert("vxml"); + names.insert("voicexml"); + names.insert("http://www.w3.org/TR/voicexml21/"); + return names; + } + + virtual void receive(void* object, umundo::Message* msg); + + virtual Data getDataModelVariables(); + virtual void send(const SendRequest& req); + virtual void invoke(const InvokeRequest& req); + + +protected: + umundo::Node _node; + umundo::TypedPublisher _pub; + umundo::TypedSubscriber _sub; +}; + +#ifdef BUILD_AS_PLUGINS +PLUMA_INHERIT_PROVIDER(VoiceXMLInvoker, InvokerImpl); +#endif + +} + + +#endif /* end of include guard: VOICEXMLINVOKER_H_W09J90F0 */ |