Skip to content

Commit e7d3a2f

Browse files
authored
Merge branch 'master' into release/v2.x
2 parents 93903fc + bef8a75 commit e7d3a2f

File tree

20 files changed

+621
-223
lines changed

20 files changed

+621
-223
lines changed

Diff for: boards.txt

+201
Original file line numberDiff line numberDiff line change
@@ -1012,6 +1012,9 @@ esp32wrover.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
10121012
esp32wrover.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
10131013
esp32wrover.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS)
10141014
esp32wrover.menu.PartitionScheme.fatflash.build.partitions=ffat
1015+
esp32wrover.menu.PartitionScheme.rainmaker=RainMaker
1016+
esp32wrover.menu.PartitionScheme.rainmaker.build.partitions=rainmaker
1017+
esp32wrover.menu.PartitionScheme.rainmaker.upload.maximum_size=3145728
10151018

10161019
esp32wrover.menu.FlashMode.qio=QIO
10171020
esp32wrover.menu.FlashMode.qio.build.flash_mode=dio
@@ -1238,6 +1241,9 @@ esp32s3box.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
12381241
esp32s3box.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS)
12391242
esp32s3box.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
12401243
esp32s3box.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
1244+
esp32s3box.menu.PartitionScheme.rainmaker=RainMaker
1245+
esp32s3box.menu.PartitionScheme.rainmaker.build.partitions=rainmaker
1246+
esp32s3box.menu.PartitionScheme.rainmaker.upload.maximum_size=3145728
12411247

12421248
esp32s3box.menu.DebugLevel.none=None
12431249
esp32s3box.menu.DebugLevel.none.build.code_debug=0
@@ -1686,6 +1692,9 @@ esp32wroverkit.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
16861692
esp32wroverkit.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
16871693
esp32wroverkit.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS)
16881694
esp32wroverkit.menu.PartitionScheme.fatflash.build.partitions=ffat
1695+
esp32wroverkit.menu.PartitionScheme.rainmaker=RainMaker
1696+
esp32wroverkit.menu.PartitionScheme.rainmaker.build.partitions=rainmaker
1697+
esp32wroverkit.menu.PartitionScheme.rainmaker.upload.maximum_size=3145728
16891698
esp32wroverkit.menu.FlashMode.qio=QIO
16901699
esp32wroverkit.menu.FlashMode.qio.build.flash_mode=dio
16911700
esp32wroverkit.menu.FlashMode.qio.build.boot=qio
@@ -12109,6 +12118,198 @@ m5stack-coreink.menu.EraseFlash.all.upload.erase_cmd=-e
1210912118

1211012119
##############################################################
1211112120

