diff options
| author | Manuel Traut <manut@mecka.net> | 2012-06-03 21:25:38 +0200 |
|---|---|---|
| committer | Manuel Traut <manut@mecka.net> | 2012-06-03 21:25:38 +0200 |
| commit | e84faa1a220ebdcf79a3d95e539dfc8d86a8c460 (patch) | |
| tree | 6ba70ab3e822df66d11eb9c941cf4c5b682d58d5 /manager/bin | |
| parent | 5c0a813f9b3004eeba0166e02a98f6fe842c9073 (diff) | |
try to implement lookup_digital ()
- manager crashes at the moment ..
Signed-off-by: Manuel Traut <manut@mecka.net>
Diffstat (limited to 'manager/bin')
| -rw-r--r-- | manager/bin/distrio_manager.cpp | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/manager/bin/distrio_manager.cpp b/manager/bin/distrio_manager.cpp index 345eff6..d9f2ea9 100644 --- a/manager/bin/distrio_manager.cpp +++ b/manager/bin/distrio_manager.cpp @@ -29,19 +29,26 @@ Distrio_Manager_i::~Distrio_Manager_i (void) ::Distrio::Error * Distrio_Manager_i::digital ( ::Distrio::Digital_list_out io_list) { - io_list = &digital_list; + io_list->length (digital_list.length ()); + + for (unsigned int i = 0; i < digital_list.length (); i++) + io_list[i] = digital_list[i]; + + return distrio_success (); } ::Distrio::Error * Distrio_Manager_i::analog ( ::Distrio::Analog_list_out io_list) { io_list = &analog_list; + return distrio_success (); } ::Distrio::Error * Distrio_Manager_i::device ( ::Distrio::Device_list_out dev_list) { dev_list = &device_list; + return distrio_success (); } /* TODO: think about locking!!! */ @@ -66,9 +73,18 @@ Distrio_Manager_i::~Distrio_Manager_i (void) ::Distrio::Error * Distrio_Manager_i::register_io_analog ( ::Distrio::Analog_ptr & io_ana) { - io_ana->id (new_id ()); - analog_list.length (digital_list.length () + 1); - analog_list [analog_list.length () - 1] = io_ana; + Distrio::Analog_var analog; + + try { + analog = Distrio::Analog::_narrow (io_ana); + analog->id (new_id ()); + } catch (::CORBA::Exception *exc) { + std::cerr << "register analog io failed" << std::endl; + } + analog_list.length (analog_list.length () + 1); + analog_list [analog_list.length () - 1] = analog; + + return distrio_success (); } ::Distrio::Error * Distrio_Manager_i::register_io_device ( |
