summaryrefslogtreecommitdiffstats
path: root/src/uscxml
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-05-14 14:29:19 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-05-14 14:29:19 (GMT)
commita154682fc1b25581742d38dd5fe9aa06ede167b7 (patch)
tree7574933b0cc8767a963ca1198425ba9e071374c6 /src/uscxml
parenta49c068652d82ab40386bb702d0bd01e46015e7c (diff)
downloaduscxml-a154682fc1b25581742d38dd5fe9aa06ede167b7.zip
uscxml-a154682fc1b25581742d38dd5fe9aa06ede167b7.tar.gz
uscxml-a154682fc1b25581742d38dd5fe9aa06ede167b7.tar.bz2
Fixed bugs and worked on MMI bridge
Diffstat (limited to 'src/uscxml')
-rw-r--r--src/uscxml/CMakeLists.txt41
-rw-r--r--src/uscxml/Factory.cpp5
-rw-r--r--src/uscxml/Message.cpp5
-rw-r--r--src/uscxml/plugins/datamodel/CMakeLists.txt54
-rw-r--r--src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp13
-rw-r--r--src/uscxml/plugins/element/CMakeLists.txt14
-rw-r--r--src/uscxml/plugins/invoker/CMakeLists.txt102
-rw-r--r--src/uscxml/plugins/invoker/vxml/VoiceXMLInvoker.cpp67
-rw-r--r--src/uscxml/plugins/invoker/vxml/VoiceXMLInvoker.h51
-rw-r--r--src/uscxml/plugins/ioprocessor/CMakeLists.txt57
-rw-r--r--src/uscxml/plugins/ioprocessor/modality/MMIComponent.cpp22
-rw-r--r--src/uscxml/plugins/ioprocessor/modality/MMIComponent.h43
-rw-r--r--src/uscxml/plugins/ioprocessor/modality/MMIInvokerImpl.h12
-rw-r--r--src/uscxml/plugins/ioprocessor/modality/MMIProtoBridge.cpp113
-rw-r--r--src/uscxml/plugins/ioprocessor/modality/MMIProtoBridge.h34
15 files changed, 448 insertions, 185 deletions
diff --git a/src/uscxml/CMakeLists.txt b/src/uscxml/CMakeLists.txt
index 3167405..d96895e 100644
--- a/src/uscxml/CMakeLists.txt
+++ b/src/uscxml/CMakeLists.txt
@@ -3,56 +3,59 @@
############################################################
file(GLOB_RECURSE USCXML_SERVER
- src/uscxml/server/*.cpp
- src/uscxml/server/*.h
+ server/*.cpp
+ server/*.h
)
source_group("Interpreter" FILES ${USCXML_SERVER})
list (APPEND USCXML_FILES ${USCXML_SERVER})
file(GLOB_RECURSE USCXML_CONCURRENCY
- src/uscxml/concurrency/*.cpp
- src/uscxml/concurrency/*.h
+ concurrency/*.cpp
+ concurrency/*.h
)
source_group("Interpreter" FILES ${USCXML_CONCURRENCY})
list (APPEND USCXML_FILES ${USCXML_CONCURRENCY})
file(GLOB_RECURSE USCXML_DEBUG
- src/uscxml/debug/*.cpp
- src/uscxml/debug/*.h
+ debug/*.cpp
+ debug/*.h
)
source_group("Interpreter" FILES ${USCXML_DEBUG})
list (APPEND USCXML_FILES ${USCXML_DEBUG})
file(GLOB_RECURSE USCXML_INTERPRETERS
- src/uscxml/interpreter/*.cpp
- src/uscxml/interpreter/*.h
+ interpreter/*.cpp
+ interpreter/*.h
)
source_group("Interpreter" FILES ${USCXML_INTERPRETERS})
list (APPEND USCXML_FILES ${USCXML_INTERPRETERS})
file(GLOB USCXML_CORE
${CMAKE_SOURCE_DIR}/contrib/src/jsmn/jsmn.c
- src/uscxml/*.cpp
- src/uscxml/*.h
+ *.cpp
+ *.h
)
source_group("Interpreter" FILES ${USCXML_CORE})
list (APPEND USCXML_FILES ${USCXML_CORE})
if (BUILD_AS_PLUGINS)
- list (APPEND USCXML_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/src/uscxml/plugins)
+ list (APPEND USCXML_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/plugins)
file(GLOB PLUMA
- src/uscxml/plugins/Pluma/*.cpp
- src/uscxml/plugins/Pluma/*.h
- src/uscxml/plugins/*.cpp
- src/uscxml/plugins/*.h
+ plugins/Pluma/*.cpp
+ plugins/Pluma/*.h
+ plugins/*.cpp
+ plugins/*.h
)
source_group("Interpreter" FILES ${PLUMA})
list (APPEND USCXML_FILES ${PLUMA})
add_definitions("-DBUILD_AS_PLUGINS")
endif()
-include(src/uscxml/plugins/datamodel/CMakeLists.txt)
-include(src/uscxml/plugins/element/CMakeLists.txt)
-include(src/uscxml/plugins/invoker/CMakeLists.txt)
-include(src/uscxml/plugins/ioprocessor/CMakeLists.txt)
+add_subdirectory(plugins/datamodel)
+add_subdirectory(plugins/element)
+add_subdirectory(plugins/ioprocessor)
+add_subdirectory(plugins/invoker)
+set(USCXML_INCLUDE_DIRS ${USCXML_INCLUDE_DIRS} PARENT_SCOPE)
+set(USCXML_OPT_LIBS ${USCXML_OPT_LIBS} PARENT_SCOPE)
+set(USCXML_FILES ${USCXML_FILES} PARENT_SCOPE)
diff --git a/src/uscxml/Factory.cpp b/src/uscxml/Factory.cpp
index 5c9b206..9c59259 100644
--- a/src/uscxml/Factory.cpp
+++ b/src/uscxml/Factory.cpp
@@ -20,6 +20,7 @@
# ifdef UMUNDO_FOUND
# include "uscxml/plugins/invoker/umundo/UmundoInvoker.h"
+# include "uscxml/plugins/invoker/vxml/VoiceXMLInvoker.h"
# endif
# ifdef OPENSCENEGRAPH_FOUND
@@ -100,6 +101,10 @@ Factory::Factory() {
UmundoInvoker* invoker = new UmundoInvoker();
registerInvoker(invoker);
}
+ {
+ VoiceXMLInvoker* invoker = new VoiceXMLInvoker();
+ registerInvoker(invoker);
+ }
#endif
#ifdef MILES_FOUND
diff --git a/src/uscxml/Message.cpp b/src/uscxml/Message.cpp
index 8a65ed2..dbcf976 100644
--- a/src/uscxml/Message.cpp
+++ b/src/uscxml/Message.cpp
@@ -239,12 +239,12 @@ Data Data::fromJSON(const std::string& jsonString) {
free(t);
// LOG(INFO) << "Increasing JSON length to token ratio to 1/" << frac;
}
- t = (jsmntok_t*)malloc(nrTokens * sizeof(jsmntok_t) + 1);
+ t = (jsmntok_t*)malloc((nrTokens + 1) * sizeof(jsmntok_t));
if (t == NULL) {
LOG(ERROR) << "Cannot parse JSON, ran out of memory!";
return data;
}
- memset(t, 0, nrTokens * sizeof(jsmntok_t) + 1);
+ memset(t, 0, (nrTokens + 1) * sizeof(jsmntok_t));
rv = jsmn_parse(&p, trimmed.c_str(), t, nrTokens);
} while (rv == JSMN_ERROR_NOMEM && frac > 1);
@@ -276,6 +276,7 @@ Data Data::fromJSON(const std::string& jsonString) {
size_t currTok = 0;
do {
+ jsmntok_t t2 = t[currTok];
switch (t[currTok].type) {
case JSMN_STRING:
dataStack.back()->type = Data::VERBATIM;
diff --git a/src/uscxml/plugins/datamodel/CMakeLists.txt b/src/uscxml/plugins/datamodel/CMakeLists.txt
index 0634984..8acbcf7 100644
--- a/src/uscxml/plugins/datamodel/CMakeLists.txt
+++ b/src/uscxml/plugins/datamodel/CMakeLists.txt
@@ -3,13 +3,13 @@ if (APPLE AND IOS AND OFF)
FIND_LIBRARY(JSC_LIBRARY JavaScriptCore)
set(JSC_FOUND ON)
file(GLOB JSC_DATAMODEL
- src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/*.cpp
- src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/*.h
+ ecmascript/JavaScriptCore/*.cpp
+ ecmascript/JavaScriptCore/*.h
)
source_group("Datamodel\\jsc" FILES ${JSC_DATAMODEL})
file(GLOB_RECURSE JSC_DOM
- src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/dom/*.cpp
- src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/dom/*.h
+ ecmascript/JavaScriptCore/dom/*.cpp
+ ecmascript/JavaScriptCore/dom/*.h
)
source_group("Datamodel\\DOM" FILES ${JSC_DOM})
if (BUILD_AS_PLUGINS)
@@ -33,8 +33,8 @@ endif()
# NULL datamodel
file(GLOB NULL_DATAMODEL
- src/uscxml/plugins/datamodel/null/*.cpp
- src/uscxml/plugins/datamodel/null/*.h
+ null/*.cpp
+ null/*.h
)
source_group("Datamodel\\null" FILES ${NULL_DATAMODEL})
if (BUILD_AS_PLUGINS)
@@ -49,8 +49,8 @@ endif()
# XPath datamodel
file(GLOB XPATH_DATAMODEL
- src/uscxml/plugins/datamodel/xpath/*.cpp
- src/uscxml/plugins/datamodel/xpath/*.h
+ xpath/*.cpp
+ xpath/*.h
)
source_group("Datamodel\\xpath" FILES ${XPATH_DATAMODEL})
if (BUILD_AS_PLUGINS)
@@ -66,17 +66,15 @@ endif()
#if (NOT APPLE OR IOS)
# set(ENV{V8_SRC} ${CMAKE_SOURCE_DIR}/../v8)
- find_package(V8)
if (V8_FOUND)
- list (APPEND USCXML_INCLUDE_DIRS ${V8_INCLUDE_DIR})
file(GLOB V8_DATAMODEL
- src/uscxml/plugins/datamodel/ecmascript/v8/*.cpp
- src/uscxml/plugins/datamodel/ecmascript/v8/*.h
+ ecmascript/v8/*.cpp
+ ecmascript/v8/*.h
)
source_group("Datamodel\\v8" FILES ${V8_DATAMODEL})
file(GLOB_RECURSE V8_DOM
- src/uscxml/plugins/datamodel/ecmascript/v8/dom/*.cpp
- src/uscxml/plugins/datamodel/ecmascript/v8/dom/*.h
+ ecmascript/v8/dom/*.cpp
+ ecmascript/v8/dom/*.h
)
source_group("Datamodel\\v8\\DOM" FILES ${V8_DOM})
@@ -92,7 +90,6 @@ endif()
else()
list (APPEND USCXML_FILES ${V8_DATAMODEL})
list (APPEND USCXML_FILES ${V8_DOM})
- list (APPEND USCXML_OPT_LIBS ${V8_LIBRARY})
endif()
endif()
#endif()
@@ -100,19 +97,18 @@ endif()
# SWI PROLOG datamodel
-#set(SWI_INCLUDE_HINT ${CMAKE_SOURCE_DIR}/../pl-devel/include)
-#set(SWI_LIBRARY_HINT ${CMAKE_SOURCE_DIR}/../pl-devel/lib/x86_64-darwin12.2.0)
-find_package(SWI)
-#find_package(GMP)
-#find_package(CURSES)
if (SWI_FOUND)
- list (APPEND USCXML_INCLUDE_DIRS ${SWI_INCLUDE_DIR})
# message(FATAL_ERROR "SWI_INCLUDE_DIR: ${SWI_INCLUDE_DIR}")
-# include_directories(${GMP_INCLUDE_DIR})
-# include_directories(${CURSES_INCLUDE_DIR})
+
+ # if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
+ # set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -read_only_relocs suppress")
+ # set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -read_only_relocs suppress")
+ # set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -read_only_relocs suppress")
+ # set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -read_only_relocs suppress")
+ # endif()
file(GLOB_RECURSE SWI_DATAMODEL
- src/uscxml/plugins/datamodel/prolog/swi/*.cpp
- src/uscxml/plugins/datamodel/prolog/swi/*.h
+ prolog/swi/*.cpp
+ prolog/swi/*.h
)
source_group("Datamodel\\swi" FILES ${SWI_DATAMODEL})
if (BUILD_AS_PLUGINS)
@@ -121,12 +117,14 @@ if (SWI_FOUND)
${SWI_DATAMODEL})
target_link_libraries(datamodel_swi
uscxml
-# ${GMP_LIBRARY}
-# ${CURSES_LIBRARIES}
+ ${GMP_LIBRARY}
+ ${CURSES_LIBRARIES}
${SWI_LIBRARY})
set_target_properties(datamodel_swi PROPERTIES FOLDER "Plugin DataModel")
else()
list (APPEND USCXML_FILES ${SWI_DATAMODEL})
- list (APPEND USCXML_OPT_LIBS ${SWI_LIBRARY}) # ${GMP_LIBRARY} ${CURSES_LIBRARIES})
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/datamodel/xpath/XPathDataModel.cpp b/src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp
index 1af56b5..6b2f039 100644
--- a/src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/xpath/XPathDataModel.cpp
@@ -338,7 +338,7 @@ std::string XPathDataModel::evalAsString(const std::string& expr) {
case STRING:
return result.asString();
break;
- case BOOL:
+ case Arabica::XPath::BOOL: // MSVC croaks with ambiguous symbol without qualified name
return (result.asBool() ? "true" : "false");
break;
case NUMBER:
@@ -482,10 +482,11 @@ void XPathDataModel::init(const Element<std::string>& dataElem,
case STRING:
container.appendChild(_doc.createTextNode(expr.asString()));
break;
- case NUMBER:
+ case NUMBER: {
container.appendChild(_doc.createTextNode(toStr(expr.asNumber())));
break;
- case BOOL:
+ }
+ case Arabica::XPath::BOOL:
case ANY:
throw Event("error.execution", Event::PLATFORM);
}
@@ -531,7 +532,7 @@ void XPathDataModel::assign(const XPathValue<std::string>& key,
case STRING:
assign(key.asNodeSet(), value.asString(), assignElem);
break;
- case BOOL:
+ case Arabica::XPath::BOOL:
assign(key.asNodeSet(), value.asBool(), assignElem);
break;
case NUMBER:
@@ -546,7 +547,7 @@ void XPathDataModel::assign(const XPathValue<std::string>& key,
break;
}
case STRING:
- case BOOL:
+ case Arabica::XPath::BOOL:
case NUMBER:
case ANY:
throw Event("error.execution", Event::PLATFORM);
@@ -564,7 +565,7 @@ void XPathDataModel::assign(const XPathValue<std::string>& key,
break;
}
case STRING:
- case BOOL:
+ case Arabica::XPath::BOOL:
case NUMBER:
case ANY:
throw Event("error.execution", Event::PLATFORM);
diff --git a/src/uscxml/plugins/element/CMakeLists.txt b/src/uscxml/plugins/element/CMakeLists.txt
index fa54fc3..0c9cbda 100644
--- a/src/uscxml/plugins/element/CMakeLists.txt
+++ b/src/uscxml/plugins/element/CMakeLists.txt
@@ -1,8 +1,8 @@
# Fetch element
file(GLOB_RECURSE FETCH_ELEMENT
- src/uscxml/plugins/element/fetch/*.cpp
- src/uscxml/plugins/element/fetch/*.h
+ fetch/*.cpp
+ fetch/*.h
)
source_group("Element\\fetch" FILES ${FETCH_ELEMENT})
if (BUILD_AS_PLUGINS)
@@ -19,8 +19,8 @@ endif()
# Postpone element
file(GLOB_RECURSE POSTPONE_ELEMENT
- src/uscxml/plugins/element/postpone/*.cpp
- src/uscxml/plugins/element/postpone/*.h
+ postpone/*.cpp
+ postpone/*.h
)
source_group("Element\\postpone" FILES ${POSTPONE_ELEMENT})
if (BUILD_AS_PLUGINS)
@@ -37,8 +37,8 @@ endif()
# Respond element
file(GLOB_RECURSE RESPOND_ELEMENT
- src/uscxml/plugins/element/respond/*.cpp
- src/uscxml/plugins/element/respond/*.h
+ respond/*.cpp
+ respond/*.h
)
source_group("Element\\respond" FILES ${RESPOND_ELEMENT})
if (BUILD_AS_PLUGINS)
@@ -51,3 +51,5 @@ else()
list (APPEND USCXML_FILES ${RESPOND_ELEMENT})
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/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 */
diff --git a/src/uscxml/plugins/ioprocessor/CMakeLists.txt b/src/uscxml/plugins/ioprocessor/CMakeLists.txt
index c5f46e8..0fab6a4 100644
--- a/src/uscxml/plugins/ioprocessor/CMakeLists.txt
+++ b/src/uscxml/plugins/ioprocessor/CMakeLists.txt
@@ -1,8 +1,8 @@
# LIBEVENT basichttp ioprocessor - this one is already required above
file(GLOB_RECURSE BASICHTTP_IOPROCESSOR
- src/uscxml/plugins/ioprocessor/basichttp/*.cpp
- src/uscxml/plugins/ioprocessor/basichttp/*.h
+ basichttp/*.cpp
+ basichttp/*.h
)
source_group("IOProcessor\\basichttp" FILES ${BASICHTTP_IOPROCESSOR})
if (BUILD_AS_PLUGINS)
@@ -19,8 +19,8 @@ endif()
# scxml ioprocessor - this one is already required above
file(GLOB_RECURSE SCXML_IOPROCESSOR
- src/uscxml/plugins/ioprocessor/scxml/*.cpp
- src/uscxml/plugins/ioprocessor/scxml/*.h
+ scxml/*.cpp
+ scxml/*.h
)
source_group("IOProcessor\\scxml" FILES ${SCXML_IOPROCESSOR})
if (BUILD_AS_PLUGINS)
@@ -36,18 +36,41 @@ endif()
# mmi ioprocessor
-file(GLOB_RECURSE MMI_IOPROCESSOR
- src/uscxml/plugins/ioprocessor/modality/*.cpp
- src/uscxml/plugins/ioprocessor/modality/*.h
-)
-source_group("IOProcessor\\modality" FILES ${MMI_IOPROCESSOR})
-if (BUILD_AS_PLUGINS)
- add_library(
- ioprocessor_mmi SHARED
- ${MMI_IOPROCESSOR})
- target_link_libraries(ioprocessor_mmi uscxml)
- set_target_properties(ioprocessor_mmi PROPERTIES FOLDER "Plugin IOProcessor")
-else()
- list (APPEND USCXML_FILES ${MMI_IOPROCESSOR})
+if (PROTOBUF_FOUND)
+
+ if (NOT PROTOBUF_PROTOC_EXECUTABLE)
+ message(FATAL_ERROR "protoc binary required for serialization")
+ endif()
+
+ file(GLOB_RECURSE MMI_IOPROCESSOR
+ modality/*.cpp
+ modality/*.h
+ )
+
+ # process .proto files
+ file(GLOB_RECURSE PROTOBUF_INTERFACES ${PROJECT_SOURCE_DIR}/contrib/proto/*.proto)
+ list (APPEND USCXML_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR})
+
+ PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS ${PROTOBUF_INTERFACES})
+# set_source_files_properties(${PROTO_SRCS} ${PROTO_HDRS} PROPERTIES GENERATED TRUE)
+
+ # this needs to be here for dependencies on the generated proto files
+ add_library(mmi_proto STATIC ${PROTO_SRCS})
+ set_target_properties(mmi_proto PROPERTIES FOLDER "Generated")
+
+ source_group("IOProcessor\\modality" FILES ${MMI_IOPROCESSOR})
+ if (BUILD_AS_PLUGINS)
+ add_library(
+ ioprocessor_mmi SHARED
+ ${MMI_IOPROCESSOR})
+ target_link_libraries(ioprocessor_mmi uscxml mmi_proto)
+ set_target_properties(ioprocessor_mmi PROPERTIES FOLDER "Plugin IOProcessor")
+ else()
+ list (APPEND USCXML_FILES ${MMI_IOPROCESSOR})
+ list (APPEND USCXML_OPT_LIBS mmi_proto)
+ endif()
endif()
+set(USCXML_INCLUDE_DIRS ${USCXML_INCLUDE_DIRS} PARENT_SCOPE)
+set(USCXML_OPT_LIBS ${USCXML_OPT_LIBS} PARENT_SCOPE)
+set(USCXML_FILES ${USCXML_FILES} PARENT_SCOPE)
diff --git a/src/uscxml/plugins/ioprocessor/modality/MMIComponent.cpp b/src/uscxml/plugins/ioprocessor/modality/MMIComponent.cpp
index a38e275..c1e973b 100644
--- a/src/uscxml/plugins/ioprocessor/modality/MMIComponent.cpp
+++ b/src/uscxml/plugins/ioprocessor/modality/MMIComponent.cpp
@@ -1,30 +1,12 @@
#include "MMIComponent.h"
//#include <glog/logging.h>
-#ifdef BUILD_AS_PLUGINS
-#include <Pluma/Connector.hpp>
-#endif
-
namespace uscxml {
-MMIIOProcessor::MMIIOProcessor() {
-}
-
-MMIIOProcessor::~MMIIOProcessor() {
-}
-
-boost::shared_ptr<IOProcessorImpl> MMIIOProcessor::create(InterpreterImpl* interpreter) {
- boost::shared_ptr<MMIIOProcessor> invoker = boost::shared_ptr<MMIIOProcessor>(new MMIIOProcessor());
- invoker->_interpreter = interpreter;
- return invoker;
-}
-
-Data MMIIOProcessor::getDataModelVariables() {
- Data data;
- return data;
+MMIComponent::MMIComponent() {
}
-void MMIIOProcessor::send(const SendRequest& req) {
+MMIComponent::~MMIComponent() {
}
} \ No newline at end of file
diff --git a/src/uscxml/plugins/ioprocessor/modality/MMIComponent.h b/src/uscxml/plugins/ioprocessor/modality/MMIComponent.h
index ba3f2c8..990222f 100644
--- a/src/uscxml/plugins/ioprocessor/modality/MMIComponent.h
+++ b/src/uscxml/plugins/ioprocessor/modality/MMIComponent.h
@@ -1,50 +1,33 @@
#ifndef MMIIOPROCESSOR_H_W09J90F0
#define MMIIOPROCESSOR_H_W09J90F0
-#include <uscxml/Interpreter.h>
#include "MMIMessages.h"
-#ifdef BUILD_AS_PLUGINS
-#include "uscxml/plugins/Plugins.h"
-#endif
-
namespace uscxml {
-class MMIIOProcessor : public IOProcessorImpl {
+class MMIComponent {
public:
- MMIIOProcessor();
- virtual ~MMIIOProcessor();
- virtual boost::shared_ptr<IOProcessorImpl> create(InterpreterImpl* interpreter);
-
- virtual std::set<std::string> getNames() {
- return std::set<std::string>();
- };
-
- virtual Data getDataModelVariables();
- virtual void send(const SendRequest& req);
+ MMIComponent();
+ virtual ~MMIComponent();
/** Modality component */
- virtual PrepareResponse prepare(const PrepareRequest&);
- virtual StartResponse start(const StartRequest&);
- virtual CancelResponse cancel(const CancelRequest&);
- virtual PauseResponse pause(const PauseRequest&);
- virtual ResumeResponse resume(const ResumeRequest&);
- virtual ExtensionNotification extension(const ExtensionNotification&);
- virtual ClearContextRequest clearContext(const ClearContextRequest&);
- virtual StatusResponse status(const StatusRequest&);
+ virtual PrepareResponse prepare(const PrepareRequest&) = 0;
+ virtual StartResponse start(const StartRequest&) = 0;
+ virtual CancelResponse cancel(const CancelRequest&) = 0;
+ virtual PauseResponse pause(const PauseRequest&) = 0;
+ virtual ResumeResponse resume(const ResumeRequest&) = 0;
+ virtual ExtensionNotification extension(const ExtensionNotification&) = 0;
+ virtual ClearContextRequest clearContext(const ClearContextRequest&) = 0;
+ virtual StatusResponse status(const StatusRequest&) = 0;
/** Interaction Manager */
- virtual NewContextResponse newContext(const NewContextRequest&);
- virtual DoneNotification done(const DoneNotification&);
+ virtual NewContextResponse newContext(const NewContextRequest&) = 0;
+ virtual DoneNotification done(const DoneNotification&) = 0;
// virtual ExtensionNotification extension(const ExtensionNotification&);
};
-#ifdef BUILD_AS_PLUGINS
-PLUMA_INHERIT_PROVIDER(MMIIOProcessor, IOProcessorImpl);
-#endif
-
}
diff --git a/src/uscxml/plugins/ioprocessor/modality/MMIInvokerImpl.h b/src/uscxml/plugins/ioprocessor/modality/MMIInvokerImpl.h
new file mode 100644
index 0000000..45e316f
--- /dev/null
+++ b/src/uscxml/plugins/ioprocessor/modality/MMIInvokerImpl.h
@@ -0,0 +1,12 @@
+#ifndef MMIINVOKER_H_612CXWUU
+#define MMIINVOKER_H_612CXWUU
+
+#include "MMIComponent.h"
+
+namespace uscxml {
+
+class MMIInvokerImpl : public virtual InvokerImpl, public MMIIOProcessor {
+};
+
+}
+#endif /* end of include guard: MMIINVOKER_H_612CXWUU */
diff --git a/src/uscxml/plugins/ioprocessor/modality/MMIProtoBridge.cpp b/src/uscxml/plugins/ioprocessor/modality/MMIProtoBridge.cpp
new file mode 100644
index 0000000..55ee9fe
--- /dev/null
+++ b/src/uscxml/plugins/ioprocessor/modality/MMIProtoBridge.cpp
@@ -0,0 +1,113 @@
+#include "MMIProtoBridge.h"
+
+#define INIT_PROTO_LIFE_CYCLE_EVENT(type) \
+::LifeCycleEvent lifeCycleEvent; \
+lifeCycleEvent.set_type(type); \
+lifeCycleEvent.set_requestid(mmiEvent.requestId); \
+lifeCycleEvent.set_source(mmiEvent.source); \
+lifeCycleEvent.set_target(mmiEvent.target);
+
+namespace uscxml {
+
+::LifeCycleEvent MMIProtoBridge::toProto(const NewContextRequest& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_NEW_CONTEXT_REQUEST);
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const NewContextResponse& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_NEW_CONTEXT_RESPONSE);
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const PrepareRequest& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_PREPARE_REQUEST);
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const PrepareResponse& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_PREPARE_RESPONSE);
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const StartRequest& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_START_REQUEST);
+
+ ::LifeCycleRequest* lifeCycleRequest = lifeCycleEvent.MutableExtension(::LifeCycleRequest::Request);
+ lifeCycleRequest->set_context(mmiEvent.context);
+
+ ::StartRequest* startRequest = lifeCycleRequest->MutableExtension(::StartRequest::Request);
+ startRequest->set_content(mmiEvent.content);
+ startRequest->set_contenturl(mmiEvent.contentURL.href);
+
+ ::StartRequestData* startRequestData = startRequest->MutableExtension(::StartRequestData::Request);
+ startRequestData->set_data(mmiEvent.data);
+
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const StartResponse& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_START_RESPONSE);
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const DoneNotification& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_DONE_NOTIFICATION);
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const CancelRequest& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_CANCEL_REQUEST);
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const CancelResponse& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_CANCEL_RESPONSE);
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const PauseRequest& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_PAUSE_REQUEST);
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const PauseResponse& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_PAUSE_RESPONSE);
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const ResumeRequest& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_RESUME_REQUEST);
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const ResumeResponse& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_RESUME_RESPONSE);
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const ExtensionNotification& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_EXTENSION_NOTIFICATION);
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const ClearContextRequest& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_CLEAR_CONTEXT_REQUEST);
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const ClearContextResponse& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_CLEAR_CONTEXT_RESPONSE);
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const StatusRequest& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_STATUS_REQUEST);
+ return lifeCycleEvent;
+}
+
+::LifeCycleEvent MMIProtoBridge::toProto(const StatusResponse& mmiEvent) {
+ INIT_PROTO_LIFE_CYCLE_EVENT(::LifeCycleEvent_LifeCycleEventType_STATUS_RESPONSE);
+ return lifeCycleEvent;
+}
+
+} \ No newline at end of file
diff --git a/src/uscxml/plugins/ioprocessor/modality/MMIProtoBridge.h b/src/uscxml/plugins/ioprocessor/modality/MMIProtoBridge.h
new file mode 100644
index 0000000..32a69f6
--- /dev/null
+++ b/src/uscxml/plugins/ioprocessor/modality/MMIProtoBridge.h
@@ -0,0 +1,34 @@
+#ifndef MMIPROTOBRIDGE_H_T6VXUX69
+#define MMIPROTOBRIDGE_H_T6VXUX69
+
+#include "LifeCycleEvents.pb.h"
+#include "StringDataExtension.pb.h"
+#include "MMIMessages.h"
+
+namespace uscxml {
+
+class MMIProtoBridge {
+public:
+ static ::LifeCycleEvent toProto(const NewContextRequest&);
+ static ::LifeCycleEvent toProto(const NewContextResponse&);
+ static ::LifeCycleEvent toProto(const PrepareRequest&);
+ static ::LifeCycleEvent toProto(const PrepareResponse&);
+ static ::LifeCycleEvent toProto(const StartRequest&);
+ static ::LifeCycleEvent toProto(const StartResponse&);
+ static ::LifeCycleEvent toProto(const DoneNotification&);
+ static ::LifeCycleEvent toProto(const CancelRequest&);
+ static ::LifeCycleEvent toProto(const CancelResponse&);
+ static ::LifeCycleEvent toProto(const PauseRequest&);
+ static ::LifeCycleEvent toProto(const PauseResponse&);
+ static ::LifeCycleEvent toProto(const ResumeRequest&);
+ static ::LifeCycleEvent toProto(const ResumeResponse&);
+ static ::LifeCycleEvent toProto(const ExtensionNotification&);
+ static ::LifeCycleEvent toProto(const ClearContextRequest&);
+ static ::LifeCycleEvent toProto(const ClearContextResponse&);
+ static ::LifeCycleEvent toProto(const StatusRequest&);
+ static ::LifeCycleEvent toProto(const StatusResponse&);
+};
+
+}
+
+#endif /* end of include guard: MMIPROTOBRIDGE_H_T6VXUX69 */