hif.h

Go to the documentation of this file.
00001 /* Copyright (c) 2007 Axel Wachtler
00002    All rights reserved.
00003 
00004    Redistribution and use in source and binary forms, with or without
00005    modification, are permitted provided that the following conditions
00006    are met:
00007 
00008    * Redistributions of source code must retain the above copyright
00009      notice, this list of conditions and the following disclaimer.
00010    * Redistributions in binary form must reproduce the above copyright
00011      notice, this list of conditions and the following disclaimer in the
00012      documentation and/or other materials provided with the distribution.
00013    * Neither the name of the authors nor the names of its contributors
00014      may be used to endorse or promote products derived from this software
00015      without specific prior written permission.
00016 
00017    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00018    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00019    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00020    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
00021    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00022    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00023    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00024    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00025    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00026    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00027    POSSIBILITY OF SUCH DAMAGE. */
00028 
00029 /* $Id: hif_8h_source.html,v 1.1.1.4 2013/04/09 21:11:54 awachtler Exp $ */
00036 #ifndef HIF_H
00037 #define HIF_H
00038 
00039 
00040 /* === types =========================================== */
00041 #include <stdarg.h>
00042 #include <avr/pgmspace.h>
00047 #define FLASH_STRING_T  PGM_P
00048 #define FLASH_STRING(x) PSTR(x)
00049 
00050 #if HIF_TYPE != HIF_NONE || defined DOXYGEN
00051 
00052 # define PRINTF(fmt, ...) hif_printf(FLASH_STRING(fmt), __VA_ARGS__)
00053 
00054 # define PRINT(fmt) hif_echo(FLASH_STRING(fmt))
00055 
00056 # define DUMP(sz,ptr) hif_dump(sz,ptr)
00057 # define HIF_PUTS_NEWLINE() hif_puts_p(FLASH_STRING("\n\r"))
00058 #else
00059 # define hif_init(br)
00060 # define PRINTF(fmt, ...)
00061 # define PRINT(fmt)
00062 # define DUMP(sz,ptr)
00063 # define HIF_PUTS_NEWLINE()
00064 #endif
00065 
00066 
00067 /* === Prototypes ====================================== */
00068 
00069 #if HIF_TYPE != HIF_NONE || defined DOXYGEN
00070 
00075 void hif_init(const uint32_t baudrate);
00076 #endif
00077 
00084 void hif_puts_p(const char *progmem_s);
00085 
00092 void hif_puts(const char *s );
00093 
00101 uint8_t hif_put_blk(unsigned char *data, uint8_t size);
00102 
00109 int hif_putc(int c);
00110 
00116 void hif_echo(FLASH_STRING_T str);
00117 
00124 void hif_printf(FLASH_STRING_T fmt, ...);
00125 
00132 void hif_dump(uint16_t sz, uint8_t *d);
00133 
00139 int hif_getc(void);
00140 
00148 uint8_t hif_get_blk(unsigned char *data, uint8_t max_size);
00149 
00150 
00163 static inline int hif_split_args(char *txtline, int maxargs, char **argv)
00164 {
00165 uint8_t argc = 0, nextarg = 1;
00166 
00167     while((*txtline !=0) && (argc < maxargs))
00168     {
00169         if (*txtline == ' ')
00170         {
00171             *txtline = 0;
00172             nextarg = 1;
00173         }
00174         else
00175         {
00176             if(nextarg)
00177             {
00178                 argv[argc] = txtline;
00179                 argc++;
00180                 nextarg = 0;
00181             }
00182         }
00183         txtline++;
00184     }
00185 
00186     return argc;
00187 }
00188 
00190 #endif /* HIF_H */

This documentation for µracoli was generated on Tue Apr 9 2013 by  doxygen 1.7.1