Skip to content

Commit 3bf47f1

Browse files
committed
use xmacro definitions for the Print methods in HardwareSerial
1 parent 4511c15 commit 3bf47f1

1 file changed

Lines changed: 12 additions & 29 deletions

File tree

sduino/hardware/sduino/stm8/cores/sduino/HardwareSerial.h

Lines changed: 12 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,17 @@ void HardwareSerial_flush(void);
7171
void 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

Comments
 (0)