summaryrefslogtreecommitdiff
path: root/quellcode/versuch2
diff options
context:
space:
mode:
authorManuel Traut <manut@mecka.net>2014-03-31 16:53:55 +0200
committerManuel Traut <manut@mecka.net>2014-03-31 16:53:55 +0200
commit1adba473e6917b227e1b0a1118148101dca202e7 (patch)
tree13180ede9564ba50c528b274ee5719b4e030ef06 /quellcode/versuch2
parenteacbf5bb4d57af21c731f41251015d3b991ad490 (diff)
add quellcodeHEADmaster
Signed-off-by: Manuel Traut <manut@mecka.net>
Diffstat (limited to 'quellcode/versuch2')
-rwxr-xr-xquellcode/versuch2/CPXEventConsumerbin0 -> 226538 bytes
-rwxr-xr-xquellcode/versuch2/CPXEventConsumer_i.cpp44
-rwxr-xr-xquellcode/versuch2/CPXEventConsumer_i.h17
-rwxr-xr-xquellcode/versuch2/CPXEventSupplierbin0 -> 204981 bytes
-rwxr-xr-xquellcode/versuch2/CPXEventSupplier_i.cpp14
-rwxr-xr-xquellcode/versuch2/CPXEventSupplier_i.h19
-rwxr-xr-xquellcode/versuch2/ESConsumer.cpp94
-rwxr-xr-xquellcode/versuch2/ESSupplier.cpp106
-rwxr-xr-xquellcode/versuch2/GNUmakefile.RTEvent_Consumer177
-rwxr-xr-xquellcode/versuch2/GNUmakefile.RTEvent_Supplier177
-rwxr-xr-xquellcode/versuch2/RTEvent.mpc22
-rwxr-xr-xquellcode/versuch2/buildNcopy2
-rwxr-xr-xquellcode/versuch2/cpx.cpp85
-rwxr-xr-xquellcode/versuch2/cpx.h73
-rwxr-xr-xquellcode/versuch2/error.txt13
15 files changed, 843 insertions, 0 deletions
diff --git a/quellcode/versuch2/CPXEventConsumer b/quellcode/versuch2/CPXEventConsumer
new file mode 100755
index 0000000..f1de2b4
--- /dev/null
+++ b/quellcode/versuch2/CPXEventConsumer
Binary files differ
diff --git a/quellcode/versuch2/CPXEventConsumer_i.cpp b/quellcode/versuch2/CPXEventConsumer_i.cpp
new file mode 100755
index 0000000..3cd3f18
--- /dev/null
+++ b/quellcode/versuch2/CPXEventConsumer_i.cpp
@@ -0,0 +1,44 @@
+#include "CPXEventConsumer_i.h"
+
+#include <orbsvcs/RtecEventCommC.h>
+#include <orbsvcs/Event_Utilities.h>
+
+#include <tao/PortableServer/PS_CurrentC.h>
+#include <ace/OS_NS_stdio.h>
+
+#include <sstream>
+
+#include "cpx.h"
+
+const RtecEventComm::EventSourceID MY_SOURCE_ID = ACE_ES_EVENT_SOURCE_ANY + 1;
+const RtecEventComm::EventType MY_EVENT_TYPE = ACE_ES_EVENT_UNDEFINED + 1;
+
+CPX cpx;
+
+CPXEventConsumer_i::CPXEventConsumer_i(CORBA::ORB_ptr orb/*, int event_limit*/) : orb_(CORBA::ORB::_duplicate(orb))/* , event_limit_(event_limit)*/ {
+ //nothing
+}
+
+void CPXEventConsumer_i::push(const RtecEventComm::EventSet& events) throw (CORBA::SystemException) {
+ // loop through events
+ int value;
+ for(u_int i = 0; i < events.length(); ++i){
+ if(events[i].header.type == MY_EVENT_TYPE){
+ // std::cout<<"my event\n";
+ events[i].data.any_value >>= value;
+ cpx.set(1, value);
+ } else {
+ // std::cout<<"your event\n";
+ cpx.set(1, value-2);
+ }
+ }
+// if(--event_limit_ <= 0) orb_->shutdown(0);
+}
+
+void CPXEventConsumer_i::disconnect_push_consumer() throw (CORBA::SystemException){
+ CORBA::Object_var obj = orb_->resolve_initial_references("POACurrent");
+ PortableServer::Current_var current = PortableServer::Current::_narrow(obj.in());
+ PortableServer::POA_var poa = current->get_POA();
+ PortableServer::ObjectId_var objectId = current->get_object_id();
+ poa->deactivate_object(objectId.in());
+}
diff --git a/quellcode/versuch2/CPXEventConsumer_i.h b/quellcode/versuch2/CPXEventConsumer_i.h
new file mode 100755
index 0000000..7eacdea
--- /dev/null
+++ b/quellcode/versuch2/CPXEventConsumer_i.h
@@ -0,0 +1,17 @@
+#ifndef CPXEVENTCONSUMER_H
+#define CPXEVENTCONSUMER_H
+
+#include <orbsvcs/RtecEventCommS.h>
+#include <iostream>
+
+class CPXEventConsumer_i : public virtual POA_RtecEventComm::PushConsumer
+{
+public:
+ CPXEventConsumer_i(CORBA::ORB_ptr orb/*, int event_limit*/);
+ virtual void push(const RtecEventComm::EventSet& events) throw(CORBA::SystemException);
+ virtual void disconnect_push_consumer() throw(CORBA::SystemException);
+private:
+ CORBA::ORB_var orb_;
+};
+
+#endif
diff --git a/quellcode/versuch2/CPXEventSupplier b/quellcode/versuch2/CPXEventSupplier
new file mode 100755
index 0000000..a97332d
--- /dev/null
+++ b/quellcode/versuch2/CPXEventSupplier
Binary files differ
diff --git a/quellcode/versuch2/CPXEventSupplier_i.cpp b/quellcode/versuch2/CPXEventSupplier_i.cpp
new file mode 100755
index 0000000..4ceef8e
--- /dev/null
+++ b/quellcode/versuch2/CPXEventSupplier_i.cpp
@@ -0,0 +1,14 @@
+#include "CPXEventSupplier_i.h"
+#include <tao/PortableServer/PS_CurrentC.h>
+
+CPXEventSupplier_i::CPXEventSupplier_i(CORBA::ORB_ptr orb) : orb_(CORBA::ORB::_duplicate(orb)){
+ //nothing
+}
+
+void CPXEventSupplier_i::disconnect_push_supplier() throw(CORBA::SystemException){
+ CORBA::Object_var obj = orb_->resolve_initial_references("POACurrent");
+ PortableServer::Current_var current = PortableServer::Current::_narrow(obj.in());
+ PortableServer::POA_var poa = current->get_POA();
+ PortableServer::ObjectId_var objectId = current->get_object_id();
+ poa->deactivate_object(objectId.in());
+}
diff --git a/quellcode/versuch2/CPXEventSupplier_i.h b/quellcode/versuch2/CPXEventSupplier_i.h
new file mode 100755
index 0000000..c116ea0
--- /dev/null
+++ b/quellcode/versuch2/CPXEventSupplier_i.h
@@ -0,0 +1,19 @@
+#ifndef _CPXEventSupplier_i_h_
+#define _CPXEventSupplier_i_h_
+
+#include <orbsvcs/RtecEventCommS.h> // for POA_CosEventComm::PushSupplier
+
+class CPXEventSupplier_i : public virtual POA_RtecEventComm::PushSupplier
+{
+ public:
+ // Constructor
+ CPXEventSupplier_i(CORBA::ORB_ptr orb);
+
+ virtual void disconnect_push_supplier()
+ throw(CORBA::SystemException);
+
+ private:
+ CORBA::ORB_var orb_;
+};
+
+#endif // _CPXEventSupplier_i_h_
diff --git a/quellcode/versuch2/ESConsumer.cpp b/quellcode/versuch2/ESConsumer.cpp
new file mode 100755
index 0000000..6cc7515
--- /dev/null
+++ b/quellcode/versuch2/ESConsumer.cpp
@@ -0,0 +1,94 @@
+#include "CPXEventConsumer_i.h"
+
+#include <orbsvcs/RtecEventCommC.h>
+#include <orbsvcs/RtecEventChannelAdminC.h>
+#include <orbsvcs/Time_Utilities.h>
+#include <orbsvcs/Event_Utilities.h>
+#include <orbsvcs/CosNamingC.h>
+
+const int EVENT_LIMIT = 1000;
+
+int main (int argc, char* argv[])
+{
+
+
+ struct sched_param schedparam;
+ schedparam.sched_priority = 99;
+ if (sched_setscheduler(0, SCHED_FIFO, &schedparam) != 0) {
+ fprintf(stderr, "%s: PID %d: sched_setscheduler() failed errno = %d\n", __FUNCTION__, getpid(), errno);
+ }
+
+ try
+ {
+ // Initialize the ORB.
+ CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
+
+ // Find the Naming Service.
+ CORBA::Object_var obj = orb->resolve_initial_references("NameService");
+ CosNaming::NamingContextExt_var root_context = CosNaming::NamingContextExt::_narrow(obj.in());
+
+ // Find the EchoEventChannel.
+ obj = root_context->resolve_str("EventService");
+
+ // Downcast the object reference to an EventChannel reference.
+ RtecEventChannelAdmin::EventChannel_var ec =
+ RtecEventChannelAdmin::EventChannel::_narrow(obj.in());
+ if (CORBA::is_nil(ec.in())) {
+ std::cout << "Could not narrow EchoEventChannel." << std::endl;
+ return 1;
+ }
+ std::cout << "CPXEventConsumerMain.cpp: Found the EchoEventChannel." << std::endl;
+
+ // Obtain a reference to the consumer administration object.
+ RtecEventChannelAdmin::ConsumerAdmin_var admin = ec->for_consumers();
+
+ // Obtain a reference to the push supplier proxy.
+ RtecEventChannelAdmin::ProxyPushSupplier_var supplier =
+ admin->obtain_push_supplier();
+
+ // Get the RootPOA.
+ obj = orb->resolve_initial_references("RootPOA");
+ PortableServer::POA_var poa = PortableServer::POA::_narrow(obj.in());
+
+ // Instantiate an CPXEventConsumer_i servant.
+ CPXEventConsumer_i servant(orb.in()/*, EVENT_LIMIT*/);
+
+ // Register it with the RootPOA.
+ PortableServer::ObjectId_var oid = poa->activate_object(&servant);
+ CORBA::Object_var consumer_obj = poa->id_to_reference(oid.in());
+ RtecEventComm::PushConsumer_var consumer =
+ RtecEventComm::PushConsumer::_narrow(consumer_obj.in());
+
+ // Connect as a consumer.
+ ACE_ConsumerQOS_Factory qos;
+ qos.start_disjunction_group (1);
+ qos.insert_type (ACE_ES_EVENT_ANY, 0);
+ supplier->connect_push_consumer (consumer.in (), qos.get_ConsumerQOS ());
+
+ // Activate the POA via its POAManager.
+ PortableServer::POAManager_var poa_manager = poa->the_POAManager();
+ poa_manager->activate();
+
+ std::cout << "CPXEventConsumerMain.cpp: Ready to receive events..." << std::endl;
+
+ // Enter the ORB event loop.
+ orb->run();
+
+ // If we have reached this, we must be shutting down...
+ // Disconnect the ProxyPushSupplier.
+ supplier->disconnect_push_supplier();
+ supplier = RtecEventChannelAdmin::ProxyPushSupplier::_nil();
+ admin = RtecEventChannelAdmin::ConsumerAdmin::_nil();
+
+ orb->destroy();
+
+ return 0;
+ }
+ catch (CORBA::Exception& ex)
+ {
+ std::cout << "Caught CORBA::Exception" << std::endl << ex << std::endl;
+ }
+
+ return 1;
+}
+
diff --git a/quellcode/versuch2/ESSupplier.cpp b/quellcode/versuch2/ESSupplier.cpp
new file mode 100755
index 0000000..3099bac
--- /dev/null
+++ b/quellcode/versuch2/ESSupplier.cpp
@@ -0,0 +1,106 @@
+
+
+#include <orbsvcs/RtecEventCommC.h>
+#include <orbsvcs/RtecEventChannelAdminC.h>
+#include <orbsvcs/Time_Utilities.h>
+#include <orbsvcs/Event_Utilities.h>
+#include <orbsvcs/CosNamingC.h>
+
+#include <iostream>
+
+#include <unistd.h>
+#include "cpx.h"
+
+const RtecEventComm::EventSourceID MY_SOURCE_ID = ACE_ES_EVENT_SOURCE_ANY + 1;
+const RtecEventComm::EventType MY_EVENT_TYPE = ACE_ES_EVENT_UNDEFINED + 1;
+
+CPX cpx;
+
+RtecEventChannelAdmin::ProxyPushConsumer_var consumer;
+
+#include "CPXEventSupplier_i.h"
+
+void sigproc(int signo){
+
+ signal(SIGRTMIN+29, sigproc);
+ int eventData = cpx.get(1);
+
+ // Eventset initialisieren
+ RtecEventComm::EventSet events(1);
+ events.length(1);
+
+ events[0].header.source = MY_SOURCE_ID;
+ events[0].header.type = MY_EVENT_TYPE;
+
+ events[0].data.any_value <<= eventData;
+ consumer->push(events);
+
+ /*
+ if(eventData>0) events[0].data.any_value <<= 1;
+ else events[0].data.any_value <<= 255;
+
+ consumer->push(events);
+
+ if(rand() < 1626276121){
+ events[0].header.source = MY_SOURCE_ID;
+ events[0].header.type = MY_EVENT_TYPE+1;
+ if(eventData>0) events[0].data.any_value <<= 2;
+ else events[0].data.any_value <<= 255;
+ consumer->push(events);
+ }
+ */
+
+}
+
+int main(int argc, char* argv[]){
+
+ struct sched_param schedparam;
+ schedparam.sched_priority = 99;
+ if (sched_setscheduler(0, SCHED_FIFO, &schedparam) != 0) {
+ fprintf(stderr, "%s: PID %d: sched_setscheduler() failed errno = %d\n", __FUNCTION__, getpid(), errno);
+ }
+
+ signal(SIGRTMIN+29, sigproc);
+
+ try{
+ // initialize ORB
+ CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "ClientORB");
+ std::cout<<"ORB ok"<<std::endl;
+
+ // NamingService
+ CORBA::Object_var namingObject = orb->resolve_initial_references("NameService");
+ CosNaming::NamingContextExt_var namingContext = CosNaming::NamingContextExt::_narrow(namingObject.in());
+ std::cout<<"NamingService ok"<<std::endl;
+
+ // Get EventService
+ CORBA::Object_var esObj = namingContext->resolve_str("EventService");
+ RtecEventChannelAdmin::EventChannel_var ec = RtecEventChannelAdmin::EventChannel::_narrow(esObj.in());
+ if(CORBA::is_nil(ec.in())){
+ std::cout<<"couldn't connect to EventService\n";
+ return 1;
+ }
+ RtecEventChannelAdmin::SupplierAdmin_var admin = ec->for_suppliers();
+ consumer = admin->obtain_push_consumer();
+
+ // Instantiate and register servant
+ CPXEventSupplier_i servant(orb.in());
+
+ CORBA::Object_var poaObj = orb->resolve_initial_references("RootPOA");
+ PortableServer::POA_var poa = PortableServer::POA::_narrow(poaObj.in());
+ PortableServer::ObjectId_var oid = poa->activate_object(&servant);
+ CORBA::Object_var supplierObj = poa->id_to_reference(oid.in());
+ RtecEventComm::PushSupplier_var supplier = RtecEventComm::PushSupplier::_narrow(supplierObj.in());
+
+ ACE_SupplierQOS_Factory qos;
+ qos.insert(MY_SOURCE_ID, MY_EVENT_TYPE, 0 /*rt_info structure*/, 1 /*number of calls*/);
+
+ // connect as supplier
+ consumer->connect_push_supplier(supplier.in(), qos.get_SupplierQOS());
+
+ while(true) pause();
+
+ }catch(CORBA::Exception &any){
+ // std::cout<<"Exception occured: "<<any<<std::endl;
+ }
+ return 0;
+}
diff --git a/quellcode/versuch2/GNUmakefile.RTEvent_Consumer b/quellcode/versuch2/GNUmakefile.RTEvent_Consumer
new file mode 100755
index 0000000..3dd0a5d
--- /dev/null
+++ b/quellcode/versuch2/GNUmakefile.RTEvent_Consumer
@@ -0,0 +1,177 @@
+# -*- Makefile -*-
+#----------------------------------------------------------------------------
+# GNU Makefile
+#
+# @file GNUmakefile.RTEvent_Consumer
+#
+# gnu.mpd,v 1.147 2006/02/21 19:25:26 jwillemsen Exp
+#
+# This file was automatically generated by MPC. Any changes made directly to
+# this file will be lost the next time it is generated.
+#
+#----------------------------------------------------------------------------
+MAKEFILE = GNUmakefile.RTEvent_Consumer
+DEPENDENCY_FILE = .depend.RTEvent_Consumer
+BIN_UNCHECKED = CPXEventConsumer
+
+TAO_ROOT ?= $(ACE_ROOT)/TAO
+
+FILES = \
+ cpx.cpp \
+ ESConsumer.cpp \
+ CPXEventConsumer_i.cpp
+
+#----------------------------------------------------------------------------
+# Include macros and targets
+#----------------------------------------------------------------------------
+LDLIBS = -lTAO_RTEvent_Skel -lTAO_RTEvent -lTAO_Svc_Utils -lTAO_Messaging -lTAO_PI -lTAO_CodecFactory -lTAO_PortableServer -lTAO_Valuetype -lTAO_CosNaming -lTAO_AnyTypeCode -lTAO -lACE
+TAO_IDL = $(ACE_ROOT)/bin/tao_idl
+TAO_IDL_DEP = $(ACE_ROOT)/bin/tao_idl$(EXEEXT)
+TAO_IDLFLAGS = -Ge 1 -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h -I$(TAO_ROOT)
+
+PRJ_TYPE = rtp
+
+ifeq ($(INSBIN),.)
+ ifeq ($(PWD),)
+ PWD=$(shell pwd)
+ endif
+ INSBIN = $(PWD)
+endif
+OUTPUT_DIRECTORY = $(INSBIN)
+
+include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
+## We don't need the ACELIB setting from wrapper_macros.GNU
+ACELIB =
+tao_dont_use_idl_make_rule = 1
+include $(TAO_ROOT)/rules.tao.GNU
+
+# To build multiple targets in the same directory on AIX, it works
+# best to have a template directory per project.
+# The compiler/linker isn't too smart about instantiating templates...
+ifdef TEMPINCDIR
+TEMPINCDIR := $(TEMPINCDIR)/RTEvent_Consumer
+all: $(TEMPINCDIR)
+endif
+
+ifneq ($(OUTPUT_DIRECTORY),)
+all: $(OUTPUT_DIRECTORY)
+$(OUTPUT_DIRECTORY):
+ -@$(MKDIR) "$(OUTPUT_DIRECTORY)"
+endif
+
+# turn off libcheck if doing a dry run
+ifeq ($(findstring n, $(MAKEFLAGS)),n)
+ LIBCHECK = 1
+else
+ # turn off libcheck if keep going was passed too
+ ifeq ($(findstring k, $(MAKEFLAGS)),k)
+ LIBCHECK = 1
+ else
+ LIBCHECK ?= $(filter-out $(foreach lib,TAO_RTEvent_Skel TAO_RTEvent TAO_Svc_Utils TAO_Messaging TAO_PI TAO_CodecFactory TAO_PortableServer TAO_Valuetype TAO_CosNaming TAO_AnyTypeCode TAO ACE,$(findstring $(lib),$(foreach libpath,. $(ACE_ROOT)/lib /usr/lib $(INSLIB),$(wildcard $(libpath)/lib$(lib).* $(libpath)/$(lib).lib)))),TAO_RTEvent_Skel TAO_RTEvent TAO_Svc_Utils TAO_Messaging TAO_PI TAO_CodecFactory TAO_PortableServer TAO_Valuetype TAO_CosNaming TAO_AnyTypeCode TAO ACE)
+ ifeq ($(LIBCHECK),)
+ LIBCHECK = 1
+ endif
+ endif
+endif
+ifeq ($(corba_messaging),1)
+ifeq ($(exceptions),1)
+ifeq ($(LIBCHECK), 1)
+BIN = $(BIN_UNCHECKED)$(EXEEXT)
+else
+ all: lib_warning
+endif
+else
+ all: require_warning
+endif
+else
+ all: require_warning
+endif
+
+# If it contains ../ at all use notdir.
+OBJS = $(foreach var, $(addsuffix .$(OBJEXT), $(basename $(FILES)) $(RESOURCES)), $(if $(findstring ../,$(var)),$(notdir $(var)),$(var)))
+SRC = $(FILES)
+
+include $(ACE_ROOT)/include/makeinclude/macros.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
+
+ifneq ($(OUTPUT_DIRECTORY),)
+ifneq ($(OUTPUT_DIRECTORY),.)
+ INSTALL = $(VBIN:%=$(INSBIN)/%)
+ CLEANUP_INSTALL += $(CLEANUP_BIN:%=$(INSBIN)/%$(VAR)$(EXEEXT))
+endif
+endif
+
+include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
+ifeq ($(VXWORKSLINK),true)
+include $(TGT_DIR)/h/make/rules.$(PRJ_TYPE)
+endif
+
+ifeq ($(VXWORKSLINK),true)
+LDLIBPATH = -L. -L$(ACE_ROOT)/lib
+else
+LDFLAGS += -L. -L$(ACE_ROOT)/lib
+endif
+CPPFLAGS += -I$(ACE_ROOT) -I$(TAO_ROOT) -I$(TAO_ROOT)/orbsvcs
+ifeq ($(static_libs),1)
+ CPPFLAGS += -DACE_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS
+endif
+
+#----------------------------------------------------------------------------
+# Local targets
+#----------------------------------------------------------------------------
+lib_warning:
+ @echo This project will not be built due to the following missing library:
+ @echo $(LIBCHECK)
+
+require_warning:
+ @echo This project will not be built due to one of the following missing features:
+ @echo corba_messaging exceptions
+
+## Some OS's have /bin/test others only have /usr/bin/test
+ifeq ($(wildcard /bin/test), /bin/test)
+ TEST_EXE = /bin/test
+else
+ifeq ($(wildcard /usr/bin/test), /usr/bin/test)
+ TEST_EXE = /usr/bin/test
+endif
+endif
+
+DYLD_LIBRARY_PATH := $(DYLD_LIBRARY_PATH):$(ACE_ROOT)/lib
+LD_LIBRARY_PATH := $(LD_LIBRARY_PATH):$(ACE_ROOT)/lib
+SHLIB_PATH := $(SHLIB_PATH):$(ACE_ROOT)/lib
+LIBPATH := $(LIBPATH):$(ACE_ROOT)/lib
+PATH := $(PATH):$(ACE_ROOT)/lib
+
+ifneq ($(GENERATED_DIRTY),)
+.PRECIOUS: $(GENERATED_DIRTY)
+## If the generated files are anything but source files, we need to
+## ensure that those files are generated before we attempt to build anything
+## else.
+ifeq ($(OBJS_DEPEND_ON_GENERATED),1)
+$(VDIR)$(ACE_PCH_FILE) $(addprefix $(VDIR), $(OBJS)): $(GENERATED_DIRTY)
+$(VSHDIR)$(ACE_PCH_FILE) $(VSHOBJS): $(GENERATED_DIRTY)
+endif
+endif
+
+
+ifneq ($(VXWORKSLINK),true)
+ifeq ($(static_libs_only), 1)
+ ifeq ($(use_dep_libs), 1)
+ DEPLIBS = $(foreach lib, TAO_RTEvent_Skel TAO_RTEvent TAO_Svc_Utils TAO_Messaging TAO_PI TAO_CodecFactory TAO_PortableServer TAO_Valuetype TAO_CosNaming TAO_AnyTypeCode TAO ACE , $(foreach libpath, . $(ACE_ROOT)/lib, $(wildcard $(libpath)/lib$(lib).a)))
+ endif
+endif
+
+$(BIN): $(addprefix $(VDIR), $(OBJS)) $(DEPLIBS)
+ifndef kylix
+ $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK)
+else
+ $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,,
+endif
+endif
+
+realclean: clean
+ifneq ($(GENERATED_DIRTY),)
+ -$(RM) -r $(GENERATED_DIRTY)
+endif
+
diff --git a/quellcode/versuch2/GNUmakefile.RTEvent_Supplier b/quellcode/versuch2/GNUmakefile.RTEvent_Supplier
new file mode 100755
index 0000000..18788bf
--- /dev/null
+++ b/quellcode/versuch2/GNUmakefile.RTEvent_Supplier
@@ -0,0 +1,177 @@
+# -*- Makefile -*-
+#----------------------------------------------------------------------------
+# GNU Makefile
+#
+# @file GNUmakefile.RTEvent_Supplier
+#
+# gnu.mpd,v 1.147 2006/02/21 19:25:26 jwillemsen Exp
+#
+# This file was automatically generated by MPC. Any changes made directly to
+# this file will be lost the next time it is generated.
+#
+#----------------------------------------------------------------------------
+MAKEFILE = GNUmakefile.RTEvent_Supplier
+DEPENDENCY_FILE = .depend.RTEvent_Supplier
+BIN_UNCHECKED = CPXEventSupplier
+
+TAO_ROOT ?= $(ACE_ROOT)/TAO
+
+FILES = \
+ cpx.cpp \
+ ESSupplier.cpp \
+ CPXEventSupplier_i.cpp
+
+#----------------------------------------------------------------------------
+# Include macros and targets
+#----------------------------------------------------------------------------
+LDLIBS = -lTAO_RTEvent_Skel -lTAO_RTEvent -lTAO_Svc_Utils -lTAO_Messaging -lTAO_PI -lTAO_CodecFactory -lTAO_PortableServer -lTAO_Valuetype -lTAO_CosNaming -lTAO_AnyTypeCode -lTAO -lACE
+TAO_IDL = $(ACE_ROOT)/bin/tao_idl
+TAO_IDL_DEP = $(ACE_ROOT)/bin/tao_idl$(EXEEXT)
+TAO_IDLFLAGS = -Ge 1 -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h -I$(TAO_ROOT)
+
+PRJ_TYPE = rtp
+
+ifeq ($(INSBIN),.)
+ ifeq ($(PWD),)
+ PWD=$(shell pwd)
+ endif
+ INSBIN = $(PWD)
+endif
+OUTPUT_DIRECTORY = $(INSBIN)
+
+include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
+## We don't need the ACELIB setting from wrapper_macros.GNU
+ACELIB =
+tao_dont_use_idl_make_rule = 1
+include $(TAO_ROOT)/rules.tao.GNU
+
+# To build multiple targets in the same directory on AIX, it works
+# best to have a template directory per project.
+# The compiler/linker isn't too smart about instantiating templates...
+ifdef TEMPINCDIR
+TEMPINCDIR := $(TEMPINCDIR)/RTEvent_Supplier
+all: $(TEMPINCDIR)
+endif
+
+ifneq ($(OUTPUT_DIRECTORY),)
+all: $(OUTPUT_DIRECTORY)
+$(OUTPUT_DIRECTORY):
+ -@$(MKDIR) "$(OUTPUT_DIRECTORY)"
+endif
+
+# turn off libcheck if doing a dry run
+ifeq ($(findstring n, $(MAKEFLAGS)),n)
+ LIBCHECK = 1
+else
+ # turn off libcheck if keep going was passed too
+ ifeq ($(findstring k, $(MAKEFLAGS)),k)
+ LIBCHECK = 1
+ else
+ LIBCHECK ?= $(filter-out $(foreach lib,TAO_RTEvent_Skel TAO_RTEvent TAO_Svc_Utils TAO_Messaging TAO_PI TAO_CodecFactory TAO_PortableServer TAO_Valuetype TAO_CosNaming TAO_AnyTypeCode TAO ACE,$(findstring $(lib),$(foreach libpath,. $(ACE_ROOT)/lib /usr/lib $(INSLIB),$(wildcard $(libpath)/lib$(lib).* $(libpath)/$(lib).lib)))),TAO_RTEvent_Skel TAO_RTEvent TAO_Svc_Utils TAO_Messaging TAO_PI TAO_CodecFactory TAO_PortableServer TAO_Valuetype TAO_CosNaming TAO_AnyTypeCode TAO ACE)
+ ifeq ($(LIBCHECK),)
+ LIBCHECK = 1
+ endif
+ endif
+endif
+ifeq ($(corba_messaging),1)
+ifeq ($(exceptions),1)
+ifeq ($(LIBCHECK), 1)
+BIN = $(BIN_UNCHECKED)$(EXEEXT)
+else
+ all: lib_warning
+endif
+else
+ all: require_warning
+endif
+else
+ all: require_warning
+endif
+
+# If it contains ../ at all use notdir.
+OBJS = $(foreach var, $(addsuffix .$(OBJEXT), $(basename $(FILES)) $(RESOURCES)), $(if $(findstring ../,$(var)),$(notdir $(var)),$(var)))
+SRC = $(FILES)
+
+include $(ACE_ROOT)/include/makeinclude/macros.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
+
+ifneq ($(OUTPUT_DIRECTORY),)
+ifneq ($(OUTPUT_DIRECTORY),.)
+ INSTALL = $(VBIN:%=$(INSBIN)/%)
+ CLEANUP_INSTALL += $(CLEANUP_BIN:%=$(INSBIN)/%$(VAR)$(EXEEXT))
+endif
+endif
+
+include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
+ifeq ($(VXWORKSLINK),true)
+include $(TGT_DIR)/h/make/rules.$(PRJ_TYPE)
+endif
+
+ifeq ($(VXWORKSLINK),true)
+LDLIBPATH = -L. -L$(ACE_ROOT)/lib
+else
+LDFLAGS += -L. -L$(ACE_ROOT)/lib
+endif
+CPPFLAGS += -I$(ACE_ROOT) -I$(TAO_ROOT) -I$(TAO_ROOT)/orbsvcs
+ifeq ($(static_libs),1)
+ CPPFLAGS += -DACE_AS_STATIC_LIBS -DTAO_AS_STATIC_LIBS
+endif
+
+#----------------------------------------------------------------------------
+# Local targets
+#----------------------------------------------------------------------------
+lib_warning:
+ @echo This project will not be built due to the following missing library:
+ @echo $(LIBCHECK)
+
+require_warning:
+ @echo This project will not be built due to one of the following missing features:
+ @echo corba_messaging exceptions
+
+## Some OS's have /bin/test others only have /usr/bin/test
+ifeq ($(wildcard /bin/test), /bin/test)
+ TEST_EXE = /bin/test
+else
+ifeq ($(wildcard /usr/bin/test), /usr/bin/test)
+ TEST_EXE = /usr/bin/test
+endif
+endif
+
+DYLD_LIBRARY_PATH := $(DYLD_LIBRARY_PATH):$(ACE_ROOT)/lib
+LD_LIBRARY_PATH := $(LD_LIBRARY_PATH):$(ACE_ROOT)/lib
+SHLIB_PATH := $(SHLIB_PATH):$(ACE_ROOT)/lib
+LIBPATH := $(LIBPATH):$(ACE_ROOT)/lib
+PATH := $(PATH):$(ACE_ROOT)/lib
+
+ifneq ($(GENERATED_DIRTY),)
+.PRECIOUS: $(GENERATED_DIRTY)
+## If the generated files are anything but source files, we need to
+## ensure that those files are generated before we attempt to build anything
+## else.
+ifeq ($(OBJS_DEPEND_ON_GENERATED),1)
+$(VDIR)$(ACE_PCH_FILE) $(addprefix $(VDIR), $(OBJS)): $(GENERATED_DIRTY)
+$(VSHDIR)$(ACE_PCH_FILE) $(VSHOBJS): $(GENERATED_DIRTY)
+endif
+endif
+
+
+ifneq ($(VXWORKSLINK),true)
+ifeq ($(static_libs_only), 1)
+ ifeq ($(use_dep_libs), 1)
+ DEPLIBS = $(foreach lib, TAO_RTEvent_Skel TAO_RTEvent TAO_Svc_Utils TAO_Messaging TAO_PI TAO_CodecFactory TAO_PortableServer TAO_Valuetype TAO_CosNaming TAO_AnyTypeCode TAO ACE , $(foreach libpath, . $(ACE_ROOT)/lib, $(wildcard $(libpath)/lib$(lib).a)))
+ endif
+endif
+
+$(BIN): $(addprefix $(VDIR), $(OBJS)) $(DEPLIBS)
+ifndef kylix
+ $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $@ $^ $(VLDLIBS) $(POSTLINK)
+else
+ $(LINK.cc) $(LDFLAGS) $(CC_OUTPUT_FLAG) $(VLDLIBS) $(BORINITEXEOBJ) $(POSTLINK) $^, $@,,
+endif
+endif
+
+realclean: clean
+ifneq ($(GENERATED_DIRTY),)
+ -$(RM) -r $(GENERATED_DIRTY)
+endif
+
diff --git a/quellcode/versuch2/RTEvent.mpc b/quellcode/versuch2/RTEvent.mpc
new file mode 100755
index 0000000..66bd0db
--- /dev/null
+++ b/quellcode/versuch2/RTEvent.mpc
@@ -0,0 +1,22 @@
+project(*Supplier): namingexe, rteventexe, {
+ requires += exceptions
+ exename = CPXEventSupplier
+
+ Source_Files {
+ cpx.cpp
+ ESSupplier.cpp
+ CPXEventSupplier_i.cpp
+ }
+}
+
+project(*Consumer): namingexe, rteventexe, {
+ requires += exceptions
+ exename = CPXEventConsumer
+
+ Source_Files {
+ cpx.cpp
+ ESConsumer.cpp
+ CPXEventConsumer_i.cpp
+ }
+}
+
diff --git a/quellcode/versuch2/buildNcopy b/quellcode/versuch2/buildNcopy
new file mode 100755
index 0000000..fe744ee
--- /dev/null
+++ b/quellcode/versuch2/buildNcopy
@@ -0,0 +1,2 @@
+#!/bin/bash
+make -f GNUmakefile.RTEvent_Consumer && make -f GNUmakefile.RTEvent_Supplier && scp CPXEventConsumer root@136.230.189.129:/opt/acetao/tests/ && scp CPXEventSupplier root@136.230.189.135:/opt/acetao/tests/
diff --git a/quellcode/versuch2/cpx.cpp b/quellcode/versuch2/cpx.cpp
new file mode 100755
index 0000000..eebdc65
--- /dev/null
+++ b/quellcode/versuch2/cpx.cpp
@@ -0,0 +1,85 @@
+/**
+ *
+ * \file cpx.cpp
+ * \brief read and write DIO
+ *
+ * \author Manuel Traut
+ * \version 2006-10-06
+ *
+ */
+
+#include "cpx.h"
+
+CPX::CPX(){
+ init();
+ std::cout<<"\n\n init ok\n\n";
+}
+
+int CPX::init(){
+
+ int fd_out = open(CPX_Input, O_RDWR | O_SYNC);
+ if (fd_out == -1){
+ std::cout<<"PBCIO: open failed"<<std::endl;
+ return(-1);
+ }
+ std::cout<<"CPX_Output_1 opened\n";
+
+ /* setup signal on interrupt */
+ param.signal = 1001;
+ param.pid = getpid();
+
+ if (ioctl(fd_out, CPX_DIO_IOCTL_ADD_SIG, (void *) &param) == -1) {
+ std::cout<<"signal map failed\n";
+ close(fd_out);
+ return(-1);
+ } else std::cout<<"signal map ok\n";
+
+ mapped_out = (u_char*) mmap (NULL, 0x10000, PROT_READ | PROT_WRITE, MAP_SHARED, fd_out, 0);
+ if (mapped_out == MAP_FAILED) {
+ std::cout<<"PBCIO: mmap failed\n";
+ close (fd_out);
+ return(-2);
+ }
+ std::cout<<"mmap ok\n";
+
+ DOUT = (u_char *) mapped_out;
+ DIN = (u_char *) mapped_out;
+
+ return 0;
+}
+
+short CPX::get(short port){
+ unsigned char value = 0;
+
+ switch(port){
+ case 1:
+ value = DIN[PORT1_IN];
+ break;
+ case 2:
+ value = DIN[PORT1_IN];
+ break;
+ case 3:
+ value = DIN[PORT1_IN];
+ break;
+ default:
+ std::cout<<"portNo: "<<port<<" incorrect\n";
+ }
+
+ return (short) value;
+}
+
+void CPX::set(short port, short value){
+ switch(port){
+ case 1:
+ DOUT[PORT1_OUT] = value;
+ break;
+ case 2:
+ DOUT[PORT2_OUT] = value;
+ break;
+ case 3:
+ DOUT[PORT3_OUT] = value;
+ break;
+ default:
+ std::cout<<"portNo: "<<port<<" incorrect\n";
+ }
+}
diff --git a/quellcode/versuch2/cpx.h b/quellcode/versuch2/cpx.h
new file mode 100755
index 0000000..7b4545a
--- /dev/null
+++ b/quellcode/versuch2/cpx.h
@@ -0,0 +1,73 @@
+/**
+ *
+ * \file cpx.h
+ * \brief read and write DIO
+ *
+ * \author Manuel Traut
+ * \version 2006-10-06
+ *
+ */
+
+#ifndef CPX_H
+#define CPX_H
+
+#include <iostream>
+
+#include <sys/mman.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#define CPX_Input "/dev/iio2"
+#define CPX_Input_1 "/dev/iio2_in"
+#define CPX_Output_1 "/dev/iio2_out"
+
+#define PORT1_OUT 0x2c00
+#define PORT2_OUT 0x3c00
+#define PORT3_OUT 0x4c00
+
+#define PORT1_IN 0x5c00
+#define PORT2_IN 0x6c00
+#define PORT3_IN 0x7c00
+
+# ifndef PROT_READ
+# define PROT_READ 0x01
+# endif
+# ifndef PROT_WRITE
+# define PROT_WRITE 0x02
+# endif
+# ifndef MAP_SHARED
+# define MAP_SHARED 0x01
+# endif
+# ifndef MAP_PRIVATE
+# define MAP_PRIVATE 0x02
+# endif
+
+// ioctl (file descriptor, CPX_DIO_IOCTL_SET_SIGNAL, irq_send_signal_param*)
+// enable sending signal on interrupt
+// cpx_dio_set_signal_param.signal = signal to be sent to process
+#define CPX_DIO_IOCTL_BASE 0xCD
+
+typedef struct{
+ int signal; /* IN parameter: LINUX signal to be sent */
+ int pid; /* IN parameter: process id where signal should be sent to */
+}cpx_dio_set_signal_param;
+
+#define CPX_DIO_IOCTL_ADD_SIG _IOW(CPX_DIO_IOCTL_BASE, 3, cpx_dio_set_signal_param)
+#define CPX_DIO_IOCTL_DEL_SIG _IOW(CPX_DIO_IOCTL_BASE, 4, cpx_dio_set_signal_param)
+
+class CPX{
+ public:
+ CPX();
+ void set(short port, short value);
+ short get(short port);
+ private:
+ int init();
+ unsigned char *mapped_in;
+ unsigned char *mapped_out;
+ volatile u_char *DOUT;
+ volatile u_char *DIN;
+ cpx_dio_set_signal_param param;
+};
+
+#endif
diff --git a/quellcode/versuch2/error.txt b/quellcode/versuch2/error.txt
new file mode 100755
index 0000000..ff7c749
--- /dev/null
+++ b/quellcode/versuch2/error.txt
@@ -0,0 +1,13 @@
+/home/trautma/projects/ACE+TAO/trunk/ACE_wrappers/ace/CDR_Stream.inl: In member function 'bool ACE_OutputCDR::write_float(float)':
+/home/trautma/projects/ACE+TAO/trunk/ACE_wrappers/ace/CDR_Stream.inl:237: warning: dereferencing type-punned pointer will break strict-aliasing rules
+/home/trautma/projects/ACE+TAO/trunk/ACE_wrappers/ace/CDR_Stream.inl: In member function 'bool ACE_InputCDR::skip_double()':
+/home/trautma/projects/ACE+TAO/trunk/ACE_wrappers/ace/CDR_Stream.inl:974: warning: dereferencing type-punned pointer will break strict-aliasing rules
+ESSupplier.cpp: At global scope:
+ESSupplier.cpp:21: warning: unused parameter 'signo'
+/home/trautma/projects/ACE+TAO/trunk/ACE_wrappers/ace/CDR_Stream.inl: In member function 'bool ACE_OutputCDR::write_float(float)':
+/home/trautma/projects/ACE+TAO/trunk/ACE_wrappers/ace/CDR_Stream.inl:237: warning: dereferencing type-punned pointer will break strict-aliasing rules
+/home/trautma/projects/ACE+TAO/trunk/ACE_wrappers/ace/CDR_Stream.inl: In member function 'bool ACE_InputCDR::skip_double()':
+/home/trautma/projects/ACE+TAO/trunk/ACE_wrappers/ace/CDR_Stream.inl:974: warning: dereferencing type-punned pointer will break strict-aliasing rules
+CPXEventSupplier_i.cpp: In member function 'virtual void CPXEventSupplier_i::disconnect_push_supplier()':
+CPXEventSupplier_i.cpp:9: error: 'orb' was not declared in this scope
+make: *** [.obj/CPXEventSupplier_i.o] Fehler 1