Skip to content

Commit bbf86ce

Browse files
authored
Merge pull request #54 from espressif/master
Fixing interrupts in LEDC and other minor fixes
2 parents 8196631 + a593206 commit bbf86ce

File tree

476 files changed

+7287
-5480
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

476 files changed

+7287
-5480
lines changed

.github/scripts/install-arduino-core-esp32.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ if [ ! -d "$ARDUINO_ESP32_PATH" ]; then
1515
pip install requests > /dev/null
1616
fi
1717

18-
if [ "$GITHUB_REPOSITORY" == "espressif/arduino-esp32" ]; then
18+
if [ ! -z "$GITHUB_REPOSITORY" ]; then
1919
echo "Linking Core..."
2020
ln -s $GITHUB_WORKSPACE esp32
2121
else

.github/workflows/push.yml

+19-4
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,42 @@
11
name: ESP32 Arduino CI
22

33
on:
4+
workflow_dispatch:
45
push:
56
branches:
67
- master
78
- release/*
89
pull_request:
910

11+
concurrency:
12+
group: build-${{github.event.pull_request.number || github.ref}}
13+
cancel-in-progress: true
14+
1015
jobs:
11-
16+
1217
# Ubuntu
1318
build-arduino-linux:
1419
name: Arduino ${{ matrix.chunk }} on ubuntu-latest
1520
runs-on: ubuntu-latest
1621
strategy:
1722
matrix:
1823
chunk: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
19-
24+
2025
steps:
2126
- uses: actions/checkout@v2
2227
- uses: actions/setup-python@v2
2328
with:
2429
python-version: '3.x'
30+
- name: Cache tools
31+
id: cache-linux
32+
uses: actions/cache@v2
33+
with:
34+
path: |
35+
./tools/dist
36+
~/arduino_ide
37+
key: ${{ runner.os }}-${{ hashFiles('package/package_esp32_index.template.json',
38+
'tools/get.py',
39+
'.github/scripts/install-arduino-ide.sh') }}
2540
- name: Build Sketches
2641
run: bash ./.github/scripts/on-push.sh ${{ matrix.chunk }} 15
2742

@@ -32,7 +47,7 @@ jobs:
3247
strategy:
3348
matrix:
3449
os: [windows-latest, macOS-latest]
35-
50+
3651
steps:
3752
- uses: actions/checkout@v2
3853
- uses: actions/setup-python@v2
@@ -48,7 +63,7 @@ jobs:
4863
strategy:
4964
matrix:
5065
os: [ubuntu-latest, windows-latest, macOS-latest]
51-
66+
5267
steps:
5368
- uses: actions/checkout@v2
5469
- uses: actions/setup-python@v2

CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ set(LIBRARY_SRCS
110110
libraries/WebServer/src/Parsing.cpp
111111
libraries/WebServer/src/detail/mimetable.cpp
112112
libraries/WiFiClientSecure/src/ssl_client.cpp
113+
libraries/WiFiClientSecure/src/esp_crt_bundle.c
113114
libraries/WiFiClientSecure/src/WiFiClientSecure.cpp
114115
libraries/WiFi/src/WiFiAP.cpp
115116
libraries/WiFi/src/WiFiClient.cpp

boards.txt

+147-2
Original file line numberDiff line numberDiff line change
@@ -7349,7 +7349,7 @@ wt32-eth01.build.bootloader_addr=0x1000
73497349
wt32-eth01.build.target=esp32
73507350
wt32-eth01.build.mcu=esp32
73517351
wt32-eth01.build.core=esp32
7352-
wt32-eth01.build.variant=wt32-eth0
7352+
wt32-eth01.build.variant=wt32-eth01
73537353
wt32-eth01.build.board=WT32_ETH01
73547354

73557355
wt32-eth01.build.f_cpu=240000000L
@@ -10953,4 +10953,149 @@ sonoff_dualr3.menu.DebugLevel.debug.build.code_debug=4
1095310953
sonoff_dualr3.menu.DebugLevel.verbose=Verbose
1095410954
sonoff_dualr3.menu.DebugLevel.verbose.build.code_debug=5
1095510955

10956-
##############################################################
10956+
##############################################################
10957+
lionbit.name=Lion:Bit Dev Board
10958+
10959+
lionbit.upload.tool=esptool_py
10960+
lionbit.upload.maximum_size=1310720
10961+
lionbit.upload.maximum_data_size=327680
10962+
lionbit.upload.flags=
10963+
lionbit.upload.extra_flags=
10964+
10965+
lionbit.serial.disableDTR=true
10966+
lionbit.serial.disableRTS=true
10967+
10968+
lionbit.build.tarch=xtensa
10969+
lionbit.build.bootloader_addr=0x1000
10970+
lionbit.build.target=esp32
10971+
lionbit.build.mcu=esp32
10972+
lionbit.build.core=esp32
10973+
lionbit.build.variant=lionbit
10974+
lionbit.build.board=Lion:Bit_Dev_Board
10975+
10976+
lionbit.build.f_cpu=240000000L
10977+
lionbit.build.flash_size=4MB
10978+
lionbit.build.flash_freq=80m
10979+
lionbit.build.flash_mode=dio
10980+
lionbit.build.boot=dio
10981+
lionbit.build.partitions=default
10982+
lionbit.build.defines=
10983+
lionbit.build.loop_core=
10984+
lionbit.build.event_core=
10985+
10986+
10987+
lionbit.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
10988+
lionbit.menu.PartitionScheme.default.build.partitions=default
10989+
lionbit.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
10990+
lionbit.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
10991+
lionbit.menu.PartitionScheme.default_8MB=8M Flash (3MB APP/1.5MB FAT)
10992+
lionbit.menu.PartitionScheme.default_8MB.build.partitions=default_8MB
10993+
lionbit.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336
10994+
lionbit.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)
10995+
lionbit.menu.PartitionScheme.minimal.build.partitions=minimal
10996+
lionbit.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
10997+
lionbit.menu.PartitionScheme.no_ota.build.partitions=no_ota
10998+
lionbit.menu.PartitionScheme.no_ota.upload.maximum_size=2097152
10999+
lionbit.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS)
11000+
lionbit.menu.PartitionScheme.noota_3g.build.partitions=noota_3g
11001+
lionbit.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576
11002+
lionbit.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS)
11003+
lionbit.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat
11004+
lionbit.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152
11005+
lionbit.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS)
11006+
lionbit.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat
11007+
lionbit.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576
11008+
lionbit.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS)
11009+
lionbit.menu.PartitionScheme.huge_app.build.partitions=huge_app
11010+
lionbit.menu.PartitionScheme.huge_app.upload.maximum_size=3145728
11011+
lionbit.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
11012+
lionbit.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
11013+
lionbit.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
11014+
lionbit.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FAT)
11015+
lionbit.menu.PartitionScheme.fatflash.build.partitions=ffat
11016+
lionbit.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
11017+
lionbit.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9MB FATFS)
11018+
lionbit.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
11019+
lionbit.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
11020+
lionbit.menu.PartitionScheme.rainmaker=RainMaker
11021+
lionbit.menu.PartitionScheme.rainmaker.build.partitions=rainmaker
11022+
lionbit.menu.PartitionScheme.rainmaker.upload.maximum_size=3145728
11023+
11024+
lionbit.menu.CPUFreq.240=240MHz (WiFi/BT)
11025+
lionbit.menu.CPUFreq.240.build.f_cpu=240000000L
11026+
lionbit.menu.CPUFreq.160=160MHz (WiFi/BT)
11027+
lionbit.menu.CPUFreq.160.build.f_cpu=160000000L
11028+
lionbit.menu.CPUFreq.80=80MHz (WiFi/BT)
11029+
lionbit.menu.CPUFreq.80.build.f_cpu=80000000L
11030+
lionbit.menu.CPUFreq.40=40MHz (40MHz XTAL)
11031+
lionbit.menu.CPUFreq.40.build.f_cpu=40000000L
11032+
lionbit.menu.CPUFreq.26=26MHz (26MHz XTAL)
11033+
lionbit.menu.CPUFreq.26.build.f_cpu=26000000L
11034+
lionbit.menu.CPUFreq.20=20MHz (40MHz XTAL)
11035+
lionbit.menu.CPUFreq.20.build.f_cpu=20000000L
11036+
lionbit.menu.CPUFreq.13=13MHz (26MHz XTAL)
11037+
lionbit.menu.CPUFreq.13.build.f_cpu=13000000L
11038+
lionbit.menu.CPUFreq.10=10MHz (40MHz XTAL)
11039+
lionbit.menu.CPUFreq.10.build.f_cpu=10000000L
11040+
11041+
11042+
lionbit.menu.FlashMode.dio=DIO
11043+
lionbit.menu.FlashMode.dio.build.flash_mode=dio
11044+
lionbit.menu.FlashMode.dio.build.boot=dio
11045+
lionbit.menu.FlashMode.qio=QIO
11046+
lionbit.menu.FlashMode.qio.build.flash_mode=dio
11047+
lionbit.menu.FlashMode.qio.build.boot=qio
11048+
lionbit.menu.FlashMode.qout=QOUT
11049+
lionbit.menu.FlashMode.qout.build.flash_mode=dout
11050+
lionbit.menu.FlashMode.qout.build.boot=qout
11051+
lionbit.menu.FlashMode.dout=DOUT
11052+
lionbit.menu.FlashMode.dout.build.flash_mode=dout
11053+
lionbit.menu.FlashMode.dout.build.boot=dout
11054+
11055+
lionbit.menu.FlashFreq.80=80MHz
11056+
lionbit.menu.FlashFreq.80.build.flash_freq=80m
11057+
lionbit.menu.FlashFreq.40=40MHz
11058+
lionbit.menu.FlashFreq.40.build.flash_freq=40m
11059+
11060+
lionbit.menu.FlashSize.4M=4MB (32Mb)
11061+
lionbit.menu.FlashSize.4M.build.flash_size=4MB
11062+
lionbit.menu.FlashSize.4M.build.partitions=default
11063+
11064+
11065+
11066+
lionbit.menu.UploadSpeed.115200=115200
11067+
lionbit.menu.UploadSpeed.115200.upload.speed=115200
11068+
lionbit.menu.UploadSpeed.256000.windows=256000
11069+
lionbit.menu.UploadSpeed.256000.upload.speed=256000
11070+
lionbit.menu.UploadSpeed.230400.windows.upload.speed=256000
11071+
lionbit.menu.UploadSpeed.230400=230400
11072+
lionbit.menu.UploadSpeed.230400.upload.speed=230400
11073+
lionbit.menu.UploadSpeed.460800.linux=460800
11074+
lionbit.menu.UploadSpeed.460800.macosx=460800
11075+
lionbit.menu.UploadSpeed.460800.upload.speed=460800
11076+
11077+
11078+
lionbit.menu.LoopCore.1=Core 1
11079+
lionbit.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1
11080+
lionbit.menu.LoopCore.0=Core 0
11081+
lionbit.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0
11082+
11083+
lionbit.menu.EventsCore.1=Core 1
11084+
lionbit.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1
11085+
lionbit.menu.EventsCore.0=Core 0
11086+
lionbit.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0
11087+
11088+
lionbit.menu.DebugLevel.none=None
11089+
lionbit.menu.DebugLevel.none.build.code_debug=0
11090+
lionbit.menu.DebugLevel.error=Error
11091+
lionbit.menu.DebugLevel.error.build.code_debug=1
11092+
lionbit.menu.DebugLevel.warn=Warn
11093+
lionbit.menu.DebugLevel.warn.build.code_debug=2
11094+
lionbit.menu.DebugLevel.info=Info
11095+
lionbit.menu.DebugLevel.info.build.code_debug=3
11096+
lionbit.menu.DebugLevel.debug=Debug
11097+
lionbit.menu.DebugLevel.debug.build.code_debug=4
11098+
lionbit.menu.DebugLevel.verbose=Verbose
11099+
lionbit.menu.DebugLevel.verbose.build.code_debug=5
11100+
11101+
##############################################################

cores/esp32/esp32-hal-ledc.c

+2
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,8 @@ void ledcAttachPin(uint8_t pin, uint8_t chan)
168168
.hpoint = 0
169169
};
170170
ledc_channel_config(&ledc_channel);
171+
172+
pinMode(pin,OUTPUT);
171173
}
172174

173175
void ledcDetachPin(uint8_t pin)

libraries/Ticker/src/Ticker.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,7 @@ void Ticker::detach() {
5656
_timer = nullptr;
5757
}
5858
}
59+
60+
bool Ticker::active() {
61+
return esp_timer_is_active(_timer);
62+
}

libraries/WiFiClientSecure/README.md

+26
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,32 @@ Then:
2626

2727
Please see the WiFiClientSecure example.
2828

29+
Using a bundle of root certificate authority certificates
30+
---------------------------------------------------------
31+
This method is similar to the single root certificate verfication above, but it uses a standard set of
32+
root certificates from Mozilla to authenticate against, while the previous method only accepts a single
33+
certificate for a given server. This allows the client to connect to all public SSL servers.
34+
35+
To use this feature in PlatformIO:
36+
1. create a certificate bundle as described in the document below, or obtain a pre-built one you trust:
37+
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/protocols/esp_crt_bundle.htm
38+
(gen_crt_bundle.py can be found in the /tools folder)
39+
a. note: the full bundle will take up around 64k of flash space, but has minimal RAM usage, as only
40+
the index of the certificates is kept in RAM
41+
2. Place the bundle under the file name "data/cert/x509_crt_bundle.bin" in your platformio project
42+
3. add "board_build.embed_files = data/cert/x509_crt_bundle.bin" in your platformio.ini
43+
4. add the following global declaration in your project:
44+
extern const uint8_t rootca_crt_bundle_start[] asm("_binary_data_cert_x509_crt_bundle_bin_start");
45+
5. before initiating the first SSL connection, call
46+
my_client.setCACertBundle(rootca_crt_bundle_start);
47+
48+
To use this feature in Android IDE:
49+
If the Arduino IDE added support for embedding files in the meantime, then follow the instructions above.
50+
If not, you have three choices:
51+
1. convert your project to PlatformIO
52+
2. create a makefile where you can add the idf_component_register() declaration to include the certificate bundle
53+
3. Store the bundle as a SPIFFS file, but then you have to load it into RAM in runtime and waste 64k of precious memory
54+
2955
Using a root CA cert and client cert/keys
3056
-----------------------------------------
3157
This method authenticates the server and additionally also authenticates

libraries/WiFiClientSecure/src/WiFiClientSecure.cpp

+16-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
*/
2020