12121+
stamp-s3.name=STAMP-S3
12122+
stamp-s3.vid.0=0x303a
12123+
stamp-s3.pid.0=0x1001
12124+
12125+
stamp-s3.bootloader.tool=esptool_py
12126+
stamp-s3.bootloader.tool.default=esptool_py
12127+
12128+
stamp-s3.upload.tool=esptool_py
12129+
stamp-s3.upload.tool.default=esptool_py
12130+
stamp-s3.upload.tool.network=esp_ota
12131+
12132+
stamp-s3.upload.maximum_size=1310720
12133+
stamp-s3.upload.maximum_data_size=327680
12134+
stamp-s3.upload.flags=
12135+
stamp-s3.upload.extra_flags=
12136+
stamp-s3.upload.use_1200bps_touch=false
12137+
stamp-s3.upload.wait_for_upload_port=false
12138+
12139+
stamp-s3.serial.disableDTR=false
12140+
stamp-s3.serial.disableRTS=false
12141+
12142+
stamp-s3.build.tarch=xtensa
12143+
stamp-s3.build.bootloader_addr=0x0
12144+
stamp-s3.build.target=esp32s3
12145+
stamp-s3.build.mcu=esp32s3
12146+
stamp-s3.build.core=esp32
12147+
stamp-s3.build.variant=m5stack_stamp_s3
12148+
stamp-s3.build.board=STAMP_S3
12149+
12150+
stamp-s3.build.usb_mode=1
12151+
stamp-s3.build.cdc_on_boot=0
12152+
stamp-s3.build.msc_on_boot=0
12153+
stamp-s3.build.dfu_on_boot=0
12154+
stamp-s3.build.f_cpu=240000000L
12155+
stamp-s3.build.flash_size=4MB
12156+
stamp-s3.build.flash_freq=80m
12157+
stamp-s3.build.flash_mode=dio
12158+
stamp-s3.build.boot=qio
12159+
stamp-s3.build.boot_freq=80m
12160+
stamp-s3.build.partitions=default
12161+
stamp-s3.build.defines=
12162+
stamp-s3.build.loop_core=
12163+
stamp-s3.build.event_core=
12164+
stamp-s3.build.psram_type=qspi
12165+
stamp-s3.build.memory_type={build.boot}_{build.psram_type}
12166+
12167+
stamp-s3.menu.JTAGAdapter.default=Disabled
12168+
stamp-s3.menu.JTAGAdapter.default.build.copy_jtag_files=0
12169+
stamp-s3.menu.JTAGAdapter.builtin=Integrated USB JTAG
12170+
stamp-s3.menu.JTAGAdapter.builtin.build.openocdscript=esp32s3-builtin.cfg
12171+
stamp-s3.menu.JTAGAdapter.builtin.build.copy_jtag_files=1
12172+
stamp-s3.menu.JTAGAdapter.external=FTDI Adapter
12173+
stamp-s3.menu.JTAGAdapter.external.build.openocdscript=esp32s3-ftdi.cfg
12174+
stamp-s3.menu.JTAGAdapter.external.build.copy_jtag_files=1
12175+
stamp-s3.menu.JTAGAdapter.bridge=ESP USB Bridge
12176+
stamp-s3.menu.JTAGAdapter.bridge.build.openocdscript=esp32s3-bridge.cfg
12177+
stamp-s3.menu.JTAGAdapter.bridge.build.copy_jtag_files=1
12178+
12179+
stamp-s3.menu.PSRAM.disabled=Disabled
12180+
stamp-s3.menu.PSRAM.disabled.build.defines=
12181+
stamp-s3.menu.PSRAM.disabled.build.psram_type=qspi
12182+
stamp-s3.menu.PSRAM.enabled=QSPI PSRAM
12183+
stamp-s3.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
12184+
stamp-s3.menu.PSRAM.enabled.build.psram_type=qspi
12185+
stamp-s3.menu.PSRAM.opi=OPI PSRAM
12186+
stamp-s3.menu.PSRAM.opi.build.defines=-DBOARD_HAS_PSRAM
12187+
stamp-s3.menu.PSRAM.opi.build.psram_type=opi
12188+
12189+
stamp-s3.menu.FlashMode.qio=QIO 80MHz
12190+
stamp-s3.menu.FlashMode.qio.build.flash_mode=dio
12191+
stamp-s3.menu.FlashMode.qio.build.boot=qio
12192+
stamp-s3.menu.FlashMode.qio.build.boot_freq=80m
12193+
stamp-s3.menu.FlashMode.qio.build.flash_freq=80m
12194+
stamp-s3.menu.FlashMode.qio120=QIO 120MHz
12195+
stamp-s3.menu.FlashMode.qio120.build.flash_mode=dio
12196+
stamp-s3.menu.FlashMode.qio120.build.boot=qio
12197+
stamp-s3.menu.FlashMode.qio120.build.boot_freq=120m
12198+
stamp-s3.menu.FlashMode.qio120.build.flash_freq=80m
12199+
stamp-s3.menu.FlashMode.dio=DIO 80MHz
12200+
stamp-s3.menu.FlashMode.dio.build.flash_mode=dio
12201+
stamp-s3.menu.FlashMode.dio.build.boot=dio
12202+
stamp-s3.menu.FlashMode.dio.build.boot_freq=80m
12203+
stamp-s3.menu.FlashMode.dio.build.flash_freq=80m
12204+
stamp-s3.menu.FlashMode.opi=OPI 80MHz
12205+
stamp-s3.menu.FlashMode.opi.build.flash_mode=dout
12206+
stamp-s3.menu.FlashMode.opi.build.boot=opi
12207+
stamp-s3.menu.FlashMode.opi.build.boot_freq=80m
12208+
stamp-s3.menu.FlashMode.opi.build.flash_freq=80m
12209+
12210+
stamp-s3.menu.FlashSize.4M=4MB (32Mb)
12211+
stamp-s3.menu.FlashSize.4M.build.flash_size=4MB
12212+
stamp-s3.menu.FlashSize.8M=8MB (64Mb)
12213+
stamp-s3.menu.FlashSize.8M.build.flash_size=8MB
12214+
stamp-s3.menu.FlashSize.8M.build.partitions=default_8MB
12215+
stamp-s3.menu.FlashSize.16M=16MB (128Mb)
12216+
stamp-s3.menu.FlashSize.16M.build.flash_size=16MB
12217+
#stamp-s3.menu.FlashSize.32M=32MB (256Mb)
12218+
#stamp-s3.menu.FlashSize.32M.build.flash_size=32MB
12219+
12220+
stamp-s3.menu.LoopCore.1=Core 1
12221+
stamp-s3.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1
12222+
stamp-s3.menu.LoopCore.0=Core 0
12223+
stamp-s3.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0
12224+
12225+
stamp-s3.menu.EventsCore.1=Core 1
12226+
stamp-s3.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1
12227+
stamp-s3.menu.EventsCore.0=Core 0
12228+
stamp-s3.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0
12229+
12230+
stamp-s3.menu.USBMode.hwcdc=Hardware CDC and JTAG
12231+
stamp-s3.menu.USBMode.hwcdc.build.usb_mode=1
12232+
stamp-s3.menu.USBMode.default=USB-OTG (TinyUSB)
12233+
stamp-s3.menu.USBMode.default.build.usb_mode=0
12234+
12235+
stamp-s3.menu.CDCOnBoot.default=Disabled
12236+
stamp-s3.menu.CDCOnBoot.default.build.cdc_on_boot=0
12237+
stamp-s3.menu.CDCOnBoot.cdc=Enabled
12238+
stamp-s3.menu.CDCOnBoot.cdc.build.cdc_on_boot=1
12239+
12240+
stamp-s3.menu.MSCOnBoot.default=Disabled
12241+
stamp-s3.menu.MSCOnBoot.default.build.msc_on_boot=0
12242+
stamp-s3.menu.MSCOnBoot.msc=Enabled (Requires USB-OTG Mode)
12243+
stamp-s3.menu.MSCOnBoot.msc.build.msc_on_boot=1
12244+
12245+
stamp-s3.menu.DFUOnBoot.default=Disabled
12246+
stamp-s3.menu.DFUOnBoot.default.build.dfu_on_boot=0
12247+
stamp-s3.menu.DFUOnBoot.dfu=Enabled (Requires USB-OTG Mode)
12248+
stamp-s3.menu.DFUOnBoot.dfu.build.dfu_on_boot=1
12249+
12250+
stamp-s3.menu.UploadMode.default=UART0 / Hardware CDC
12251+
stamp-s3.menu.UploadMode.default.upload.use_1200bps_touch=false
12252+
stamp-s3.menu.UploadMode.default.upload.wait_for_upload_port=false
12253+
stamp-s3.menu.UploadMode.cdc=USB-OTG CDC (TinyUSB)
12254+
stamp-s3.menu.UploadMode.cdc.upload.use_1200bps_touch=true
12255+
stamp-s3.menu.UploadMode.cdc.upload.wait_for_upload_port=true
12256+
12257+
stamp-s3.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
12258+
stamp-s3.menu.PartitionScheme.default.build.partitions=default
12259+
stamp-s3.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
12260+
stamp-s3.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
12261+
stamp-s3.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS)
12262+
stamp-s3.menu.PartitionScheme.default_8MB.build.partitions=default_8MB
12263+
stamp-s3.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336
12264+
12265+
stamp-s3.menu.CPUFreq.240=240MHz (WiFi)
12266+
stamp-s3.menu.CPUFreq.240.build.f_cpu=240000000L
12267+
stamp-s3.menu.CPUFreq.160=160MHz (WiFi)
12268+
stamp-s3.menu.CPUFreq.160.build.f_cpu=160000000L
12269+
stamp-s3.menu.CPUFreq.80=80MHz (WiFi)
12270+
stamp-s3.menu.CPUFreq.80.build.f_cpu=80000000L
12271+
stamp-s3.menu.CPUFreq.40=40MHz
12272+
stamp-s3.menu.CPUFreq.40.build.f_cpu=40000000L
12273+
stamp-s3.menu.CPUFreq.20=20MHz
12274+
stamp-s3.menu.CPUFreq.20.build.f_cpu=20000000L
12275+
stamp-s3.menu.CPUFreq.10=10MHz
12276+
stamp-s3.menu.CPUFreq.10.build.f_cpu=10000000L
12277+
12278+
stamp-s3.menu.UploadSpeed.921600=921600
12279+
stamp-s3.menu.UploadSpeed.921600.upload.speed=921600
12280+
stamp-s3.menu.UploadSpeed.115200=115200
12281+
stamp-s3.menu.UploadSpeed.115200.upload.speed=115200
12282+
stamp-s3.menu.UploadSpeed.256000.windows=256000
12283+
stamp-s3.menu.UploadSpeed.256000.upload.speed=256000
12284+
stamp-s3.menu.UploadSpeed.230400.windows.upload.speed=256000
12285+
stamp-s3.menu.UploadSpeed.230400=230400
12286+
stamp-s3.menu.UploadSpeed.230400.upload.speed=230400
12287+
stamp-s3.menu.UploadSpeed.460800.linux=460800
12288+
stamp-s3.menu.UploadSpeed.460800.macosx=460800
12289+
stamp-s3.menu.UploadSpeed.460800.upload.speed=460800
12290+
stamp-s3.menu.UploadSpeed.512000.windows=512000
12291+
stamp-s3.menu.UploadSpeed.512000.upload.speed=512000
12292+
12293+
stamp-s3.menu.DebugLevel.none=None
12294+
stamp-s3.menu.DebugLevel.none.build.code_debug=0
12295+
stamp-s3.menu.DebugLevel.error=Error
12296+
stamp-s3.menu.DebugLevel.error.build.code_debug=1
12297+
stamp-s3.menu.DebugLevel.warn=Warn
12298+
stamp-s3.menu.DebugLevel.warn.build.code_debug=2
12299+
stamp-s3.menu.DebugLevel.info=Info
12300+
stamp-s3.menu.DebugLevel.info.build.code_debug=3
12301+
stamp-s3.menu.DebugLevel.debug=Debug
12302+
stamp-s3.menu.DebugLevel.debug.build.code_debug=4
12303+
stamp-s3.menu.DebugLevel.verbose=Verbose
12304+
stamp-s3.menu.DebugLevel.verbose.build.code_debug=5
12305+
12306+
stamp-s3.menu.EraseFlash.none=Disabled
12307+
stamp-s3.menu.EraseFlash.none.upload.erase_cmd=
12308+
stamp-s3.menu.EraseFlash.all=Enabled
12309+
stamp-s3.menu.EraseFlash.all.upload.erase_cmd=-e
12310+
12311+
##############################################################
12312+
1211212313
odroid_esp32.name=ODROID ESP32
1211312314

