float.cpp
Go to the documentation of this file.
00001 /*
00002  * Copyright 2015 Aldebaran
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *     http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  *
00016 */
00017 
00018 /*
00019 * LOCAL includes
00020 */
00021 #include "float.hpp"
00022 
00023 /*
00024 * BOOST includes
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 } // publisher
00077 } //naoqi


naoqi_driver
Author(s): Karsten Knese
autogenerated on Tue Jul 9 2019 03:21:56