summaryrefslogtreecommitdiff
path: root/common/distrio_helper.cpp
diff options
context:
space:
mode:
authorManuel Traut <manut@mecka.net>2012-09-23 21:23:08 +0200
committerManuel Traut <manut@mecka.net>2012-09-23 21:23:08 +0200
commit2a81bd3d5cc7f6653adef9f6653ff4a20709b0d7 (patch)
treeb4b11094534907acb27272e4ea3c10cf6b75bda3 /common/distrio_helper.cpp
parentbdf4c406cd80fe0e25df68ef98a8b626093290c4 (diff)
client/test: test client to lookup devices /functions etc
Signed-off-by: Manuel Traut <manut@mecka.net>
Diffstat (limited to 'common/distrio_helper.cpp')
-rw-r--r--common/distrio_helper.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/common/distrio_helper.cpp b/common/distrio_helper.cpp
index 6146265..451af40 100644
--- a/common/distrio_helper.cpp
+++ b/common/distrio_helper.cpp
@@ -220,6 +220,25 @@ int register_device (Distrio_Device_i *dev)
return 0;
}
+void get_device_list (Distrio::Device_list_var *dev_list)
+{
+ CORBA::Object_var obj;
+ Distrio::Error *e;
+
+ if (ref.init != ORB_RUNNING) {
+ std::cerr << "corba not initialized" << std::endl;
+ return;
+ }
+
+ try {
+ e = ref.manager->device (*dev_list);
+ free (e);
+ } catch (CORBA::Exception &_e) {
+ std::cerr << "CORBA get digital list failed: "
+ << _e << std::endl;
+ }
+}
+
void get_analog_list (Distrio::Analog_list_var *ana_list)
{
CORBA::Object_var obj;
@@ -309,3 +328,29 @@ int lookup_digital (std::string _name, Distrio::Digital_list_var dig_list,
}
return -EHOSTDOWN;
}
+
+int lookup_device (std::string _name, Distrio::Device_list_var dev_list,
+ Distrio::Device **ptr)
+{
+ if (ref.init != ORB_RUNNING) {
+ std::cerr << "corba not initialized" << std::endl;
+ return -EINVAL;
+ }
+
+ for (unsigned int i = 0; i < dev_list->length (); i++) {
+ ::CORBA::String_var name;
+ Distrio::Error *e;
+ try {
+ e = dev_list[i]->name (name);
+ if (!::CORBA::is_nil (e))
+ free (e);
+ if (! _name.compare (name.in ())) {
+ *ptr = dev_list[i];
+ return 0;
+ }
+ } catch (::CORBA::Exception &ex) {
+ std::cerr << "get name of device failed\n" << ex << std::cerr;
+ }
+ }
+ return -EHOSTDOWN;
+}