1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-07 16:23:38 +03:00

27 Commits

Author SHA1 Message Date
david gauchard
c720c0d9e8
Stream::send() (#6979) 2021-03-14 17:36:20 -07:00
Dirk O. Kaar
6f57c222c1 Eliminate code duplication by template for printNumber(...)/printFloat(...).
Move template defintion into cpp file - valid for private member function templates.
2020-09-30 20:29:53 +02:00
Dirk O. Kaar
0b502b3f7b Eliminate code duplication by template for println(...). 2020-09-30 20:29:53 +02:00
Dirk O. Kaar
8c725d5736 Fix for 32bit long used in long long printNumber. 2020-09-30 20:29:53 +02:00
Dirk O. Kaar
7e1d891e84 Revert to explicit calculation of modulo, saving 16 bytes in IROM. 2020-09-30 20:29:53 +02:00
Dirk O. Kaar
af53772e7b Extend Print class for 64bit integers. 2020-09-30 20:29:53 +02:00
david gauchard
6925982284 replace new by new (std::nothrow), remove arduino_new 2020-08-17 18:15:45 +02:00
Earle F. Philhower, III
f762721603 Use sprintf to output floats in Print/dtostrf
Fixes #7043

Two slightly different custom routines were implemented by hand in
dtostrf (an AVR-lib non-ISO function) and Print.  This resulted in
inconsistent output of float/double vars when rounding was needed.

Replace them all with a call to sprintf(), removing the duplicated, not
quite correct code.

Print(String(float)) and Print(float) now generate the same output.
2020-02-09 09:11:41 -08:00
Earle F. Philhower, III
759ba27b62 Use 128B chunks instead of 1B writes in Print::print(FlashStringHelper) (#6893)
Fixes #6524

Should help with speed of output when printing large flash strings to
things like a file or a TCP connection.

Use a 128 byte chunk in a temp buffer to send data using write(),
reducing the # of write calls by ~128x.
2019-12-09 23:04:49 -03:00
Earle F. Philhower, III
7436f3802a
Allow Print::println() to work with PROGMEM strings (#6450)
Adjust the ::write implementation in Print and its overridden copy in
UART to allow it to silentely accept PROGMEM strings (since there is no
write_P macro).

Fixes #6383
2019-08-28 07:59:19 -07:00
Allman-astyler
eea9999dc5 Revert "Allman now (#6080)" (#6090)
This reverts commit 98125f88605cd7e46e9be4e1b3ad0600dd5d2b51.
2019-05-14 00:09:54 +02:00
Allman-astyler
98125f8860 Allman now (#6080)
* switch restyle script for CI

* remove confirmation

* restyle with allman
2019-05-13 16:41:34 +02:00
Earle F. Philhower, III
56b98fd4df Move all PROGMEM to their own section (#5048)
According to the GCC man page, __section__ attributes should only be used
for global variables.  However, the PROGMEM and ICACHE_RODATA macros use
this variable decorator even for local variables.  Most of the time it works,
but when a static or inlined function tries to use a PROGMEM/PSTR/etc.
variable the compiler can throw an error like:
  error: XXX causes a section type conflict with YYY

Change the PROGMEM macro to emit a section name that is unique (a combo
of the file, line, and counter variables to ensure uniqueness).  The
standard linker script will place them properly in .IROM without
any changes.

Fixes #5036 and others.
2018-08-15 11:46:13 -03:00
david gauchard
f8f205d54a
Inefficient Print::write(data,len) shows message if used (only in debug mode) (#4537)
* inefficient Print::write(data,len) shows message if used (only in debug mode)
* make HardwareSerial's write(data,len) efficient
* HardwareSerial: remove duplicate tests, move trivial code from .cpp to .h
2018-03-22 01:23:58 +01:00
Earle F. Philhower, III
06352ab0e1 Check Print::write(byte) return and stop on fail (#4527)
The default Print::write(byte, count) method was continuing to send
bytes one-by-one even when a prior write returned 0.  Because the buffer
pointer was incremented no matter success or fail, this leads to data
corruption as you'll not send some bytes in the middle and will then
send extra bytes past the end of the passed in buffer.

Because there's no concept of timeout, just stop on the first time
write(byte) fails and return the total bytes successfully written
and let the user worry about retrying or handling an error.

Found by @d-a-v and discussed on gitter.
2018-03-17 01:38:56 -03:00
Me No Dev
e35ebf137d Add support to Print::printf for printing from flash (#2266)
* Add support to Print::printf for printing from flash
2016-07-15 10:15:44 +03:00
Ivan Grokhotkov
1f32b7f66e Clean up core files
- remove ICACHE_FLASH_ATTR
- remove unneeded SDK includes
- split spiffs_api into .h and .cpp
2016-03-03 02:13:22 +03:00
Ivan Grokhotkov
d891704c1e Reduce stack usage by Print::printf
Print::printf would allocate 1460 bytes on the stack, which in some cases would overflow the stack. Additionally it didn't handle (rare) cases when vsnprintf needed a buffer longer than 1460 bytes. This change makes default stack-allocated buffer 64 bytes long, and checks the result returned by vsnprintf. If a buffer longer than 64 bytes is needed, it is allocated on the heap.
2016-02-26 18:41:27 +03:00
John Doe
4fdba1b635 Add SSDP Library and let Print::printf to handle longer strings 2015-07-07 10:22:43 +03:00
Markus Sattler
af4f2d5e28 sync with arduino avr src 2015-06-19 10:53:35 +02:00
ficeto
62a460f0b8 printf to print instead of write 2015-05-16 20:39:23 +03:00
ficeto
0b168fd1bf add Print::printf 2015-05-16 18:25:22 +03:00
Makuna
81d27b403e PgmSpace working
PSTR() and F() macros correctly place string into flash memory relying
on PROGMEM
PROGMEM uses ICACHE_RODATA_ATTR
Print and String classes fixed up
str* classes fixed up
2015-05-13 11:27:54 -07:00
Markus Sattler
f165a0afcd use Eclipse auto Format to get rip auf the tab, space and code style inconsistency 2015-04-06 19:33:50 +02:00
Ivan Grokhotkov
4cf6737823 More license headers 2014-12-19 01:43:18 +03:00
Ivan Grokhotkov
160f99c31c Move some code to flash and fix prototypes 2014-12-01 00:34:59 +03:00
Ivan Grokhotkov
04fe8e8b58 Basic support for esp8266 platform
This includes empty stubs for most core Arduino functions.
Need to actually implement all those digital reads writes whatever.
Need to prebuild toolchains (xtensa-elf-lx106) for 3 platforms and put them on some download server.
Need to do the same with esptool.
Need to fix 0x40000 binary generation and add correct upload commands.
Maybe even implement uploads over WiFi.
2014-11-15 10:45:08 +03:00