1211412315
odroid_esp32.bootloader.tool=esptool_py

Diff for: cores/esp32/Esp.cpp

+11-3
Original file line numberDiff line numberDiff line change
@@ -269,17 +269,25 @@ const char * EspClass::getChipModel(void)
269269
uint32_t pkg_ver = chip_ver & 0x7;
270270
switch (pkg_ver) {
271271
case EFUSE_RD_CHIP_VER_PKG_ESP32D0WDQ6 :
272-
return "ESP32-D0WDQ6";
272+
if (getChipRevision() == 3)
273+
return "ESP32-D0WDQ6-V3";
274+
else
275+
return "ESP32-D0WDQ6";
273276
case EFUSE_RD_CHIP_VER_PKG_ESP32D0WDQ5 :
274-
return "ESP32-D0WDQ5";
277+
if (getChipRevision() == 3)
278+
return "ESP32-D0WD-V3";
279+
else
280+
return "ESP32-D0WD";
275281
case EFUSE_RD_CHIP_VER_PKG_ESP32D2WDQ5 :
276-
return "ESP32-D2WDQ5";
282+
return "ESP32-D2WD";
277283
case EFUSE_RD_CHIP_VER_PKG_ESP32PICOD2 :
278284
return "ESP32-PICO-D2";
279285
case EFUSE_RD_CHIP_VER_PKG_ESP32PICOD4 :
280286
return "ESP32-PICO-D4";
281287
case EFUSE_RD_CHIP_VER_PKG_ESP32PICOV302 :
282288
return "ESP32-PICO-V3-02";
289+
case EFUSE_RD_CHIP_VER_PKG_ESP32D0WDR2V3 :
290+
return "ESP32-D0WDR2-V3";
283291
default:
284292
return "Unknown";
285293
}

