arduino / ArduinoCore-avr

The Official Arduino AVR core
https://www.arduino.cc
1.25k stars 1.06k forks source link

[enhancement] let println() set the endline characters #498

Open atesin opened 2 years ago

atesin commented 2 years ago

hi.... something that set me itchy sometimes is the inability to change the hardcoded \r\n line endings in println()...

additionally with adding an EXTRA BYTE to every println() (maybe not in source code but in printing for sure), there are many consoles and terminal emulators and systems that can perfectly handle just \n (come on... that \r\n thing is from telegraph and teletype writers epoch)....

and would be also easier to code... for example for received strings, a single Stream.readBytesUntil(buffer, '\n') would do the trick, without the need to trim the remaining trailing \r that could complicate things further.... could even add support for other protocols (some uses \r, \0, \xFF ; or other line ending instead of \n)

i know how to do it for myself alone... it would suffice with editing cores/Print.h|cpp and define some macro to println(), that way i could just redefine the macro in my sketch.... but i am really talking about include it in the next release so everyone could enjoy this enhancement natively, not just me

atesin commented 2 years ago

i propose these changes, as you will see they are very easy!...

core/arduino/Print.h: line ~36 (in preproc defines, before Print class definition)

#define PRINTLN_NEWLINE "\r\n"

core/arduino/Print.cpp: lines ~126-129

size_t Print::println(void)
{
  return write(PRINTLN_NEWLINE);
}