From e84faa1a220ebdcf79a3d95e539dfc8d86a8c460 Mon Sep 17 00:00:00 2001 From: Manuel Traut Date: Sun, 3 Jun 2012 21:25:38 +0200 Subject: try to implement lookup_digital () - manager crashes at the moment .. Signed-off-by: Manuel Traut --- common/distrio_helper.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'common/distrio_helper.cpp') diff --git a/common/distrio_helper.cpp b/common/distrio_helper.cpp index aaf43c1..076719c 100644 --- a/common/distrio_helper.cpp +++ b/common/distrio_helper.cpp @@ -96,6 +96,41 @@ int register_digital (std::string _name, Distrio_Digital_i *digital) return 0; } +Distrio::Digital_ptr lookup_digital (std::string _name) +{ + CORBA::Object_var obj; + Distrio::Digital_var ret; + Distrio::Digital_list_var dig_list; + Distrio::Error *e; + + if (ref.init != ORB_RUNNING) { + std::cerr << "corba not initialized" << std::endl; + return NULL; + } + + try { + e = ref.manager->digital (dig_list); + free (e); + } catch (CORBA::Exception &_e) { + std::cerr << "CORBA lookup digital io "<< _name <<" failed: " + << _e << std::endl; + return NULL; + } + + for (unsigned int i = 0; i < dig_list->length (); i++) { + ::CORBA::String_var name; + Distrio::Error *e; + e = dig_list[i]->name (name); + free (e); + if (! _name.compare (name)) { + Distrio::Digital_ptr ptr = dig_list[i]; + return ptr; + } + } + + return NULL; +} + int register_device (std::string _name, Distrio_Device_i *dev) { CosNaming::Name name; -- cgit v1.2.3