diff options
Diffstat (limited to 'io/bin/generic_gpio/generic_gpio.cpp')
| -rw-r--r-- | io/bin/generic_gpio/generic_gpio.cpp | 46 |
1 files changed, 36 insertions, 10 deletions
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; |
