Wiselib
wiselib.testing/external_interface/shawn/shawn_remote_uart_debug.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_REMOTE_UART_DEBUGOUTPUT_H
00020 #define CONNECTOR_SHAWN_REMOTE_UART_DEBUGOUTPUT_H
00021 
00022 #include <iostream>
00023 #include <cstdarg>
00024 #include <cstdio>
00025 
00026 #include "util/wisebed_node_api/remote_uart_message.h"
00027 namespace wiselib
00028 {
00029    template<typename OsModel_P>
00030    class ShawnRemoteUartDebug
00031    {
00032    public:
00033       typedef OsModel_P OsModel;
00034 
00035       typedef RemoteUartInMessage<OsModel, typename OsModel::Radio> Message;
00036 
00037       typedef ShawnRemoteUartDebug<OsModel> self_type;
00038       typedef self_type* self_pointer_t;
00039       // --------------------------------------------------------------------
00040       ShawnRemoteUartDebug( ShawnOs& os )
00041          : os_(os)
00042       {}
00043       // --------------------------------------------------------------------
00044       void debug( const char *msg, ... )
00045       {
00046          va_list fmtargs;
00047          va_start( fmtargs, msg );
00048          uint8_t* package = va_arg(fmtargs,uint8_t*);
00049          Message *uartMsg = (Message*) package;
00050          printf( msg, (char*)(uartMsg->payload()) );
00051          va_end( fmtargs );
00052       }
00053 
00054    private:
00055       ShawnOs& os()
00056       { return os_; }
00057       // --------------------------------------------------------------------
00058       ShawnOs& os_;
00059    };
00060 }
00061 
00062 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines