Wiselib
wiselib.testing/external_interface/isense/isense_actuator_tubs_rgb.h
Go to the documentation of this file.
00001 /***************************************************************************
00002  ** This file is part of the generic algorithm library Wiselib.           **
00003  ** Copyright (C) 2008,2009 by the Wisebed (www.wisebed.eu) project.      **
00004  **                                                                       **
00005  ** The Wiselib is free software: you can redistribute it and/or modify   **
00006  ** it under the terms of the GNU Lesser General Public License as        **
00007  ** published by the Free Software Foundation, either version 3 of the    **
00008  ** License, or (at your option) any later version.                       **
00009  **                                                                       **
00010  ** The Wiselib is distributed in the hope that it will be useful,        **
00011  ** but WITHOUT ANY WARRANTY; without even the implied warranty of        **
00012  ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         **
00013  ** GNU Lesser General Public License for more details.                   **
00014  **                                                                       **
00015  ** You should have received a copy of the GNU Lesser General Public      **
00016  ** License along with the Wiselib.                                       **
00017  ** If not, see <http://www.gnu.org/licenses/>.                           **
00018  ***************************************************************************/
00019 #ifndef CONNECTOR_ISENSE_ACTUATOR_TUBS_RGB_H
00020 #define CONNECTOR_ISENSE_ACTUATOR_TUBS_RGB_H
00021 
00022 #include "external_interface/isense/isense_types.h"
00023 #include <isense/os.h>
00024 
00025 
00026 namespace wiselib
00027 {
00028 
00034    template<typename OsModel_P,
00035             typename Uart_P>
00036    class TubsHallwayRgbActuator
00037    {
00038    public:
00039       typedef OsModel_P OsModel;
00040       typedef TagType_P TagType;
00041 
00042       typedef ShawnActuatorTagModel<OsModel, TagType> self_type;
00043       typedef self_type* self_pointer_t;
00044 
00045       typedef TagType value_t;
00046       // --------------------------------------------------------------------
00047       enum ErrorCodes
00048       {
00049          SUCCESS = OsModel::SUCCESS,
00050          ERR_UNSPEC = OsModel::ERR_UNSPEC,
00051          ERR_NOTIMPL = OsModel::ERR_NOTIMPL
00052       };
00053       // --------------------------------------------------------------------
00054       enum
00055       {
00056          READY = OsModel::READY,
00057          NO_VALUE = OsModel::NO_VALUE,
00058          INACTIVE = OsModel::INACTIVE
00059       };
00060       // --------------------------------------------------------------------
00061       ShawnActuatorTagModel( ShawnOs& os )
00062          : os_       ( os ),
00063             tagname_ ( "" ),
00064             value_   ( value_t() )
00065       {}
00066       // --------------------------------------------------------------------
00067       int init()
00068       {
00069          return SUCCESS;
00070       }
00071       // --------------------------------------------------------------------
00072       int destruct()
00073       {
00074          return SUCCESS;
00075       }
00076       // --------------------------------------------------------------------
00077       int state()
00078       {
00079          return READY;
00080       }
00081       // --------------------------------------------------------------------
00082       value_t operator()()
00083       {
00084          return value_;
00085       }
00086       // --------------------------------------------------------------------
00087       void set_tagname( std::string tagname )
00088       {
00089          tagname_ = tagname;
00090       }
00091       // --------------------------------------------------------------------
00092       std::string tagname()
00093       {
00094          return tagname_;
00095       }
00096       // --------------------------------------------------------------------
00097       void set_value( value_t value )
00098       {
00099          value_ = value;
00100          os().proc->owner_w().template write_simple_tag<value_t>( tagname(), value );
00101       }
00102 
00103    private:
00104       ShawnOs& os()
00105       { return os_; }
00106       // --------------------------------------------------------------------
00107       ShawnOs& os_;
00108       std::string tagname_;
00109       value_t value_;
00110    };
00111 
00112 }
00113 
00114 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines