summaryrefslogtreecommitdiff
path: root/io/bin/generic_gpio
diff options
context:
space:
mode:
Diffstat (limited to 'io/bin/generic_gpio')
-rw-r--r--io/bin/generic_gpio/Makefile3
-rw-r--r--io/bin/generic_gpio/generic_gpio.cpp46
2 files changed, 38 insertions, 11 deletions
diff --git a/io/bin/generic_gpio/Makefile b/io/bin/generic_gpio/Makefile
index c8aa810..b3e04ff 100644
--- a/io/bin/generic_gpio/Makefile
+++ b/io/bin/generic_gpio/Makefile
@@ -12,7 +12,8 @@ DISTRIO_IO := $(DISTRIO_BASE)io/lib
LDFLAGS += -L$(DISTRIO_COMMON) -ldistrio_common \
-L$(DISTRIO_IO) -ldistrio_io \
-L$(DISTRIO_MANAGER) -ldistrio_manager \
- -lACE -lTAO -lTAO_AnyTypeCode -lTAO_CosNaming -lTAO_PortableServer
+ -lACE -lTAO -lTAO_AnyTypeCode -lTAO_CosNaming -lTAO_PortableServer \
+ -lrt
CFLAGS += -fPIC -I$(DISTRIO_COMMON) -I$(DISTRIO_IO) -I$(DISTRIO_MANAGER)
CXXFLAGS += $(CFLAGS)
diff --git a/io/bin/generic_gpio/generic_gpio.cpp b/io/bin/generic_gpio/generic_gpio.cpp
index 325cb9c..1042c09 100644
--- a/io/bin/generic_gpio/generic_gpio.cpp
+++ b/io/bin/generic_gpio/generic_gpio.cpp
@@ -3,26 +3,49 @@
#include <distrio_ioI.h>
+#include <ace/Task.h>
+
#include <iostream>
-class My_digital : public Distrio_Digital_i {
+class Io_manager : public ACE_Task < ACE_MT_SYNCH > {
public:
- ::CORBA::Long id (void)
- {
- return my_id;
+ Io_manager () { }
+ ~Io_manager () { }
+
+ private:
+ int svc (void) {
+ while (1) {
+ std::cout << "check inputs" << std::endl;
+ sleep (1);
+ }
}
- void id (::CORBA::Long id)
- {
- my_id = id;
+};
+
+class My_digital : public Distrio_Digital_i {
+ public:
+ My_digital (std::string _name) { my_name = _name; }
+ ~My_digital () { };
+
+ ::CORBA::Long id (void) { return my_id; }
+
+ ::Distrio::Error *name (::CORBA::String_out _name) {
+ _name = CORBA::string_dup (my_name.c_str ());
+ std::cout << "name: " << my_name << std::endl;
+ return distrio_success ();
}
+
+ void id (::CORBA::Long id) { my_id = id; }
+
private:
+ std::string my_name;
::CORBA::Long my_id;
};
-int main (int argc, char **argv)
+ACE_TMAIN (int argc, ACE_TCHAR *argv[])
{
int ret = 0;
My_digital *digital;
+ Io_manager manager;
if (init_corba (argc, argv))
return -EINVAL;
@@ -30,15 +53,18 @@ int main (int argc, char **argv)
if (run_orb ())
return -EINVAL;
- digital = new My_digital ();
+ digital = new My_digital (std::string ("pin huhu"));
- if (register_digital ("pin huhu", digital)) {
+ if (register_digital (digital)) {
ret = -EINVAL;
goto out;
}
std::cout << "registered id: " << digital->id () << std::endl;
+ manager.activate ();
+ manager.wait ();
+
out:
free (digital);
return ret;