Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added Serial.baudRate() to get current baud rate #2079

Merged
merged 10 commits into from
Jun 15, 2016
7 changes: 7 additions & 0 deletions cores/esp8266/HardwareSerial.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,13 @@ size_t HardwareSerial::write(uint8_t c)
return 1;
}

int HardwareSerial::baudRate(void)
{
// Null pointer on _uart is checked by SDK
return uart_get_baudrate(_uart);
}


HardwareSerial::operator bool() const
{
return _uart != 0;
Expand Down
1 change: 1 addition & 0 deletions cores/esp8266/HardwareSerial.h
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ class HardwareSerial: public Stream
void setDebugOutput(bool);
bool isTxEnabled(void);
bool isRxEnabled(void);
int baudRate(void);

protected:
int _uart_nr;
Expand Down
15 changes: 15 additions & 0 deletions doc/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,21 @@ You also need to use `Serial.setDebugOutput(true)` to enable output from `printf

Both `Serial` and `Serial1` objects support 5, 6, 7, 8 data bits, odd (O), even (E), and no (N) parity, and 1 or 2 stop bits. To set the desired mode, call `Serial.begin(baudrate, SERIAL_8N1)`, `Serial.begin(baudrate, SERIAL_6E2)`, etc.

A new method has been implemented on both `Serial` and `Serial1` to get current baud rate setting. To get the current baud rate, call `Serial.baudRate()`, `Serial1.baudRate()`. Return a `int` of current speed. For example
```cpp
// Set Baud rate to 57600
Serial.begin(57600);

// Get current baud rate
int br = Serial.baudRate();

// Will print "Serial is 57600 bps"
Serial.printf("Serial is %d bps", br);
```

I've done this also for official ESP8266 [Software Serial](https://github.com/esp8266/Arduino/blob/master/doc/libraries.md#softwareserial) library, see this [pull request](https://github.com/plerup/espsoftwareserial/pull/22).
Note that this implementation is **only for ESP8266 based boards**, and will not works with other Arduino boards.

## Progmem

The Program memory features work much the same way as on a regular Arduino; placing read only data and strings in read only memory and freeing heap for your application.
Expand Down