Wiselib
wiselib.testing/external_interface/shawn/shawn_actuator_tag.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_SHAWN_ACTUATOR_TAG_H
00020 #define CONNECTOR_SHAWN_ACTUATOR_TAG_H
00021 
00022 #include "external_interface/shawn/shawn_types.h"
00023 
00024 
00025 namespace wiselib
00026 {
00027 
00033    template<typename OsModel_P,
00034             typename TagType_P>
00035    class ShawnActuatorTagModel
00036    {
00037    public:
00038       typedef OsModel_P OsModel;
00039       typedef TagType_P TagType;
00040 
00041       typedef ShawnActuatorTagModel<OsModel, TagType> self_type;
00042       typedef self_type* self_pointer_t;
00043 
00044       typedef TagType value_t;
00045       // --------------------------------------------------------------------
00046       enum ErrorCodes
00047       {
00048          SUCCESS = OsModel::SUCCESS,
00049          ERR_UNSPEC = OsModel::ERR_UNSPEC,
00050          ERR_NOTIMPL = OsModel::ERR_NOTIMPL
00051       };
00052       // --------------------------------------------------------------------
00053       enum
00054       {
00055          READY = OsModel::READY,
00056          NO_VALUE = OsModel::NO_VALUE,
00057          INACTIVE = OsModel::INACTIVE
00058       };
00059       // --------------------------------------------------------------------
00060       ShawnActuatorTagModel( ShawnOs& os )
00061          : os_       ( os ),
00062             tagname_ ( "" ),
00063             value_   ( value_t() )
00064       {}
00065       // --------------------------------------------------------------------
00066       int init()
00067       {
00068          return SUCCESS;
00069       }
00070       // --------------------------------------------------------------------
00071       int destruct()
00072       {
00073          return SUCCESS;
00074       }
00075       // --------------------------------------------------------------------
00076       int state()
00077       {
00078          return READY;
00079       }
00080       // --------------------------------------------------------------------
00081       value_t operator()()
00082       {
00083          return value_;
00084       }
00085       // --------------------------------------------------------------------
00086       void set_tagname( std::string tagname )
00087       {
00088          tagname_ = tagname;
00089       }
00090       // --------------------------------------------------------------------
00091       std::string tagname()
00092       {
00093          return tagname_;
00094       }
00095       // --------------------------------------------------------------------
00096       void set_value( value_t value )
00097       {
00098          value_ = value;
00099          os().proc->owner_w().template write_simple_tag<value_t>( tagname(), value );
00100       }
00101 
00102    private:
00103       ShawnOs& os()
00104       { return os_; }
00105       // --------------------------------------------------------------------
00106       ShawnOs& os_;
00107       std::string tagname_;
00108       value_t value_;
00109    };
00110 
00111 }
00112 
00113 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines