Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00036 #ifndef HIF_H
00037 #define HIF_H
00038
00039
00040
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
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