@@ -71,9 +71,17 @@ void HardwareSerial_flush(void);
7171void HardwareSerial_end (void );
7272
7373
74- // Alias Definitions for a more Arduino-like look ////////////////////////////
74+ // Pseudo-OO interface: Plain C disguised as almost-C++, thanks to X-Macros
75+ //
76+ // We want to "inherit" the output functions from Print, so include that
77+ // header file as well before we start calling any macros.
78+
79+ #include <xmacro.h>
80+ #include <Print.h>
81+
82+
83+ // Since this is (so far) a singleton class, simple #define statement will work
7584
76- #define Serial HardwareSerial()
7785#define Serial_begin HardwareSerial_begin
7886#define Serial_begin_config HardwareSerial_begin_config
7987#define Serial_available HardwareSerial_available
@@ -83,33 +91,8 @@ void HardwareSerial_end(void);
8391#define Serial_end HardwareSerial_end
8492
8593
86- // variants of the standard Serial.print() function: Separate implementations
87- // for string, char, unsigned, signed int
88- #define Serial_print_s (S ) Print_print_s(HardwareSerial_write,S)
89- #define Serial_print_sn (S ,N ) Print_print_sn(HardwareSerial_write,S,N)
90- #define Serial_print_c (C ) HardwareSerial_write(C)
91-
92- // print signed/unsigned integer values (char, short, int, long) as decimal values
93- #define Serial_print_i (I ) Print_print_i(HardwareSerial_write,I)
94- #define Serial_print_u (U ) Print_print_u(HardwareSerial_write,U)
95-
96- // print signed/unsigned integer values (char, short, int, long) to base B
97- #define Serial_print_ib (I ,B ) Print_print_ib(HardwareSerial_write,I,B)
98- #define Serial_print_ub (U ,B ) Print_print_ub(HardwareSerial_write,U,B)
99-
100- // print float value
101- #define Serial_print_f (F ) Print_print_fd(HardwareSerial_write,F,2)
102- #define Serial_print_fd (F ,D ) Print_print_fd(HardwareSerial_write,F,D)
103-
104- #define Serial_println () Print_println(HardwareSerial_write)
105- #define Serial_println_s (S ) Print_println_s(HardwareSerial_write,S)
106- #define Serial_println_sn (S ,N ) Print_println_sn(HardwareSerial_write,S,N)
107- #define Serial_println_u (U ) Print_println_u(HardwareSerial_write,U)
108- #define Serial_println_i (I ) Print_println_i(HardwareSerial_write,I)
109- #define Serial_println_ib (I ,B ) Print_println_ib(HardwareSerial_write,I,B)
110- #define Serial_println_ub (U ,B ) Print_println_ub(HardwareSerial_write,U,B)
111- #define Serial_println_f (F ) Print_println_fd(HardwareSerial_write,F,2)
112- #define Serial_println_fd (F ,D ) Print_println_fd(HardwareSerial_write,F,D)
94+ // "inherit" all print methods from the Print "class"
11395
96+ XPrintMethods (HardwareSerial ,Serial )
11497
11598#endif
0 commit comments