1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-22 08:22:04 +03:00

Factored out print() and println() from HardwareSerial to a base class for sharing with other things (e.g. LiquidCrystal library), eliminating #include's of avr/signal.h (deprecated). Upping version number and modifying to do list.

This commit is contained in:
David A. Mellis
2008-04-18 18:39:02 +00:00
parent 154809dcee
commit ab644804ac
10 changed files with 80 additions and 293 deletions

View File

@ -26,16 +26,13 @@
#include "HardwareSerial.h"
void HardwareSerialWrite(uint8_t value, void *instance) {
((HardwareSerial *) instance)->write(value);
}
// Constructors ////////////////////////////////////////////////////////////////
HardwareSerial::HardwareSerial(uint8_t uart)
{
//if(uart == 0){
// _uart = 0;
//}else{
// _uart = 1;
//}
}
HardwareSerial::HardwareSerial() : Print(HardwareSerialWrite) {}
// Public Methods //////////////////////////////////////////////////////////////
@ -59,118 +56,11 @@ void HardwareSerial::flush()
serialFlush();
}
void HardwareSerial::print(char c)
{
printByte(c);
}
void HardwareSerial::print(const char c[])
{
printString(c);
}
void HardwareSerial::print(uint8_t b)
{
printByte(b);
}
void HardwareSerial::print(int n)
{
print((long) n);
}
void HardwareSerial::print(unsigned int n)
{
print((unsigned long) n);
}
void HardwareSerial::print(long n)
{
if (n < 0) {
print('-');
n = -n;
}
printNumber(n, 10);
}
void HardwareSerial::print(unsigned long n)
{
printNumber(n, 10);
}
void HardwareSerial::print(long n, int base)
{
if (base == 0)
print((char) n);
else if (base == 10)
print(n);
else
printNumber(n, base);
}
void HardwareSerial::println(void)
{
print('\r');
print('\n');
}
void HardwareSerial::println(char c)
{
print(c);
println();
}
void HardwareSerial::println(const char c[])
{
print(c);
println();
}
void HardwareSerial::println(uint8_t b)
{
print(b);
println();
}
void HardwareSerial::println(int n)
{
print(n);
println();
}
void HardwareSerial::println(unsigned int n)
{
print(n);
println();
}
void HardwareSerial::println(long n)
{
print(n);
println();
}
void HardwareSerial::println(unsigned long n)
{
print(n);
println();
}
void HardwareSerial::println(long n, int base)
{
print(n, base);
println();
}
// Private Methods /////////////////////////////////////////////////////////////
void HardwareSerial::printNumber(unsigned long n, uint8_t base)
{
printIntegerInBase(n, base);
void HardwareSerial::write(uint8_t b) {
serialWrite(b);
}
// Preinstantiate Objects //////////////////////////////////////////////////////
HardwareSerial Serial = HardwareSerial(0);
//HardwareSerial Serial1 = HardwareSerial(1);
HardwareSerial Serial = HardwareSerial();

View File

@ -22,44 +22,20 @@
#include <inttypes.h>
#define DEC 10
#define HEX 16
#define OCT 8
#define BIN 2
#define BYTE 0
#include "Print.h"
class HardwareSerial
class HardwareSerial : public Print
{
private:
//uint8_t _uart;
void printNumber(unsigned long, uint8_t);
public:
HardwareSerial(uint8_t);
HardwareSerial();
void begin(long);
uint8_t available(void);
int read(void);
void flush(void);
void print(char);
void print(const char[]);
void print(uint8_t);
void print(int);
void print(unsigned int);
void print(long);
void print(unsigned long);
void print(long, int);
void println(void);
void println(char);
void println(const char[]);
void println(uint8_t);
void println(int);
void println(unsigned int);
void println(long);
void println(unsigned long);
void println(long, int);
void write(uint8_t);
};
extern HardwareSerial Serial;
//extern HardwareSerial Serial1;
#endif

View File

@ -26,7 +26,6 @@
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/pgmspace.h>
#include <stdio.h>

View File

@ -3,7 +3,6 @@
#include <math.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include "wiring.h"

View File

@ -27,7 +27,6 @@
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/delay.h>
#include <stdio.h>
#include <stdarg.h>

View File

@ -126,87 +126,4 @@ SIGNAL(SIG_UART_RECV)
rx_buffer[rx_buffer_head] = c;
rx_buffer_head = i;
}
}
void printMode(int mode)
{
// do nothing, we only support serial printing, not lcd.
}
void printByte(unsigned char c)
{
serialWrite(c);
}
void printNewline()
{
printByte('\n');
}
void printString(const char *s)
{
while (*s)
printByte(*s++);
}
void printIntegerInBase(unsigned long n, unsigned long base)
{
unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars.
unsigned long i = 0;
if (n == 0) {
printByte('0');
return;
}
while (n > 0) {
buf[i++] = n % base;
n /= base;
}
for (; i > 0; i--)
printByte(buf[i - 1] < 10 ?
'0' + buf[i - 1] :
'A' + buf[i - 1] - 10);
}
void printInteger(long n)
{
if (n < 0) {
printByte('-');
n = -n;
}
printIntegerInBase(n, 10);
}
void printHex(unsigned long n)
{
printIntegerInBase(n, 16);
}
void printOctal(unsigned long n)
{
printIntegerInBase(n, 8);
}
void printBinary(unsigned long n)
{
printIntegerInBase(n, 2);
}
/* Including print() adds approximately 1500 bytes to the binary size,
* so we replace it with the smaller and less-confusing printString(),
* printInteger(), etc.
void print(const char *format, ...)
{
char buf[256];
va_list ap;
va_start(ap, format);
vsnprintf(buf, 256, format, ap);
va_end(ap);
printString(buf);
}
*/
}