diff options
Diffstat (limited to 'dds_io_pub/Writer.cpp')
| -rw-r--r-- | dds_io_pub/Writer.cpp | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/dds_io_pub/Writer.cpp b/dds_io_pub/Writer.cpp index 82d5173..f0b16f0 100644 --- a/dds_io_pub/Writer.cpp +++ b/dds_io_pub/Writer.cpp @@ -76,39 +76,43 @@ Writer::svc () cout<<"Writer thread, DataWriter Cast ok\n"; struct timespec t_sleep; - t_sleep.tv_sec = 1; - t_sleep.tv_nsec = 500000; + t_sleep.tv_sec = 0; + t_sleep.tv_nsec = 10000; IOTest::Port port_obj; ::DDS::InstanceHandle_t handle = port_dw->_cxx_register (port_obj); port_obj.no = 1; - port_obj.value = 0xff; ACE_DEBUG((LM_DEBUG, ACE_TEXT("%T (%P|%t) Writer::svc starting to write.\n"))); + + int actval, lastval = 0; + while(1) { - ::DDS::ReturnCode_t ret = port_dw->write(port_obj, handle); - - if (ret != ::DDS::RETCODE_OK) { - ACE_ERROR ((LM_ERROR, - ACE_TEXT("(%P|%t)ERROR Writer::svc, ") - ACE_TEXT ("write() returned %d.\n"), - ret)); - if (ret == ::DDS::RETCODE_TIMEOUT) { - timeout_writes_ ++; - } - cout<<"?\n"; + + actval = io.get(); + + if ( lastval != actval ){ + + lastval = actval; + port_obj.value = actval; + + ::DDS::ReturnCode_t ret = port_dw->write(port_obj, handle); + + if (ret != ::DDS::RETCODE_OK) + ACE_ERROR ((LM_ERROR, + ACE_TEXT("(%P|%t)ERROR Writer::svc, ") + ACE_TEXT ("write() returned %d.\n"), + ret)); + + if (ret == ::DDS::RETCODE_TIMEOUT) + timeout_writes_ ++; } - if( port_obj.value == 0xff ) - port_obj.value = 0x00; - else - port_obj.value = 0xff; - nanosleep(&t_sleep, NULL); - cout<<".\n"; + //cout<<".\n"; } } catch (CORBA::Exception& e) { |
