From 482557ea01c2a2376360ea7429589dd16b4001f5 Mon Sep 17 00:00:00 2001 From: "David A. Mellis" Date: Tue, 4 Oct 2005 09:03:02 +0000 Subject: [PATCH] Update Mac icon; replaced print() with printInteger(), printByte(), printString(), printHex(), printBinary(), printOctal(), and printIntegerInBase(). --- .../Contents/Resources/arduino.icns | Bin 28984 -> 50568 bytes targets/arduino/wiring.c | 96 +++++++++++------- 2 files changed, 57 insertions(+), 39 deletions(-) diff --git a/build/macosx/dist/Arduino.app/Contents/Resources/arduino.icns b/build/macosx/dist/Arduino.app/Contents/Resources/arduino.icns index 331e2f675f214ad13717d49c628944acfe2736c0..177675d2269dbf12f1538e224e77da4b222cb139 100644 GIT binary patch literal 50568 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 + return uartGetRxBuffer()->datalength; } int serialRead() { - return uartGetByte(); + return uartGetByte(); } void printMode(int mode) @@ -235,12 +202,62 @@ void printMode(int mode) // do nothing, we only support serial printing, not lcd. } -void uartSendString(unsigned char *str) +void printByte(unsigned char c) { - while (*str) - uartSendByte(*str++); + serialWrite(c); } +void printString(unsigned char *s) +{ + while (*s) + printByte(*s++); +} + +void printIntegerInBase(unsigned int n, int base) +{ + unsigned char buf[8 * sizeof(int)]; // Assumes 8-bit chars. + int i = 0; + + if (n == 0) { + printByte('0'); + return; + } + + while (n > 0) { + buf[i++] = n % base; + n /= base; + } + + for (i--; i >= 0; i--) + printByte(buf[i] < 10 ? '0' + buf[i] : 'A' + buf[i] - 10); +} + +void printInteger(int n) +{ + if (n < 0) { + printByte('-'); + n = -n; + } + + printIntegerInBase(n, 10); +} + +void printHex(unsigned int n) +{ + printIntegerInBase(n, 16); +} + +void printOctal(unsigned int n) +{ + printIntegerInBase(n, 8); +} + +void printBinary(unsigned int n) +{ + printIntegerInBase(n, 2); +} + +/* Including print() adds approximately 1500 bytes to the binary size. void print(const char *format, ...) { char buf[256]; @@ -250,8 +267,9 @@ void print(const char *format, ...) vsnprintf(buf, 256, format, ap); va_end(ap); - uartSendString(buf); + printString(buf); } +*/ unsigned long millis() {