Diff for: cores/esp32/esp32-hal-uart.h

+29
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,34 @@ extern "C" {
2525
#include "freertos/FreeRTOS.h"
2626
#include "freertos/queue.h"
2727

28+
#ifdef __cplusplus
29+
enum SerialConfig {
30+
SERIAL_5N1 = 0x8000010,
31+
SERIAL_6N1 = 0x8000014,
32+
SERIAL_7N1 = 0x8000018,
33+
SERIAL_8N1 = 0x800001c,
34+
SERIAL_5N2 = 0x8000030,
35+
SERIAL_6N2 = 0x8000034,
36+
SERIAL_7N2 = 0x8000038,
37+
SERIAL_8N2 = 0x800003c,
38+
SERIAL_5E1 = 0x8000012,
39+
SERIAL_6E1 = 0x8000016,
40+
SERIAL_7E1 = 0x800001a,
41+
SERIAL_8E1 = 0x800001e,
42+
SERIAL_5E2 = 0x8000032,
43+
SERIAL_6E2 = 0x8000036,
44+
SERIAL_7E2 = 0x800003a,
45+
SERIAL_8E2 = 0x800003e,
46+
SERIAL_5O1 = 0x8000013,
47+
SERIAL_6O1 = 0x8000017,
48+
SERIAL_7O1 = 0x800001b,
49+
SERIAL_8O1 = 0x800001f,
50+
SERIAL_5O2 = 0x8000033,
51+
SERIAL_6O2 = 0x8000037,
52+
SERIAL_7O2 = 0x800003b,
53+
SERIAL_8O2 = 0x800003f
54+
};
55+
#else
2856
#define SERIAL_5N1 0x8000010
2957
#define SERIAL_6N1 0x8000014
3058
#define SERIAL_7N1 0x8000018
@@ -49,6 +77,7 @@ extern "C" {
4977
#define SERIAL_6O2 0x8000037
5078
#define SERIAL_7O2 0x800003b
5179
#define SERIAL_8O2 0x800003f
80+
#endif // __cplusplus
5281

5382
// These are Hardware Flow Contol possible usage
5483
// equivalent to UDF enum uart_hw_flowcontrol_t from

Diff for: docs/source/api/espnow.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ Examples
1313
ESP-NOW Master
1414
**************
1515

16-
.. literalinclude:: ../../../libraries/ESP32/examples/ESPNow/Basic/Master/Master.ino
16+
.. literalinclude:: ../../../libraries/ESP32/examples/ESPNow/ESPNow_Basic_Master/ESPNow_Basic_Master.ino
1717
:language: arduino
1818

1919
ESP-NOW Slave
2020
*************
2121

22-
.. literalinclude:: ../../../libraries/ESP32/examples/ESPNow/Basic/Slave/Slave.ino
22+
.. literalinclude:: ../../../libraries/ESP32/examples/ESPNow/ESPNow_Basic_Slave/ESPNow_Basic_Slave.ino
2323
:language: arduino
2424

2525
Resources

Diff for: docs/source/api/preferences.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -578,7 +578,7 @@ Copy a series of bytes stored against a given key in the currently open namespac
578578
- the number of bytes to be written to the buffer pointed to by ``buf``
579579

580580
**Returns**
581-
* if successful, the number of bytes equal to ``len`` is written to buffer ``buf``, and the method returns ``1``.
581+
* if successful, the number of bytes equal to ``len`` is written to buffer ``buf``, and the method returns ``len``.
582582
* if the method fails, nothing is written to the buffer and the method returns ``0``.
583583

584584
**Notes**
@@ -698,4 +698,4 @@ Get the number of free entries available in the key table of the currently open
698698
* A message providing the reason for a failed call is sent to the arduino-esp32 ``log_e`` facility.
699699

700700

701-
.. --- EOF ----
701+
.. --- EOF ----

Diff for: docs/source/api/rainmaker.rst

+20
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,26 @@ This function will return
139139
1. `ESP_OK` : On success
140140
2. Error in case of failure
141141

142+
RMaker.enableSystemService
143+
**************************
144+
145+
This API enables the System service for the node. It should be called after `RMaker.initNode()` and before `RMaker.start()`.
146+
For more information, check `here <https://rainmaker.espressif.com/docs/sys-service.html>`__.
147+
148+
.. code-block:: arduino
149+
150+
esp_err_t enableSystemService(uint16_t flags, int8_t reboot_seconds, int8_t reset_seconds, int8_t reset_reboot_seconds)
151+
152+
* ``flags`` : Logical OR of system service flags (SYSTEM_SERV_FLAG_REBOOT, SYSTEM_SERV_FLAG_FACTORY_RESET, SYSTEM_SERV_FLAG_WIFI_RESET) as required or SYSTEM_SERV_FLAGS_ALL.
153+
* ``reboot_seconds`` Time in seconds after which the device should reboot. Recommended value: 2
154+
* ``reset_seconds`` Time in seconds after which the device should reset(Wi-Fi or Factory). Recommended value: 2
155+
* ``reset_reboot_seconds`` Time in seconds after which the device should reboot after it has been reset. Zero as a value would mean there won't be any reboot after the reset. Recommended value: 2
156+
157+
This function will return
158+
159+
1. `ESP_OK` : On success
160+
2. Error in case of failure
161+
142162
RMaker.setTimeZone
143163
******************
144164

Diff for: libraries/ESP32/examples/Camera/CameraWebServer/app_httpd.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -562,8 +562,8 @@ static esp_err_t stream_handler(httpd_req_t *req)
562562
httpd_resp_set_hdr(req, "X-Framerate", "60");
563563

564564
#if CONFIG_LED_ILLUMINATOR_ENABLED
565-
enable_led(true);
566565
isStreaming = true;
566+
enable_led(true);
567567
#endif
568568

569569
while (true)

Diff for: libraries/HTTPClient/src/HTTPClient.cpp

+15-1
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,21 @@ int HTTPClient::sendRequest(const char * type, uint8_t * payload, size_t size)
619619

620620
// send Payload if needed
621621
if(payload && size > 0) {
622-
if(_client->write(&payload[0], size) != size) {
622+
size_t sent_bytes = 0;
623+
while(sent_bytes < size){
624+
size_t sent = _client->write(&payload[sent_bytes], size - sent_bytes);
625+
if (sent == 0){
626+
log_w("Failed to send chunk! Lets wait a bit");
627+
delay(100);
628+
sent = _client->write(&payload[sent_bytes], size - sent_bytes);
629+
if (sent == 0){
630+
log_e("Failed to send chunk!");
631+
break;
632+
}
633+
}
634+
sent_bytes += sent;
635+
}
636+
if(sent_bytes != size){
623637
return returnError(HTTPC_ERROR_SEND_PAYLOAD_FAILED);
624638
}
625639
}

0 commit comments

Comments
 (0)