@@ -135,6 +135,7 @@ void serialEventRun(void)
135
135
HardwareSerial::HardwareSerial (int uart_nr) :
136
136
_uart_nr(uart_nr),
137
137
_uart(NULL ),
138
+ _baudrate(0 ),
138
139
_rxBufferSize(256 ),
139
140
_txBufferSize(0 ),
140
141
_onReceiveCB(NULL ),
@@ -395,6 +396,8 @@ void HardwareSerial::begin(unsigned long baud, uint32_t config, int8_t rxPin, in
395
396
_uart = NULL ;
396
397
}
397
398
}
399
+ else
400
+ _baudrate = baud;
398
401
// create a task to deal with Serial Events when, for example, calling begin() twice to change the baudrate,
399
402
// or when setting the callback before calling begin()
400
403
if (_uart != NULL && (_onReceiveCB != NULL || _onReceiveErrorCB != NULL ) && _eventTask == NULL ) {
@@ -427,6 +430,7 @@ void HardwareSerial::begin(unsigned long baud, uint32_t config, int8_t rxPin, in
427
430
void HardwareSerial::updateBaudRate (unsigned long baud)
428
431
{
429
432
uartSetBaudRate (_uart, baud);
433
+ _baudrate = baud;
430
434
}
431
435
432
436
void HardwareSerial::end (bool fullyTerminate)
@@ -449,6 +453,7 @@ void HardwareSerial::end(bool fullyTerminate)
449
453
delay (10 );
450
454
uartEnd (_uart);
451
455
_uart = 0 ;
456
+ _baudrate = 0 ;
452
457
_destroyEventTask ();
453
458
}
454
459
@@ -529,10 +534,12 @@ size_t HardwareSerial::write(const uint8_t *buffer, size_t size)
529
534
uartWriteBuf (_uart, buffer, size);
530
535
return size;
531
536
}
532
- uint32_t HardwareSerial::baudRate ()
533
537
538
+ uint32_t HardwareSerial::baudRate (bool nominal)
534
539
{
535
- return uartGetBaudRate (_uart);
540
+ if (nominal)
541
+ return _baudrate;
542
+ return uartGetBaudRate (_uart);
536
543
}
537
544
HardwareSerial::operator bool () const
538
545
{
0 commit comments