summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--manager/Makefile4
-rw-r--r--manager/distrio_manager.cpp28
-rw-r--r--manager/distrio_manager.h93
-rw-r--r--manager/manager_base.h21
4 files changed, 134 insertions, 12 deletions
diff --git a/manager/Makefile b/manager/Makefile
index 41553c3..496f3ad 100644
--- a/manager/Makefile
+++ b/manager/Makefile
@@ -25,13 +25,13 @@ all: $(OBJ)
idl:
$(TAO_IDL) -GI -I../interfaces ../interfaces/$(COMPONENT).idl
- rm -f $(COMPONENT)I.cpp
+ rm -f $(COMPONENT)I.cpp $(COMPONENT)I.h
idl_clean:
rm -f $(IDL_CLEANFILES)
clean: idl_clean
- rm *.o
+ rm -f *.o
rm -f $(EXEC)
install: all
diff --git a/manager/distrio_manager.cpp b/manager/distrio_manager.cpp
index de707e9..b7671fb 100644
--- a/manager/distrio_manager.cpp
+++ b/manager/distrio_manager.cpp
@@ -8,7 +8,7 @@
* @licence GPLv2
*/
-#include "distrio_managerI.h"
+#include "distrio_manager.h"
#include <orbsvcs/CosNamingC.h>
@@ -27,37 +27,45 @@ Distrio_Manager_i::~Distrio_Manager_i (void)
::Distrio::Error * Distrio_Manager_i::digital (
::Distrio::Digital_list_out io_list)
{
- // Add your implementation here
+ io_list = &digital_list;
}
::Distrio::Error * Distrio_Manager_i::analog (
::Distrio::Analog_list_out io_list)
{
- // Add your implementation here
+ io_list = &analog_list;
}
::Distrio::Error * Distrio_Manager_i::device (
::Distrio::Device_list_out dev_list)
{
- // Add your implementation here
+ dev_list = &device_list;
}
+/* TODO: think about locking!!! */
+
::Distrio::Error * Distrio_Manager_i::register_io_digital (
- ::Distrio::Analog_ptr io_ana)
+ ::Distrio::Digital_ptr & io_digi)
{
- // Add your implementation here
+ io_digi->id (new_id ());
+ digital_list.length (digital_list.length () + 1);
+ digital_list [digital_list.length () - 1] = io_digi;
}
::Distrio::Error * Distrio_Manager_i::register_io_analog (
- ::Distrio::Digital_ptr io_dig)
+ ::Distrio::Analog_ptr & io_ana)
{
- // Add your implementation here
+ io_ana->id (new_id ());
+ analog_list.length (digital_list.length () + 1);
+ analog_list [analog_list.length () - 1] = io_ana;
}
::Distrio::Error * Distrio_Manager_i::register_io_device (
- ::Distrio::Device_ptr io_dev)
+ ::Distrio::Device_ptr & io_dev)
{
- // Add your implementation here
+ io_dev->id (new_id ());
+ device_list.length (device_list.length () + 1);
+ device_list [device_list.length () - 1] = io_dev;
}
::Distrio::Error * Distrio_Manager_i::unregister_io_digital (
diff --git a/manager/distrio_manager.h b/manager/distrio_manager.h
new file mode 100644
index 0000000..a2820e6
--- /dev/null
+++ b/manager/distrio_manager.h
@@ -0,0 +1,93 @@
+// -*- C++ -*-
+// $Id$
+
+/**
+ * Code generated by the The ACE ORB (TAO) IDL Compiler v2.1.2
+ * TAO and the TAO IDL Compiler have been developed by:
+ * Center for Distributed Object Computing
+ * Washington University
+ * St. Louis, MO
+ * USA
+ * http://www.cs.wustl.edu/~schmidt/doc-center.html
+ * and
+ * Distributed Object Computing Laboratory
+ * University of California at Irvine
+ * Irvine, CA
+ * USA
+ * and
+ * Institute for Software Integrated Systems
+ * Vanderbilt University
+ * Nashville, TN
+ * USA
+ * http://www.isis.vanderbilt.edu/
+ *
+ * Information about TAO is available at:
+ * http://www.cs.wustl.edu/~schmidt/TAO.html
+ **/
+
+// TAO_IDL - Generated from
+// be/be_codegen.cpp:1616
+
+#ifndef DISTRIO_MANAGERI_Z5WXNW_H_
+#define DISTRIO_MANAGERI_Z5WXNW_H_
+
+#include "distrio_managerS.h"
+#include "manager_base.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class Distrio_Manager_i
+ : public virtual POA_Distrio::Manager, Distrio_manager_base
+{
+public:
+ // Constructor
+ Distrio_Manager_i (void);
+
+ // Destructor
+ virtual ~Distrio_Manager_i (void);
+
+ virtual
+ ::Distrio::Error * digital (
+ ::Distrio::Digital_list_out io_list);
+
+ virtual
+ ::Distrio::Error * analog (
+ ::Distrio::Analog_list_out io_list);
+
+ virtual
+ ::Distrio::Error * device (
+ ::Distrio::Device_list_out dev_list);
+
+ virtual
+ ::Distrio::Error * register_io_digital (
+ ::Distrio::Digital_ptr & io_dig);
+
+ virtual
+ ::Distrio::Error * register_io_analog (
+ ::Distrio::Analog_ptr & io_ana);
+
+ virtual
+ ::Distrio::Error * register_io_device (
+ ::Distrio::Device_ptr & io_dev);
+
+ virtual
+ ::Distrio::Error * unregister_io_digital (
+ ::Distrio::Digital_ptr io_dig);
+
+ virtual
+ ::Distrio::Error * unregister_io_analog (
+ ::Distrio::Analog_ptr io_ana);
+
+ virtual
+ ::Distrio::Error * unregister_io_device (
+ ::Distrio::Device_ptr io_dev);
+
+ virtual
+ void log_error (
+ const ::Distrio::Error & error);
+};
+
+
+#endif /* DISTRIO_MANAGERI_H_ */
diff --git a/manager/manager_base.h b/manager/manager_base.h
new file mode 100644
index 0000000..790609e
--- /dev/null
+++ b/manager/manager_base.h
@@ -0,0 +1,21 @@
+/**
+ * used by interface implementation to store private attributes
+ *
+ * @author Manuel Traut <manut@mecka.net>
+ * @licence GPLv2
+ */
+
+#include <distrio_ioC.h>
+
+class Distrio_manager_base {
+ public:
+ Distrio_manager_base () {id = 0;}
+ ~Distrio_manager_base () {}
+ protected:
+ long id;
+ Distrio::Device_list device_list;
+ Distrio::Analog_list analog_list;
+ Distrio::Digital_list digital_list;
+ /* TODO: locking */
+ long new_id () { return id++; }
+};