From 297e389057b702bbeb99139a8c248cfccfc0724e Mon Sep 17 00:00:00 2001 From: Manuel Traut Date: Thu, 7 Jun 2012 23:56:05 +0200 Subject: digital out can now be controlled by simple_device - extended libdistrio_common to enable easy access Signed-off-by: Manuel Traut --- common/distrio_helper.cpp | 28 +++++++++++++++++----------- common/distrio_helper.h | 4 +++- 2 files changed, 20 insertions(+), 12 deletions(-) (limited to 'common') diff --git a/common/distrio_helper.cpp b/common/distrio_helper.cpp index ad0a5cd..362217d 100644 --- a/common/distrio_helper.cpp +++ b/common/distrio_helper.cpp @@ -97,25 +97,31 @@ int register_digital (Distrio_Digital_i *digital) return 0; } -Distrio::Digital_ptr lookup_digital (std::string _name) +void get_digital_list (Distrio::Digital_list_var *dig_list) { 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; + return; } try { - e = ref.manager->digital (dig_list); + e = ref.manager->digital (*dig_list); free (e); } catch (CORBA::Exception &_e) { - std::cerr << "CORBA lookup digital io "<< _name <<" failed: " + std::cerr << "CORBA get digital list failed: " << _e << std::endl; - return NULL; + } +} + +void lookup_digital (std::string _name, Distrio::Digital_list_var dig_list, + Distrio::Digital **ptr) +{ + if (ref.init != ORB_RUNNING) { + std::cerr << "corba not initialized" << std::endl; + return; } for (unsigned int i = 0; i < dig_list->length (); i++) { @@ -126,12 +132,12 @@ Distrio::Digital_ptr lookup_digital (std::string _name) free (e); if (! _name.compare (name.in ())) { - Distrio::Digital_ptr ptr = dig_list[i]; - return ptr; + *ptr = dig_list[i]; + (*ptr)->reset (); + std::cout << "yeah: " << *ptr << std::endl; + return; } } - - return NULL; } int register_device (std::string _name, Distrio_Device_i *dev) diff --git a/common/distrio_helper.h b/common/distrio_helper.h index 69a6ef0..b4d2d55 100644 --- a/common/distrio_helper.h +++ b/common/distrio_helper.h @@ -44,7 +44,9 @@ int init_corba (int argc, char **argv); /** register a digital io with a common name at the naming service */ int register_digital (Distrio_Digital_i *digital); /** lookup a digital io by a common name at the manager */ -Distrio::Digital_ptr lookup_digital (std::string _name); +void get_digital_list (Distrio::Digital_list_var *dig_list); +void lookup_digital (std::string _name, Distrio::Digital_list_var dig_list, + Distrio::Digital **ptr); /** register a device with a common name at the naming service */ int register_device (std::string _name, Distrio_Device_i *dev); /** run the orb - function blocks until orb shutdown */ -- cgit v1.2.3