Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "float.hpp"
00022
00023
00024
00025
00026 #include <boost/foreach.hpp>
00027 #define for_each BOOST_FOREACH
00028
00029 namespace naoqi
00030 {
00031 namespace converter
00032 {
00033
00034 MemoryFloatConverter::MemoryFloatConverter( const std::string& name, const float& frequency, const qi::SessionPtr& session, const std::string& memory_key )
00035 : BaseConverter( name, frequency, session ),
00036 memory_key_(memory_key),
00037 p_memory_( session->service("ALMemory") )
00038 {}
00039
00040 void MemoryFloatConverter::registerCallback( message_actions::MessageAction action, Callback_t cb )
00041 {
00042 callbacks_[action] = cb;
00043 }
00044
00045 bool MemoryFloatConverter::convert()
00046 {
00047 bool success = false;
00048 try
00049 {
00050 float value = p_memory_.call<float>("getData", memory_key_);
00051 msg_.header.stamp = ros::Time::now();
00052 msg_.data = value;
00053 success = true;
00054 }
00055 catch( const std::exception& e )
00056 {
00057 std::cerr << "Exception caught in MemoryFloatConverter " << e.what() << std::endl;
00058 success = false;
00059 }
00060 return success;
00061 }
00062
00063 void MemoryFloatConverter::callAll( const std::vector<message_actions::MessageAction>& actions )
00064 {
00065 if (convert()) {
00066 for_each( message_actions::MessageAction action, actions )
00067 {
00068 callbacks_[action]( msg_ );
00069 }
00070 }
00071 }
00072
00073 void MemoryFloatConverter::reset( )
00074 {}
00075
00076 }
00077 }