colorO.cpp
Go to the documentation of this file.
00001 /****************************************************************
00002  *
00003  * Copyright (c) 2010
00004  *
00005  * Fraunhofer Institute for Manufacturing Engineering   
00006  * and Automation (IPA)
00007  *
00008  * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00009  *
00010  * Project name: care-o-bot
00011  * ROS stack name: cob_driver
00012  * ROS package name: cob_light
00013  * Description: Switch robots led color by sending data to
00014  * the led-µC over serial connection.
00015  *                                                              
00016  * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00017  *                      
00018  * Author: Benjamin Maidel, email:benjamin.maidel@ipa.fraunhofer.de
00019  * Supervised by: Benjamin Maidel, email:benjamin.maidel@ipa.fraunhofer.de
00020  *
00021  * Date of creation: August 2012
00022  * ToDo:
00023  *
00024  * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00025  *
00026  * Redistribution and use in source and binary forms, with or without
00027  * modification, are permitted provided that the following conditions are met:
00028  *
00029  *     * Redistributions of source code must retain the above copyright
00030  *       notice, this list of conditions and the following disclaimer.
00031  *     * Redistributions in binary form must reproduce the above copyright
00032  *       notice, this list of conditions and the following disclaimer in the
00033  *       documentation and/or other materials provided with the distribution.
00034  *     * Neither the name of the Fraunhofer Institute for Manufacturing 
00035  *       Engineering and Automation (IPA) nor the names of its
00036  *       contributors may be used to endorse or promote products derived from
00037  *       this software without specific prior written permission.
00038  *
00039  * This program is free software: you can redistribute it and/or modify
00040  * it under the terms of the GNU Lesser General Public License LGPL as 
00041  * published by the Free Software Foundation, either version 3 of the 
00042  * License, or (at your option) any later version.
00043  * 
00044  * This program is distributed in the hope that it will be useful,
00045  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00046  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00047  * GNU Lesser General Public License LGPL for more details.
00048  * 
00049  * You should have received a copy of the GNU Lesser General Public 
00050  * License LGPL along with this program. 
00051  * If not, see <http://www.gnu.org/licenses/>.
00052  *
00053  ****************************************************************/
00054 
00055 #include <colorO.h>
00056 #include <ros/ros.h>
00057 
00058 ColorO::ColorO(SerialIO* serialIO) 
00059 {
00060         _serialIO = serialIO;
00061 }
00062 
00063 ColorO::~ColorO()
00064 {
00065 }
00066 
00067 void ColorO::setColor(color::rgba color)
00068 {
00069         int bytes_wrote = 0;
00070 
00071         color::rgba color_tmp = color;
00072 
00073         //calculate rgb spektrum for spezific alpha value, because
00074         //led board is not supporting alpha values
00075         color.r *= color.a;
00076         color.g *= color.a;
00077         color.b *= color.a;
00078         //led board value spektrum is from 0 - 999.
00079         //at r@w's led strip, 0 means fully lighted and 999 light off(_invertMask)
00080         color.r = (fabs(_invertMask-color.r) * 999.0);
00081         color.g = (fabs(_invertMask-color.g) * 999.0);
00082         color.b = (fabs(_invertMask-color.b) * 999.0);
00083 
00084         _ssOut.clear();
00085         _ssOut.str("");
00086         _ssOut << (int)color.r << " " << (int)color.g << " " << (int)color.b << "\n\r";
00087 
00088         // send data over serial port
00089         bytes_wrote = _serialIO->sendData(_ssOut.str());
00090         if(bytes_wrote == -1)
00091         {
00092                 ROS_WARN("Can not write to serial port. Port closed!");
00093         }
00094         else
00095         {
00096                 ROS_DEBUG("Wrote [%s] with %i bytes from %i bytes", \
00097                         _ssOut.str().c_str(), bytes_wrote, (int)_ssOut.str().length());
00098                 m_sigColorSet(color_tmp);
00099         }
00100 }


cob_light
Author(s): Benjamin Maidel
autogenerated on Sun Oct 5 2014 23:09:07