Skip to content

Commit 429b22c

Browse files
committed
add println_ub and println_ib, Serial now reports its initialization state
1 parent 409ba76 commit 429b22c

5 files changed

Lines changed: 34 additions & 2 deletions

File tree

sduino/hardware/sduino/stm8/cores/sduino/Arduino.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ void alternateFunction(uint8_t val);
263263

264264
//FIXME#include "WCharacter.h"
265265
//FIXME#include "WString.h"
266-
//FIXME#include "HardwareSerial.h"
266+
#include "HardwareSerial.h"
267267

268268
//uint16_t makeWord(uint16_t w);
269269
//uint16_t makeWord(byte h, byte l);

sduino/hardware/sduino/stm8/cores/sduino/HardwareSerial.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ static ring_buffer rx_buffer;// = { { 0 }, 0, 0};
4343
static ring_buffer tx_buffer;// = { { 0 }, 0, 0};
4444

4545
static volatile char transmitting;//=0;
46+
static unsigned char initialized;//=0 internal status. Returned on HardwareSerial()
4647

4748
// device dependent definitions ////////////////////////////////////////////
4849

@@ -190,6 +191,12 @@ void UARTx_TX_IRQHandler(void) __interrupt(ITC_IRQ_UARTx_TX) /* UART1/2 TX */
190191

191192
// Public Methods //////////////////////////////////////////////////////////////
192193

194+
uint8_t HardwareSerial(void)
195+
{
196+
return initialized;
197+
}
198+
199+
193200
void HardwareSerial_begin(unsigned long baud)
194201
{
195202
#ifdef USE_SPL
@@ -216,6 +223,7 @@ void HardwareSerial_begin(unsigned long baud)
216223
// enable RXNE interrupt, enable transmitter, enable receiver
217224
UARTx->CR2 = UARTx_CR2_RIEN | UARTx_CR2_TEN | UARTx_CR2_REN;
218225
#endif
226+
initialized = 1;
219227
}
220228

221229

@@ -255,6 +263,7 @@ void HardwareSerial_begin_config(unsigned long baud, uint8_t config)
255263
// enable RXNE interrupt, enable transmitter, enable receiver
256264
UARTx->CR2 = UARTx_CR2_RIEN | UARTx_CR2_TEN | UARTx_CR2_REN;
257265
#endif
266+
initialized = 1;
258267
}
259268

260269

@@ -268,6 +277,7 @@ void HardwareSerial_end(void)
268277

269278
// clear any received data
270279
rx_buffer.head = rx_buffer.tail;
280+
initialized = 0;
271281
}
272282

273283
int HardwareSerial_available(void)

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
#define _HARDWARE_SERIAL_H_
3030

3131
#include <stdlib.h>
32-
32+
#include <Print.h>
3333

3434
// Define config for Serial.begin(baud, config);
3535
/* coding of the bit field: 00sw .pp.
@@ -59,6 +59,7 @@
5959

6060
// Public Methods //////////////////////////////////////////////////////////////
6161

62+
uint8_t HardwareSerial(void);
6263
void HardwareSerial_begin(unsigned long baud);
6364
void HardwareSerial_begin_config(unsigned long baud, uint8_t config);
6465

@@ -72,6 +73,7 @@ void HardwareSerial_end(void);
7273

7374
// Alias Definitions for a more Arduino-like look ////////////////////////////
7475

76+
#define Serial HardwareSerial()
7577
#define Serial_begin HardwareSerial_begin
7678
#define Serial_begin_config HardwareSerial_begin_config
7779
#define Serial_available HardwareSerial_available
@@ -102,6 +104,8 @@ void HardwareSerial_end(void);
102104
#define Serial_println_s(S) Print_println_s(HardwareSerial_write,S)
103105
#define Serial_println_u(U) Print_println_u(HardwareSerial_write,U)
104106
#define Serial_println_i(I) Print_println_i(HardwareSerial_write,I)
107+
#define Serial_println_ib(I,B) Print_println_ib(HardwareSerial_write,I,B)
108+
#define Serial_println_ub(U,B) Print_println_ub(HardwareSerial_write,U,B)
105109
#define Serial_println_f(F) Print_printlnFloat(HardwareSerial_write,F,2)
106110
#define Serial_printlnFloat(F,D) Print_printlnFloat(HardwareSerial_write,F,D)
107111

sduino/hardware/sduino/stm8/cores/sduino/Print.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,22 @@ size_t Print_println_i(writefunc_p writefunc, long n)
110110
return r + Print_println(writefunc);
111111
}
112112

113+
size_t Print_println_ub(writefunc_p writefunc, unsigned long n, uint8_t base)
114+
{
115+
size_t r;
116+
117+
r = printNumber(writefunc, n,base);
118+
return r + Print_println(writefunc);
119+
}
120+
121+
size_t Print_println_ib(writefunc_p writefunc, long n, uint8_t base)
122+
{
123+
size_t r;
124+
125+
r = printInt(writefunc, n,base);
126+
return r + Print_println(writefunc);
127+
}
128+
113129

114130
// (not so) Private Methods /////////////////////////////////////////////////////////////
115131

sduino/hardware/sduino/stm8/cores/sduino/Print.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ size_t Print_println(writefunc_p writefunc);
6969
size_t Print_println_s(writefunc_p writefunc, const char *str);
7070
size_t Print_println_u(writefunc_p writefunc, unsigned long n);
7171
size_t Print_println_i(writefunc_p writefunc, long n);
72+
size_t Print_println_ub(writefunc_p writefunc, unsigned long n, uint8_t base);
73+
size_t Print_println_ib(writefunc_p writefunc, long n, uint8_t base);
7274
size_t Print_printlnFloat(writefunc_p writefunc, double number, uint8_t digits);
7375

7476

0 commit comments

Comments
 (0)