From 64380d09c9c7c65ac981f259ee0880941d33cea5 Mon Sep 17 00:00:00 2001 From: mlalondesvn Date: Thu, 29 Jan 2009 17:13:32 +0000 Subject: [PATCH] MODIF - Changed all functions to inline. REMOVE - Hex utility functions git-svn-id: svn+ssh://oldsvn/home/mlalondesvn/svn/cral@141 3ee9b42a-b53c-0410-a25e-f0b6218d5d5b --- SPrint/staticPrint.cpp | 37 ------------------------------------- SPrint/staticPrint.h | 41 ++++++++++++++++++++++++++++++++--------- 2 files changed, 32 insertions(+), 46 deletions(-) delete mode 100644 SPrint/staticPrint.cpp diff --git a/SPrint/staticPrint.cpp b/SPrint/staticPrint.cpp deleted file mode 100644 index 076b12c..0000000 --- a/SPrint/staticPrint.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "../global.h" - -// call with printString(PSTR("My string")) -void SPrint_P(const char *data) -{ - char ch; - - for (;;) { - ch = pgm_read_byte( data++ ); - if ( !ch ) return; - Serial.print(ch); - } -} - -void SPrintln_P(const char *data) -{ - SPrint_P(data); - SPrint_P(PSTR("\r\n")); -} - -void SPrintHex_P(const char *data) -{ - char ch; - - for (;;) { - ch = pgm_read_byte( data++ ); - if ( !ch ) return; - Serial.print(ch, HEX); - } -} - -void SPrintlnHex_P(const char *data) -{ - printString(data); - - Serial.println(); -} diff --git a/SPrint/staticPrint.h b/SPrint/staticPrint.h index a1feb99..ec7fd0a 100644 --- a/SPrint/staticPrint.h +++ b/SPrint/staticPrint.h @@ -1,3 +1,12 @@ +extern "C" { + #include + #include + #include "wiring_private.h" + #include "WConstants.h" + + #include +} + #ifndef staticPrint_H #define staticPrint_H @@ -9,17 +18,31 @@ #define SPrintln(str) SPrintln_P(PSTR(str)) #endif -#ifndef SPrintHex - #define SPrintHex(str) SPrintHex_P(PSTR(str)) -#endif +static inline void SPrint_P(const char *data) +{ + char ch; -#ifndef SPrint - #define SPrintlnHex(str) SPrintlnHex_P(PSTR(str)) + for (;;) { + ch = pgm_read_byte( data++ ); + if ( !ch ) return; +#if defined(__AVR_ATmega8__) + while (!(UCSRA & (1 << UDRE))) + ; + + UDR = c; +#else + while (!(UCSR0A & (1 << UDRE0))) + ; + + UDR0 = c; #endif + } +} -void SPrint_P(const char *data); -void SPrintln_P(const char *data); -void SPrintHex_P(const char *data); -void SPrintlnHex_P(const char *data); +static inline void SPrintln_P(const char *data) +{ + SPrint_P(data); + SPrint_P(PSTR("\r\n")); +} #endif