2121
#include "WiFiClientSecure.h"
22+
#include "esp_crt_bundle.h"
2223
#include <lwip/sockets.h>
2324
#include <lwip/netdb.h>
2425
#include <errno.h>
@@ -44,6 +45,7 @@ WiFiClientSecure::WiFiClientSecure()
4445
_psKey = NULL;
4546
next = NULL;
4647
_alpn_protos = NULL;
48+
_use_ca_bundle = false;
4749
}
4850

4951

@@ -129,7 +131,7 @@ int WiFiClientSecure::connect(const char *host, uint16_t port, const char *CA_ce
129131
if(_timeout > 0){
130132
sslclient->handshake_timeout = _timeout;
131133
}
132-
int ret = start_ssl_client(sslclient, host, port, _timeout, CA_cert, cert, private_key, NULL, NULL, _use_insecure, _alpn_protos);
134+
int ret = start_ssl_client(sslclient, host, port, _timeout, CA_cert, _use_ca_bundle, cert, private_key, NULL, NULL, _use_insecure, _alpn_protos);
133135
_lastError = ret;
134136
if (ret < 0) {
135137
log_e("start_ssl_client: %d", ret);
@@ -149,7 +151,7 @@ int WiFiClientSecure::connect(const char *host, uint16_t port, const char *pskId
149151
if(_timeout > 0){
150152
sslclient->handshake_timeout = _timeout;
151153
}
152-
int ret = start_ssl_client(sslclient, host, port, _timeout, NULL, NULL, NULL, pskIdent, psKey, _use_insecure, _alpn_protos);
154+
int ret = start_ssl_client(sslclient, host, port, _timeout, NULL, false, NULL, NULL, pskIdent, psKey, _use_insecure, _alpn_protos);
153155
_lastError = ret;
154156
if (ret < 0) {
155157
log_e("start_ssl_client: %d", ret);
@@ -263,6 +265,18 @@ void WiFiClientSecure::setCACert (const char *rootCA)
263265
_CA_cert = rootCA;
264266
}
265267

268+
void WiFiClientSecure::setCACertBundle(const uint8_t * bundle)
269+
{
270+
if (bundle != NULL)
271+
{
272+
esp_crt_bundle_set(bundle);
273+
_use_ca_bundle = true;
274+
} else {
275+
esp_crt_bundle_detach(NULL);
276+
_use_ca_bundle = false;
277+
}
278+
}
279+
266280
void WiFiClientSecure::setCertificate (const char *client_ca)
267281
{
268282
_cert = client_ca;

libraries/WiFiClientSecure/src/WiFiClientSecure.h

+2
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class WiFiClientSecure : public WiFiClient
4040
const char *_pskIdent; // identity for PSK cipher suites
4141
const char *_psKey; // key in hex for PSK cipher suites
4242
const char **_alpn_protos;
43+
bool _use_ca_bundle;
4344

4445
public:
4546
WiFiClientSecure *next;
@@ -70,6 +71,7 @@ class WiFiClientSecure : public WiFiClient
7071
void setCertificate(const char *client_ca);
7172
void setPrivateKey (const char *private_key);
7273
bool loadCACert(Stream& stream, size_t size);
74+
void setCACertBundle(const uint8_t * bundle);
7375
bool loadCertificate(Stream& stream, size_t size);
7476
bool loadPrivateKey(Stream& stream, size_t size);
7577
bool verify(const char* fingerprint, const char* domain_name);

0 commit comments

Comments
 (0)