Compare commits

..

1935 Commits

Author SHA1 Message Date
Ivan Grokhotkov
43e439698d versions: Update version to 3.3.6 2022-01-24 22:20:32 +01:00
Michael (XIAO Xufeng)
ab40f7ab0a Merge branch 'bugfix/fix_modbus_rs485_rts_en_fail_v33' into 'release/v3.3'
Bugfix/fix modbus rs485 rts en fail (backport v3.3)

See merge request espressif/esp-idf!14473
2021-12-03 03:29:56 +00:00
Michael (XIAO Xufeng)
1e02903c87 Merge branch 'bugfix/modbus_add_task_affinity_and_callbacks_v33' into 'release/v3.3'
freemodbus: add task affinity and callbacks (backport v3.3)

See merge request espressif/esp-idf!14547
2021-12-03 03:23:05 +00:00
Michael (XIAO Xufeng)
a7fb697083 Merge branch 'bugfix/mcpwm-deadtime-preset-config-backport_v3.3' into 'release/v3.3'
MCPWM/deadtime: fix and sync preset deadtime modes with well-known definition (backport v3.3)

See merge request espressif/esp-idf!14626
2021-12-03 03:17:31 +00:00
Li Hang Fan
19f15190a2 MCPWM/deadtime: fix and sync preset deadtime modes with well-known definition (backport v3.3) 2021-12-03 03:17:30 +00:00
Jiang Jiang Jian
002db67195 Merge branch 'bugfix/fix_some_wifi_bugs_20211202_v3.3' into 'release/v3.3'
esp_wifi: fix some wifi bugs 20211202 (Backport v3.3)

See merge request espressif/esp-idf!16226
2021-12-03 02:44:40 +00:00
Wang Meng Yang
016a08a3bb Merge branch 'bugfix/proper_tx_acl_buf_3.3' into 'release/v3.3'
Fixed TX PDU ACL flush update error (v3.3)

See merge request espressif/esp-idf!16244
2021-12-03 02:28:31 +00:00
zhangyanjiao
cd428d0346 esp_wifi: fix some wifi bugs
1. Fix airkiss and esptouch find channel crash issue
2. Fix softAP crash by adding NULL pointer check for handling public action frame
3. Ignore dirtyBuf check when buffer size is larger than 4092
4. Fix rf signal test without 9M rate issue
5. Fix issue with hidden AP scans after connecting AP
6. Fix the watchdog issue when receiving action frame
7. Clear hotspot bss when auth timeout happens
8. Fix the bug for esptouch find hidden AP fail
9. Fixed issue of reason code change from 15 to 204 when provide wrong password
10. Fix set config return value error
11. Fix ampdu age timer memory leak
12. Fix PMK not saved in NVS for SoftAP for PSK mode
2021-12-02 21:42:14 +08:00
Jiang Jiang Jian
30268103d5 Merge branch 'bugfix/wpa_supplicant_coverity_issue_fixes_v3.3' into 'release/v3.3'
Bugfix/wpa supplicant coverity issue fixes v3.3

See merge request espressif/esp-idf!12852
2021-12-02 12:00:11 +00:00
Yang Zhao
53a0cbd592 Fixed TX PDU ACL flush update error 2021-12-02 19:54:02 +08:00
Jiang Jiang Jian
80d5c63b36 Merge branch 'feature/btdm_add_new_api_get_conn_params_v3.3' into 'release/v3.3'
Component/bt: add new api to get connection parameters(backport release/v3.3)

See merge request espressif/esp-idf!16225
2021-12-02 08:07:51 +00:00
aditi_lonkar
b67821b2a7 wifi_provisioning: Fix some memory leak issues by coverity static analyzer. 2021-12-02 13:07:52 +05:30
aditi_lonkar
88645a97b4 esp_http_client: Fix some memory leak issues by coverity static analyzer. 2021-12-02 13:07:52 +05:30
aditi_lonkar
776d24e83f fatfs: Fix some memory leak issues by coverity static analyzer. 2021-12-02 13:07:52 +05:30
aditi_lonkar
66d7cf8db5 tcp_transport: Fix some memory leak issues by coverity static analyzer. 2021-12-02 13:07:52 +05:30
zhiweijian
3eacc32c8c Component/bt: add new api to get connection parameters 2021-12-02 10:36:12 +08:00
liulinyan
5408374d63 Merge branch 'bugfix/ble_mesh_macro_OR_v3.3' into 'release/v3.3'
ble_mesh: stack: Fix using wrong | for OR between macros (v3.3)

See merge request espressif/esp-idf!16212
2021-12-02 00:27:56 +00:00
Jiang Jiang Jian
10db99e449 Merge branch 'bugfix/fix_modem_sleep_hw_error_mr_3.3' into 'release/v3.3'
Update esp32-bt-lib

See merge request espressif/esp-idf!16203
2021-12-01 15:41:06 +00:00
Jiang Jiang Jian
2c7b20ff13 Merge branch 'bugfix/ble_mesh_proxy_client_net_resend_v3.3' into 'release/v3.3'
ble_mesh: stack: Fix proxy client may fail to resend msg (v3.3)

See merge request espressif/esp-idf!16215
2021-12-01 14:21:25 +00:00
Jiang Jiang Jian
3078e504e3 Merge branch 'bugfix/heartbeat_filter_with_acceptlist_v3.3' into 'release/v3.3'
ble_mesh: stack: Fix heartbeat filter with accept list (v3.3)

See merge request espressif/esp-idf!15687
2021-12-01 14:20:59 +00:00
Jiang Jiang Jian
ab6c21dd1f Merge branch 'bugfix/ble_mesh_node_set_name_status_check_v3.3' into 'release/v3.3'
ble_mesh: stack: Remove node set device name return status check (v3.3)

See merge request espressif/esp-idf!16214
2021-12-01 12:08:33 +00:00
liulinyan
2d572e2c15 Merge branch 'bugfix/ble_mesh_prov_use_diff_rand_v3.3' into 'release/v3.3'
ble_mesh: stack: Use different random for each provisioning (v3.3)

See merge request espressif/esp-idf!16216
2021-12-01 11:55:53 +00:00
liulinyan
94bbb4185c Merge branch 'update/ble_mesh_set_hsl_states_v3.3' into 'release/v3.3'
ble_mesh: stack: Enable updating lighting hsl state (v3.3)

See merge request espressif/esp-idf!16213
2021-12-01 11:50:13 +00:00
Yang Zhao
ccc2ce93d6 Update esp32-bt-lib
It is abnormal when getting the deep sleep state bit. So we need to check
the state again and run the "ble_master_soft_rst()" if needed.
2021-12-01 17:45:18 +08:00
lly
24a79107d7 ble_mesh: stack: Use different random for each provisioning 2021-12-01 16:24:36 +08:00
lly
2840a77b0e ble_mesh: stack: Fix proxy client may fail to resend msg 2021-12-01 16:23:48 +08:00
lly
720be0f23f ble_mesh: stack: Remove node set device name return status check 2021-12-01 16:14:45 +08:00
lly
cdf0e89a09 ble_mesh: stack: Enable updating lighting hsl state 2021-12-01 16:13:39 +08:00
lly
bd5552faec ble_mesh: stack: Fix using wrong | for OR between macros 2021-12-01 16:11:20 +08:00
wangjialiang
e85fc1f9c5 ble_mesh: stack: Fix heartbeat filter with accept list 2021-12-01 15:13:53 +08:00
Jiang Jiang Jian
46c4842c0e Merge branch 'bugfix/enable_gpio_20_v3.3' into 'release/v3.3'
gpio: Enable IO20 on ESP32 (backport v3.3)

See merge request espressif/esp-idf!15029
2021-12-01 05:59:34 +00:00
Jiang Jiang Jian
4baf48074c Merge branch 'feat/ble_mesh_support_ble_scan_v3.3' into 'release/v3.3'
ble_mesh: stack: Add BLE scan callback when mesh is enabled (v3.3)

See merge request espressif/esp-idf!13941
2021-12-01 05:56:29 +00:00
Wang Meng Yang
e774f217b6 Merge branch 'bugfix/fix_static_check_error_mr_3.3' into 'release/v3.3'
Fix the high-impact issues from the code analysis report from customer

See merge request espressif/esp-idf!16155
2021-12-01 03:49:46 +00:00
Wang Meng Yang
0677774a52 Merge branch 'bugfix/leedarson_v3.3' into 'release/v3.3'
component_bt: Fix some code logic errors (v3.3)

See merge request espressif/esp-idf!16041
2021-12-01 03:49:37 +00:00
xiongweichao
e21bfde305 Missing break in switch 2021-11-30 15:53:24 +08:00
xiongweichao
745e7e25c8 already defined in bt_target.h 2021-11-30 15:53:24 +08:00
xiongweichao
b6f9c4b62a Dereference after null check 2021-11-30 15:53:24 +08:00
xiongweichao
d0dd9d446c Dereference before null check 2021-11-30 15:53:24 +08:00
xiongweichao
0755078ee6 Logically dead code 2021-11-30 15:53:24 +08:00
Yang Zhao
63bd02b1d8 Fix the high-impact issues from the code analysis report from customer 2021-11-26 17:44:40 +08:00
Anton Maklakov
42fd5a948a Merge branch 'feature/docker_build_use_git_mirror_v3.3' into 'release/v3.3'
ci: use LOCAL_GIT_MIRROR in docker build job, if set (v3.3)

See merge request espressif/esp-idf!16114
2021-11-25 05:34:02 +00:00
Ivan Grokhotkov
86f31403e5 ci: use LOCAL_GIT_MIRROR in docker build job, if set
When the build runner has a local git mirror configured via
LOCAL_GIT_MIRROR variable, use that mirror when cloning IDF insider
the docker build job. Follows similar logic for
LOCAL_GITLAB_HTTPS_HOST, which is used for geo nodes.
2021-11-24 15:49:34 +01:00
Roland Dobai
a6a39dbb41 Merge branch 'docs/fix_oocd_debug_level_opt_v3.3' into 'release/v3.3'
docs: Fixes OpenOCD debug level option (v3.3)

See merge request espressif/esp-idf!16063
2021-11-24 08:38:33 +00:00
Jiang Jiang Jian
bdcc2cb638 Merge branch 'mesh/esp_mesh_send_block_time_v3.3' into 'release/v3.3'
esp_wifi_mesh: add esp_mesh_send_block_time to set blocking time of esp_mesh_send(backport v3.3)

See merge request espressif/esp-idf!13412
2021-11-24 08:37:20 +00:00
Roland Dobai
84ef653a1e Merge branch 'feature/oocd_ver_upgrade_v3.3' into 'release/v3.3'
tools: Updates OpenOCD version to 'v0.10.0-esp32-20211111' (v3.3)

See merge request espressif/esp-idf!16003
2021-11-24 08:35:46 +00:00
Sudeep Mohanty
6a18dba4cd Merge branch 'bugfix/ringbuf_read_pointer_wrap_v3.3' into 'release/v3.3'
ringbuf: Fix bug where comparision between a signed and unsigned operand resulted in incorrect free size for no-split/allow-split buffers (v3.3)

See merge request espressif/esp-idf!15893
2021-11-24 06:55:52 +00:00
Alexey Gerenkov
a132363390 idf_tools: Adds 'linux-armhf' platform support 2021-11-23 12:04:47 +03:00
Alexey Gerenkov
c985e5567a tools: Updates OpenOCD version to 'v0.10.0-esp32-20211111' 2021-11-23 12:04:47 +03:00
Alexey Gerenkov
c2c33ac9a5 docs: Fixes OpenOCD debug level option 2021-11-23 11:50:54 +03:00
Anton Maklakov
fb3dd453df Merge branch 'feature/ci_runner_failure_retries_v3.3' into 'release/v3.3'
ci: runner system failure retries (v3.3)

See merge request espressif/esp-idf!15729
2021-11-19 08:02:28 +00:00
Sudeep Mohanty
6e0fae9878 ringbuf: Fix bug where comparision between a signed and unsigned operand resulted in incorrect free size for no-split/allow-split buffers
This commit fixes a bug in no-split and allow-split ring buffers free buffer size calculation.
When the free size available in the buffers less than the size of one item header,
the function prvGetCurMaxSizeNoSplit/AllowSplit() incorrectly returned the maxItemSize instead of 0.
This is due to the comparision between a negative and a positive value
where both operands are treated as unsigned during the comparision operation,
thereby treating the negative operand as a large integer.

Also added new unit tests to test buffer-full and almost-full conditions
where this scenario is likely to be hit.

Closes https://github.com/espressif/esp-idf/issues/7344
Closes https://github.com/espressif/esp-idf/pull/7371
2021-11-18 15:31:57 +05:30
Wang Meng Yang
4cc7a85701 Merge branch 'bugfix/remove_assert_when_inq_done_3.3' into 'release/v3.3'
component_bt: fix crash after inquiry has finished (v3.3)

See merge request espressif/esp-idf!15683
2021-11-16 04:55:50 +00:00
Michael (XIAO Xufeng)
7a49a131d3 Merge branch 'feature/support_for_esp32_pico_v3_02_v3.3' into 'release/v3.3'
psram: support for esp32-pico-v3-02 (backport v3.3)

See merge request espressif/esp-idf!14156
2021-11-15 06:14:37 +00:00
xiongweichao
7b5456dd27 1. Fix the scan failed issue.
2. Fix connection failed with LG 5.0 phone
3. Remove assert when inquiry done
2021-11-11 11:54:00 +08:00
Chinmay Chhajed
20aec9c113 Merge branch 'bugfix/ble_conn_latency_max_value_v3.3' into 'release/v3.3'
BLE: Set connection max latency value to 499.

See merge request espressif/esp-idf!15760
2021-11-05 08:06:45 +00:00
Island
77619bafca Merge branch 'bugfix/ble_mesh_host_init_v3.3' into 'release/v3.3'
ble_mesh: nimble: return error if init host twice (v3.3)

See merge request espressif/esp-idf!15791
2021-11-05 03:13:49 +00:00
Island
0e8e3f3d28 Merge branch 'bugfix/sig_ble_mesh_errata_e16350_v3.3' into 'release/v3.3'
ble_mesh: stack: Apply the errata E16350 from Bluetooth SIG (v3.3)

See merge request espressif/esp-idf!15787
2021-11-05 03:10:03 +00:00
lly
db313f2c00 ble_mesh: nimble: return error if init host twice 2021-11-03 19:21:27 +08:00
lly
95e27869f8 ble_mesh: stack: Apply the errata E16350 from Bluetooth SIG 2021-11-03 19:17:09 +08:00
Chinmay Chhajed
ebc93210a1 BLE: Set connection max latency value to 499. 2021-11-01 17:25:40 +05:30
Anton Maklakov
1d5a967c4c ci: Add retries on runner system failures 2021-11-01 14:26:22 +07:00
shenjun
37e2e7599a esp_wifi_mesh: add esp_mesh_send_block_time to set blocking time of esp_mesh_send
1. fix the issue that layer2 node connect to lower-layer node when FIXED-ROOT root disappeared
2. add esp_mesh_send_block_time to set blocking time of esp_mesh_send
2021-11-01 15:20:54 +08:00
Anton Maklakov
cc2e952edb Merge branch 'bugfix/yaml_loader_parameter_3.3' into 'release/v3.3'
ci: fix Loader parameter in yaml.loader() (3.3)

See merge request espressif/esp-idf!15746
2021-11-01 07:12:39 +00:00
Chen Yu Dong
678275045f ci: Fix Loader parameter in yaml.loader() 2021-11-01 11:44:55 +08:00
Anton Maklakov
e0e1fab0ab Merge branch 'bugfix/support_py34-35_cffi_v3.3' into 'release/v3.3'
Tools: Constrain the cffi package for older pythons (v3.3)

See merge request espressif/esp-idf!15633
2021-10-26 09:29:33 +00:00
Sergei Silnov
77799ec529 Tools: Constrain the cffi package for older pythons 2021-10-25 12:39:20 +02:00
Wang Meng Yang
ff8531b08e Merge branch 'bugfix/bt_x_component_key_check_v3.3' into 'release/v3.3'
BT: Check only for same X component of public key in BR/EDR. (3.3)

See merge request espressif/esp-idf!15594
2021-10-25 02:33:39 +00:00
Chinmay Chhajed
6b64edca6d BT: Check only for same X component of public key in BR/EDR. 2021-10-21 13:38:16 +05:30
Anton Maklakov
15c97b5a58 Merge branch 'bugfix/retry_download_submodule_v3.3' into 'release/v3.3'
ci: retry download from Gitlab on error 500 (v3.3)

See merge request espressif/esp-idf!15562
2021-10-20 08:23:49 +00:00
Ivan Grokhotkov
ab4613cadf ci: revert type annotations in gitlab_api.py to python2 compatible 2021-10-19 19:54:42 +07:00
Ivan Grokhotkov
2c011b6256 ci: retry Gitlab operations on error 500 2021-10-19 19:54:36 +07:00
Fu Hanxi
a100174f47 ci: retry download artifacts 2021-10-19 19:53:28 +07:00
Ivan Grokhotkov
f4909b8ac6 ci: fetch submodules from mirror, if enabled 2021-10-19 19:53:28 +07:00
Fu Hanxi
8340d36359 ci: retry download if catched IOError/EOFError 2021-10-19 19:53:28 +07:00
Anton Maklakov
4734765745 Merge branch 'ci/fix_deploy_docs_preview_url_v3.3' into 'release/v3.3'
ci: update docs preview url (v3.3)

See merge request espressif/esp-idf!15513
2021-10-19 11:51:01 +00:00
Marius Vikhammer
e0ef3bb303 ci: update docs preview url 2021-10-14 14:38:18 +08:00
Roland Dobai
38d328b566 Merge branch 'bugfix/constrain_cryptography_v3.3' into 'release/v3.3'
Tools: Constrain the cryptography package version in order to avoid breaking changes (v3.3)

See merge request espressif/esp-idf!15464
2021-10-11 07:21:56 +00:00
Mahavir Jain
8a53a75ac3 Merge branch 'fix/update_https_example_root_certificate_v3.3' into 'release/v3.3'
Updated the root certificate of https examples (v3.3)

See merge request espressif/esp-idf!15441
2021-10-11 04:00:57 +00:00
Roland Dobai
638b7f5ff4 Tools: Constrain the cryptography package for avoiding breaking changes
The cryptography 35 release causes breaking changes. Some of
certificates are rendered invalid and the package cannot be build
without rust. See
https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst#3500---2021-09-29
for more details.
2021-10-10 19:27:22 +02:00
Harshit Malpani
881522c9b8 Update example test for esp_http_client 2021-10-07 17:24:20 +05:30
Harshit Malpani
7b271ac0ce Updated the root certificate of https examples 2021-10-07 17:09:41 +05:30
Mahavir Jain
e72de12566 Merge branch 'feature/upgrade_nghttp2_component_v3.3' into 'release/v3.3'
nghttp2: upgrade to v1.41.0 release (v3.3)

See merge request espressif/esp-idf!15346
2021-10-05 05:40:18 +00:00
Vikram Dattu
03fc607492 Fixed broken http2_request example.
Implementation of `esp_tls_conn_new_sync` now uses timeout_ms value to
give up retries.

Specified this value to be 10 sec. (10 * 1000 ms).

Signed-off-by: Vikram Dattu <vikram.dattu@espressif.com>
2021-09-29 09:48:47 +05:30
Mahavir Jain
c6106b5ac0 nghttp2: upgrade to v1.41.0 release
Detailed changelog:
https://github.com/nghttp2/nghttp2/releases/tag/v1.41.0

Closes: https://github.com/espressif/esp-idf/issues/4883
Closes IDFGH-2821
2021-09-24 17:48:25 +05:30
lly
3924ca8f03 ble_mesh: ci: Add ble & ble mesh coex sdkconfig test files 2021-09-10 11:27:13 +08:00
lly
53d1eda84c ble_mesh: stack: Support reporting normal ble adv packets 2021-09-10 11:27:13 +08:00
lly
e742889689 ble_mesh: stack: Add a btc file for ble coex functions
Previously if starting/stopping BLE advertising when BLE Mesh
is enabled, the corresponding events will be notified through
the callback registered by esp_ble_mesh_register_prov_callback().

With this commit, the func esp_ble_mesh_register_ble_callback()
needs to be invoked for resgitering the callback used for BLE
coexistence related functionalities (i.e. ADV/SCAN).
2021-09-10 11:27:13 +08:00
lly
437b215e62 ble_mesh: stack: Move ble scan funcitons to a single file 2021-09-10 11:27:13 +08:00
lly
033a596810 ble_mesh: stack: Optimize handling received mesh adv packets 2021-09-10 11:27:13 +08:00
Roland Dobai
b95e11939d Merge branch 'feature/oocd_ver_upgrade_v3.3' into 'release/v3.3'
tools: Updates OpenOCD version to 'v0.10.0-esp32-20210902' (v3.3)

See merge request espressif/esp-idf!15136
2021-09-09 10:23:30 +00:00
Alexey Gerenkov
c571273674 tools: Updates OpenOCD version to 'v0.10.0-esp32-20210902' 2021-09-08 21:29:26 +03:00
Wang Meng Yang
b1d235ebb5 Merge branch 'bugfix/controller_hci_uart_sdkconfig_v3.3' into 'release/v3.3'
controller_hci_uart: fixed the sdkconfig.defaults in the example(backport v3.3)

See merge request espressif/esp-idf!14810
2021-09-08 06:06:04 +00:00
Wang Meng Yang
2a4b854a6d Merge branch 'bugfix/hf_disc_acl_no_disc_v3.3' into 'release/v3.3'
bugfix/acl can't disconnect when hfp_client disconnect [release/v3.3]

See merge request espressif/esp-idf!15060
2021-09-07 10:13:22 +00:00
Wang Meng Yang
3b30f7044c Merge branch 'bugfix/bt_spp_timer_collision_v3.3' into 'release/v3.3'
Fix timer collision in role switch(v3.3)

See merge request espressif/esp-idf!14822
2021-09-06 10:06:03 +00:00
Mahavir Jain
c9033019f9 Merge branch 'feature/update_cjson_submodule_v3.3' into 'release/v3.3'
cJSON: Update submodule to v1.7.15 (v3.3)

See merge request espressif/esp-idf!15078
2021-09-06 09:50:53 +00:00
Wang Meng Yang
ca87b35cf1 Merge branch 'bugfix/spp_connect_20_fail_v3.3' into 'release/v3.3'
component_bt: fix spp acceptor deadlock

See merge request espressif/esp-idf!14111
2021-09-06 09:38:44 +00:00
Mahavir Jain
216d0777fd Merge branch 'feature/update_expat_v3.3' into 'release/v3.3'
expat: Update library from 2.2.9 to 2.4.1(backport v3.3)

See merge request espressif/esp-idf!15072
2021-09-06 04:01:12 +00:00
jincheng
98cf27dbf8 fix timer collision in role switch 2021-09-06 10:36:54 +08:00
Shubham Kulkarni
63b2ca84c4 cJSON: Update submodule to latest release.
This update fixes NULL pointer dereference issues in previous release

Closes https://github.com/espressif/esp-idf/issues/7317
2021-09-06 07:45:57 +05:30
yuanjm
6f0848aa3d expat: Update library from 2.2.9 to 2.4.1 2021-09-03 19:28:02 +08:00
jincheng
f4ce4efdb8 fix acl can not disconnect when hf_client disconnect 2021-09-03 11:03:52 +08:00
Alberto García Hierro
aafbb8f5a8 Enable IO20 on ESP32
Some newer ESP32 variants (like ESP32-PICO-V3 and ESP32-PICO-MINI-02)
do implement this pin and it can be used as a normal GPIO.

Fixes #6016
Fixes #6837

Closes https://github.com/espressif/esp-idf/pull/6918

(cherry picked from commit 6deaefde69)
2021-09-01 10:48:59 +08:00
Wang Meng Yang
e173e47322 Merge branch 'bugfix/SCO_connect_fail_after_peer_not_accept_sniff_v3.3' into 'release/v3.3'
bugfix/unable to initiate SCO connection when peer device not accept sniff mode (v3.3)

See merge request espressif/esp-idf!14399
2021-08-23 05:19:36 +00:00
Jiang Jiang Jian
07167c8c7b Merge branch 'bugfix/spp_memory_leak_v3.3' into 'release/v3.3'
Fix spp memory leak(v3.3)

See merge request espressif/esp-idf!14866
2021-08-20 02:51:59 +00:00
xiongweichao
a6c52e1924 components/bt: fix spp memory leak 2021-08-19 14:53:20 +08:00
xiongweichao
873a759f48 fix spp acceptor deadlock 2021-08-19 08:11:44 +08:00
Island
6a2d7ef994 Merge branch 'bugfix/ble_mesh_cve_recommendation_v3.3' into 'release/v3.3'
ble_mesh: Update the SIG recommendations for CVE issues (v3.3)

See merge request espressif/esp-idf!14845
2021-08-18 12:42:36 +00:00
lly
71fc9de66b ble_mesh: Update the SIG recommendations for CVE issues 2021-08-18 11:01:17 +08:00
wangmengyang
c631fdf33c controller_hci_uart: fixed the sdkconfig.defaults in the example 2021-08-16 16:39:43 +08:00
Zim Kalinowski
44e9dd3e29 Merge branch 'feature/skip_known_failure_cases_v3.3' into 'release/v3.3'
CI: Ignore Known Failure Cases Result (v3.3)

See merge request espressif/esp-idf!14652
2021-08-10 02:31:41 +00:00
Fu Hanxi
41a9d01ee5 feat(tiny_test_fw): ignore known failure cases result
py
2021-08-10 10:31:36 +08:00
Roland Dobai
f189ba5883 Merge branch 'feature/oocd_ver_upgrade_v3.3' into 'release/v3.3'
tools: Updates OpenOCD version to 'v0.10.0-esp32-20210721' (v3.3)

See merge request espressif/esp-idf!14697
2021-08-09 15:01:11 +00:00
Alexey Gerenkov
dafc6c27b7 tools: Updates OpenOCD version to 'v0.10.0-esp32-20210721' 2021-08-06 21:42:18 +03:00
Zim Kalinowski
c406655e47 Merge branch 'bugfix/freertos_ut_suspend_v3.3' into 'release/v3.3'
freertos: Increases delta for UT - Test suspend-resume CPU. The number of... (v3.3)

See merge request espressif/esp-idf!14634
2021-08-05 05:12:02 +00:00
KonstantinKondrashov
8c987d0f04 freertos: Increases delta for UT - Test suspend-resume CPU. The number of tick_hook should be the same for both CPUs 2021-08-03 15:35:20 +05:00
Zim Kalinowski
c621ea7c8c Merge branch 'bugfix/uart_sw_sw_flow_error_typo_v3.3' into 'release/v3.3'
uart: fix typo in error message (v3.3)

See merge request espressif/esp-idf!14617
2021-08-03 02:25:25 +00:00
Marius Vikhammer
d5447f197d uart: fix typo in error message
Closes https://github.com/espressif/esp-idf/issues/7360
2021-08-03 09:31:12 +08:00
Krzysztof Budzynski
30d1564b3c Merge branch 'feature/self_hosted_v3.3' into 'release/v3.3'
docs: self host docs (v3.3)

See merge request espressif/esp-idf!12103
2021-07-30 11:13:14 +00:00
Marius Vikhammer
38b0870fab docs: self host docs
Move doc hosting from readthedocs to espressif servers

Update CI, Sphinx configs and add IDF Sphinx theme
2021-07-30 19:13:08 +08:00
Anton Maklakov
09840aeeaa Merge branch 'bugfix/ttfw_fix_flush_index_error_v3.3' into 'release/v3.3'
test: TTFW fix flush index error (v3.3)

See merge request espressif/esp-idf!14266
2021-07-30 06:35:24 +00:00
aleks
e1374b9c7c freemodbus: add affinity option for modbus stack tasks 2021-07-28 10:07:17 +02:00
Mahavir Jain
8f0bcc570a Merge branch 'bugfix/fix_truncated_headers_for_esp_http_client_v3.3' into 'release/v3.3'
esp_http_client: Fix header truncated when responded header length over buffer_size (backport v3.3)

See merge request espressif/esp-idf!14387
2021-07-28 07:10:49 +00:00
yuanjm
c47854f1fc esp_http_client: Optimize code structure 2021-07-27 20:01:05 +08:00
Clickau
4b07e33a12 esp_http_client: fix truncated headers
Signed-off-by: yuanjm <yuanjianmin@espressif.com>

Merges https://github.com/espressif/esp-idf/pull/6370
2021-07-27 20:01:05 +08:00
Mahavir Jain
f69d7cafce Merge branch 'fix/memory_leaks_identified_by_cppcheck_v3.3' into 'release/v3.3'
Fix/memory leaks identified by cppcheck (v3.3)

See merge request espressif/esp-idf!14505
2021-07-26 04:04:06 +00:00
Alex Henrie
5401610a4e Fix memory leak on error path in http_header_set_format 2021-07-25 07:59:27 +05:30
Alex Henrie
f1ba2b3e3a Fix memory leak on error path in md5_printf 2021-07-25 07:59:10 +05:30
Jakob Hasse
b2a9dc283b Merge branch 'bugfix/esp_event_any_id_unregister_3.3' into 'release/v3.3'
ESP Event: fix unregister documentation (backport 3.3)

See merge request espressif/esp-idf!14435
2021-07-23 07:49:09 +00:00
Roland Dobai
30f6bbf218 Merge branch 'ci/rename_test_log_path_v3.3' into 'release/v3.3'
CI: rename log path of IT jobs (v3.3)

See merge request espressif/esp-idf!14456
2021-07-22 13:22:12 +00:00
Zim Kalinowski
c43792e792 Merge branch 'docs/fix_readme_links_v3.3' into 'release/v3.3'
docs: fixed dead readme links (v3.3)

See merge request espressif/esp-idf!14468
2021-07-22 02:43:00 +00:00
aleks
a7ce9603de freemodbus: fix uart_wait_tx_done() reenable tx_done interrupt 2021-07-21 15:31:08 +02:00
Marius Vikhammer
cc40b77c4c docs: fixed dead readme link 2021-07-21 17:45:12 +08:00
Mahavir Jain
b37d504cd0 Merge branch 'feature/upgrade_mbedtls_to_v3.3' into 'release/v3.3'
mbedtls: upgrade to release v2.16.11 (v3.3)

See merge request espressif/esp-idf!14441
2021-07-21 09:44:08 +00:00
He Yin Ling
5f251dfc70 CI: rename log path of IT jobs 2021-07-21 10:37:03 +08:00
Mahavir Jain
08d29e2aaa mbedtls: upgrade to release v2.16.11
For detailed release notes please refer to:
https://github.com/ARMmbed/mbedtls/releases/tag/v2.16.11
2021-07-20 14:43:06 +05:30
Jakob Hasse
352fb9168a [esp_event]: fixed and improved docs
* Description of unregistering was incorrect
* Made clear that event loop arg mustn't be NULL
* Added parameter check in create function

Closes https://github.com/espressif/esp-idf/issues/6761
Closes IDFGH-4969
2021-07-20 16:09:53 +08:00
Jiang Jiang Jian
fb3b6e0094 Merge branch 'bugfix/a2dp_deint_crash_v3.3' into 'release/v3.3'
component_bt: fix a2dp deinit crash(v3.3)

See merge request espressif/esp-idf!14422
2021-07-20 03:20:10 +00:00
xiongweichao
e793571cc4 Not initialized or in the process of de-initialization, calling API will return ERR 2021-07-19 21:53:55 +08:00
xiongweichao
b1985c2392 fix a2dp deinit crash 2021-07-19 21:53:49 +08:00
Mahavir Jain
28669ca32a Merge branch 'bugfix/update_ota_cert_v3.3' into 'release/v3.3'
OTA examples: Update server certificate (v3.3)

See merge request espressif/esp-idf!14358
2021-07-19 07:30:05 +00:00
xiongweichao
cd40b05bd0 Add remove sniff when peer not accepted sniff mode 2021-07-19 10:53:23 +08:00
Chinmay Chhajed
4b81abe053 bt/controller: Fix for BLE ACL tx flush issue during reset. 2021-07-19 10:53:23 +08:00
Yang Zhao
af8e81d18e 1.If the scan window set as 4 slots and the scan interval set as 5 slots,
then the device will crash when starting scanning.This commit is to fix this bug.
2.Remove duplicate events in r_lld_evt_end
2021-07-19 10:53:23 +08:00
Zim Kalinowski
700eee91ca Merge branch 'bugfix/prefetch_invalid_v3.3' into 'release/v3.3'
soc: add dummy bytes to ensure instr prefetch always valid (v3.3)

See merge request espressif/esp-idf!12997
2021-07-19 01:42:17 +00:00
Zim Kalinowski
41676c779c Merge branch 'docs/spi_max_transfer_sz_limit_v3.3' into 'release/v3.3'
spi_docs: Fixed the default value of max_transfer_sz_limit (backport v3.3)

See merge request espressif/esp-idf!14256
2021-07-16 05:57:32 +00:00
Zim Kalinowski
624eaf4d06 Merge branch 'nimble/fix_broadcaster_role_v3.3' into 'release/v3.3'
NimBLE: Fix build error for broadcaster role and bug in peer_dev_record (v3.3)

See merge request espressif/esp-idf!14306
2021-07-16 05:56:28 +00:00
Shubham Kulkarni
fcca83efff OTA examples: Updated server certificate 2021-07-14 12:53:08 +05:30
Roland Dobai
bcf14bca1e Merge branch 'bugfix/eclipse_make_decode_v3.3' into 'release/v3.3'
tools: Fix Eclipse build: “UnicodeDecodeError: 'ascii' codec can't decode byte” (v3.3)

See merge request espressif/esp-idf!12361
2021-07-13 15:34:50 +00:00
Prasad Alatkar
3deffb785f NimBLE: Fix build error for broadcaster role and bug in peer_dev_record (v3.3)
* Fix bug in nvs deletion of `ble_dev_record`.
* Update NimBLE submodule to nimble-1.1.0-idf-v3.3.
2021-07-13 13:55:37 +08:00
Angus Gratton
bfd4f8646e Merge branch 'bugfix/mitigate_test_time_adjustment_happens_linearly_v3.3' into 'release/v3.3'
newlib: Mitigate UT - time adjustment happens linearly

See merge request espressif/esp-idf!14309
2021-07-13 04:31:44 +00:00
Mahavir Jain
e2015eb371 Merge branch 'bugfix/heap_trace_invalid_addr_v3.3' into 'release/v3.3'
heap: fix backtrace termination (v3.3)

See merge request espressif/esp-idf!13899
2021-07-12 12:23:00 +00:00
Zim Kalinowski
d93ad78b46 Merge branch 'feature/regi2c_add_lock_v3.3' into 'release/v3.3'
regi2c: add a spinlock for accessing (reg)I2C devices (backport v3.3)

See merge request espressif/esp-idf!13717
2021-07-09 07:34:18 +00:00
Marius Vikhammer
5b91a8173e soc: add dummy bytes to ensure instr prefetch always valid
The CPU might prefetch instructions, which means it in some cases
will try to fetch instruction located after the last instruction in
flash.text.

Add dummy bytes to ensure fetching these wont result in an error,
 e.g. MMU exceptions
2021-07-09 14:40:24 +08:00
KonstantinKondrashov
04a6aae1d1 newlib: Mitigate UT - time adjustment happens linearly 2021-07-08 19:21:44 +05:00
Jiang Jiang Jian
ee3e817a93 Merge branch 'ajust_espnow_channel_config_range_v3.3' into 'release/v3.3'
ajust espnow channel range

See merge request espressif/esp-idf!13685
2021-07-07 03:25:53 +00:00
He Yin Ling
9d075a728a ttfw: fix incorrect length when flush data cache after expect:
data cache is unicode. while we use bytes in RegEx expect. The index of
matched pattern is calculated with bytes, could be different from
unicode. Now we fix this issue by using unicode in expect.
2021-07-05 20:19:00 +08:00
Michael (XIAO Xufeng)
b59c06c107 spi_docs: Fixed the default value of max_transfer_sz.
(cherry picked from commit e89fabb963)
2021-07-05 14:36:46 +08:00
Ivan Grokhotkov
789914a405 Merge branch 'bugfix/cmake_export_ver_during_reqs_expansion_v3.3' into 'release/v3.3'
cmake: set IDF_VERSION_* variables at requirement expansion stage (v3.3)

See merge request espressif/esp-idf!14047
2021-07-02 12:50:46 +00:00
Krzysztof Budzynski
81befb2330 Merge branch 'docs/windows_installer_2.9_backport_3.3' into 'release/v3.3'
docs: update Windows Tools 2.9 installation - backport 3.3

See merge request espressif/esp-idf!14193
2021-07-02 05:52:22 +00:00
Juraj Michálek
594d681aae docs: update Windows Tools 2.9 installation 2021-06-30 12:51:12 +02:00
He Yin Ling
a6176fa73e Merge branch 'test/merge_ble_mesh_node_and_provioner_in_console_v3.3' into 'release/v3.3'
Test:merge ble mesh node and provioner in console(backport v3.3)

See merge request espressif/esp-idf!9910
2021-06-30 06:14:43 +00:00
Lu Chang Jie
9dd12683e6 test: merge ble mesh node and provioner in console 2021-06-30 14:14:36 +08:00
Michael (XIAO Xufeng)
69af3d2a72 Merge branch 'bugfix/fix_adc-dma_reading_gap_for_esp32_backport_v3.3' into 'release/v3.3'
bugfix(adc): missing ranges of ADC codes in ESP32 (backport v3.3)

See merge request espressif/esp-idf!12876
2021-06-27 13:31:24 +00:00
chenjianqiang
bc60eb65e2 psram: support for esp32-pico-v3-02
1. Support for 16Mbit PSRAM
2. Support for esp32-pico-v3-02
3. Use package identifier to look up SPI flash/PSRAM WP Pin, unless overridden

Closes https://github.com/espressif/esp-idf/issues/7189
2021-06-25 17:54:42 +08:00
Angus Gratton
a130da9e79 Merge branch 'feature/ci_release_zips_v3.3' into 'release/v3.3'
ci: Use GitHub Actions to generate recursive source code zips for releases (v3.3)

See merge request espressif/esp-idf!13203
2021-06-24 23:43:27 +00:00
Jiang Jiang Jian
b403b0dbd5 Merge branch 'bugfix/fix_amsdu_fragment_vulnerability_v3.3' into 'release/v3.3'
esp_wifi: fix amsdu & fragment vulnerabilities(v3.3)

See merge request espressif/esp-idf!14100
2021-06-24 09:50:38 +00:00
Mahavir Jain
557525eeb9 Merge branch 'bugfix/http_client_test_memcorupt_v3.3' into 'release/v3.3'
ci/test: Fix esp_http_client test not to use pointer after free (v3.3)

See merge request espressif/esp-idf!13706
2021-06-23 14:11:50 +00:00
Wang Meng Yang
26d8690525 Merge branch 'bugfix/ble_set_scan_param_error_v3.3' into 'release/v3.3'
Fix the bug when ble setting scan param

See merge request espressif/esp-idf!13980
2021-06-23 09:11:59 +00:00
Ivan Grokhotkov
cba17ebc0a Merge branch 'feature/codeowners_v3.3' into 'release/v3.3'
add simplified CODEOWNERS file for older release branches (v3.3)

See merge request espressif/esp-idf!14094
2021-06-23 08:07:13 +00:00
David Cermak
1de77f5412 ci/test: Fix esp_http_client test not to use pointer after free 2021-06-23 08:39:42 +02:00
ChenJianxing
671ab9223c esp_wifi: fix amsdu & fragment vulnerabilities 2021-06-22 20:48:37 +08:00
Ivan Grokhotkov
ec14f20421 add simplified CODEOWNERS file for older release branches 2021-06-22 09:23:52 +02:00
Angus Gratton
760ea137ee Merge branch 'bugfix/driver_spi_poll_test_stack_v3.3' into 'release/v3.3'
driver test: Increase stack for the "spi poll tasks" test (v3.3)

See merge request espressif/esp-idf!13810
2021-06-22 04:14:08 +00:00
Krzysztof Budzynski
6e136860ae Merge branch 'bugfix/make_docs_ldgen_v3.3' into 'release/v3.3'
docs: remove quotes in ldgen documentation for adding fragment file (v3.3)

See merge request espressif/esp-idf!14004
2021-06-22 03:28:03 +00:00
Anton Maklakov
6731c9daf3 Merge branch 'bugfix/iperf_basic_test_not_running' into 'release/v3.3'
CI: fix iperf basic test not running issue

See merge request espressif/esp-idf!13986
2021-06-22 03:19:42 +00:00
Island
708b72190f Merge branch 'feat/ble_mesh_make_unprov_beacon_interval_configurable_v3.3' into 'release/v3.3'
Feat/ble mesh make unprov beacon interval configurable (v3.3)

See merge request espressif/esp-idf!14067
2021-06-21 11:39:57 +00:00
wangjialiang
411abfd70f ble_mesh: stack: Fix crash for net_key_del when subnet is NULL 2021-06-21 14:57:17 +08:00
wangjialiang
84dd05439d ble_mesh: stack: Make unprovisioned beacon interval configurable.
Closes https://github.com/espressif/esp-idf/issues/6722
2021-06-21 14:55:10 +08:00
Ivan Grokhotkov
b82577168a cmake: set IDF_VERSION_* variables at requirement expansion stage
Currently IDF_VERSION_* variables are not available to the component
CMakeLists.txt files at the requirements expansion stage. This makes
it harder to write component CMakeLists files compatible with
different IDF versions.

Include version.cmake from the requirements expansion script, add a
build system test.
2021-06-18 15:37:34 +02:00
Island
f5fc806588 Merge branch 'bugfix/AuthValue_leak_v3.3' into 'release/v3.3'
ble_mesh: stack: Fix AuthValue Leak and Predictable AuthValue in Bluetooth... (v3.3)

See merge request espressif/esp-idf!14006
2021-06-18 09:02:29 +00:00
wangjialiang
35bbd1ba26 ble_mesh: stack: Fix AuthValue Leak and Predictable AuthValue in Bluetooth Mesh Provisioning Leads to MITM 2021-06-17 17:21:01 +08:00
Krzysztof
9d324fecb7 docs: remove quotes in ldgen documentation for adding fragment file 2021-06-17 10:07:04 +02:00
Island
b3827a4b74 Merge branch 'bugfix/impersonation_attacks_and_AuthValue_disclosure_v3.3' into 'release/v3.3'
ble_mesh: stack: Add check the value of Provisioning Random & Confirmation... (v3.3)

See merge request espressif/esp-idf!13928
2021-06-17 03:39:23 +00:00
wangjialiang
78676e7a02 ble_mesh: stack: Add check the value of Provisioning Random & Confirmation sent and received by provisioner 2021-06-16 21:28:10 +08:00
Chen Yudong
4f0ab9ee73 ci: fix iperf basic test not running issue 2021-06-16 15:49:08 +08:00
Yang Zhao
77c7d3be1c bugfix:Set address resolution enable. If not set enable and the filter
policy is 2 or 3, the controller will reply with invalid param error.
2021-06-15 20:08:04 +08:00
He Yin Ling
1b076b5e42 Merge branch 'bugfix/python3_target_test_3.3' into 'release/v3.3'
CI: run target test with python3 (v3.3)

See merge request espressif/esp-idf!13460
2021-06-15 08:46:49 +00:00
Island
b65a37795f Merge branch 'optimize/ble_mesh_miscellaneous_v3.3' into 'release/v3.3'
Optimize/ble mesh miscellaneous (v3.3)

See merge request espressif/esp-idf!13935
2021-06-10 09:21:49 +00:00
lly
9590db4cb6 ble_mesh: stack: Move bt_mesh_rand to mesh_common.c 2021-06-10 09:52:26 +08:00
lly
b2bcbd5559 ble_mesh: stack: Remove useless BT_DBG_ENABLED in a few files 2021-06-10 09:52:09 +08:00
lly
94ca8b8917 ble_mesh: Replace zephyr integer types with C99 types [Zephyr] 2021-06-10 09:51:52 +08:00
lly
85ec75b970 ble_mesh: stack: Update ARRAY_SIZE definition 2021-06-10 09:50:27 +08:00
Chen Yudong
a6fc744026 test: fix socket issue in iperf example test 2021-06-08 17:40:25 +08:00
He Yin Ling
35a7462e69 test: fix iperf example errors:
1. fix TypeError when running with python3
2. fix throughput chart x/y axis label error
3. make test case compatibile with iperf bin on earlier release branches
2021-06-08 17:40:14 +08:00
Chen Yudong
9703c1a32f CI: fix connection failures in asio example tests 2021-06-08 17:40:04 +08:00
Chen Yudong
62359f3442 ci: run target test with python3 2021-06-08 17:39:29 +08:00
Ivan Grokhotkov
19636db724 test: add a (non-automated) case for backtraces with ROM functions 2021-06-08 17:28:00 +10:00
Ivan Grokhotkov
11caa6fcf2 heap: recognize 0x40000000 as an address terminating the backtrace
On Xtensa, backtrace can not recover the two most significant bits of
the address, as the window call size is encoded in these bits.
Because of this, __builtin_return_address modifies these MSBs to
match those of the callee, "fixing" the address. An unfortunate side
effect is that the zero return address, which usually terminates the
backtrace, gets converted to 0x40000000. While there is a valid
instruction at this address, its occurrence in the backtrace is
highly unlikely: this is the first instruction of WindowOverflow4
vector, and IDF apps switch VECBASE to an IRAM location very early at
startup.
2021-06-08 17:28:00 +10:00
Angus Gratton
ac6f6a3768 Merge branch 'bugfix/cmake_partition_md5sum_v3.3' into 'release/v3.3'
bugfix: Fix CMake partition md5sum generation (v3.3)

See merge request espressif/esp-idf!13884
2021-06-08 04:46:10 +00:00
Angus Gratton
e2d6ce553d cmake: partition_table: Fix generation of MD5 for partition table when using CMake 2021-06-07 17:59:12 +10:00
Island
cce139e5bd Merge branch 'bugfix/bt_impersonation_passkey_fix_v3.3' into 'release/v3.3'
Bluedroid: Check only x component of passkey to avoid passkey impersonation attack. (v3.3)

See merge request espressif/esp-idf!13762
2021-06-07 06:41:48 +00:00
Angus Gratton
d7562e2b2c driver test: Increase stack for the "spi poll tasks" test
Current stack usage gets very close to overflowing
2021-06-07 02:11:26 +00:00
Wang Meng Yang
c9cf530c51 Merge branch 'bugfix/invalid_feat_page_exec_v3.3' into 'release/v3.3'
bt controller: Fixed handling for invalid feature page.

See merge request espressif/esp-idf!13569
2021-06-07 01:35:22 +00:00
Angus Gratton
4e64cbb576 Merge branch 'bugfix/partition_table_integrity_check_v3.3' into 'release/v3.3'
paritition_table: Verify the partition table md5sum when loading in the app (v3.3)

See merge request espressif/esp-idf!13587
2021-06-04 08:26:21 +00:00
baohongde
bb824d7a4b bugfix/fix crash when lmp flooding 2021-06-02 17:34:45 +08:00
baohongde
62a4a0dcaf Delete the option BLE ADV priority high
Fix controller task watchdog in Wi-Fi test
2021-06-02 14:44:09 +08:00
Angus Gratton
22487a65ac paritition_table: Verify the partition table md5sum when loading the app
Additionally, always enable the partition MD5 check if flash encryption is on in
Release mode. This ensures the partition table ciphertext has not been modified
(CVE-2021-27926).

The exception is pre-V3.1 ESP-IDF bootloaders and partition tables, which
don't have support for the MD5 entry.
2021-06-02 16:32:31 +10:00
gengyuchao
906dbd262e Backport: Fixed handling for invalid feature page. Add missing IRAM_ATTR in coex mode. 2021-06-02 11:55:42 +08:00
Wang Meng Yang
f656c04d12 Merge branch 'bugfix/ble_timeout_disconnect_no_report_v3.3' into 'release/v3.3'
ble timeout disconnect but no report to host

See merge request espressif/esp-idf!13769
2021-06-02 02:51:17 +00:00
David Čermák
504a9e178f Merge branch 'feature/mqtt_intro_new_modes_v3.3' into 'release/v3.3'
MQTT:  Update submodule reference to support new config modes (v3.3)

See merge request espressif/esp-idf!13712
2021-06-01 05:55:43 +00:00
Ivan Grokhotkov
c7add96e64 Merge branch 'bugfix/fix_idf_monitor_unicode_path_crash_v3.3' into 'release/v3.3'
tools: handle exception in case of logging Unicode characters (v3.3)

See merge request espressif/esp-idf!13045
2021-05-31 17:24:06 +00:00
David Cermak
4fce8182b9 MQTT: Update submodule reference to support new config modes
* Queueing publish messages to outbox when the client is not connected (default=off -> messages are queued if disconnected)
* Use of incremental msg-id instead of random id (default=off -> msg-id uses platform_random())
* Posting a new event-id if a queued message gets deleted from the outbox (default=off -> events are not posted)

Detailed description of included `esp-mqtt` changes
(da850b0add1e71b3659bfac5d797cc834dc3e89b...9ea804e0ab5368d5ab53ae2301a5fec9d1f12f1a)
* mqtt: Remove unused mqtt_header_state_t
  - esp-mqtt commit: b7158a4aea
  - esp-mqtt MR: espressif/esp-mqtt!84
  - Merges https://github.com/espressif/esp-mqtt/pull/180
* Cleanup public include dirs
  - esp-mqtt commit: f65d5d05db
  - esp-mqtt MR: espressif/esp-mqtt!85
* Config: Add a new option to use incremental message id
  - esp-mqtt commit: 8bb4a26f46
  - esp-mqtt MR: espressif/esp-mqtt!85
  - Closes https://github.com/espressif/esp-mqtt/issues/176
* Publish: Add new API to enqueue qos>0 messages
  - esp-mqtt commit: dc7fd5c0b1
  - esp-mqtt MR: espressif/esp-mqtt!85
  - Closes https://github.com/espressif/esp-mqtt/issues/155
* Config: Add a new option to disable publishing when disconnected
  - esp-mqtt commit: f44dcb1c26
  - esp-mqtt MR: espressif/esp-mqtt!85
  - Related https://github.com/espressif/esp-mqtt/issues/177
* Events: Add new event to report deleted messages from outbox
  - esp-mqtt commit: 2e35d4d4d5
  - esp-mqtt MR: espressif/esp-mqtt!85
* Publish: Allow for qos=0 messages to be stored using esp_mqtt_client_enqueue()
  - esp-mqtt commit: e2de0f3e3e
  - esp-mqtt MR: espressif/esp-mqtt!85
2021-05-31 13:04:18 +00:00
Yang Zhao
ea14555cf9 This issue is caused by modem sleep.The sleep interrupt will come the second time before the CLKN interrupt. If
we disable the sleep interrupt when it comes in the first time, the CLKN interrupt will never come.
2021-05-31 09:54:10 +00:00
Chinmay Chhajed
fb55f9f397 Bluedroid: Check only x component of passkey to avoid passkey impersonation attack. 2021-05-31 07:12:57 +00:00
David Čermák
5198a7a46b Merge branch 'bugfix/ensure_rmii_clock_before_phy_reset' into 'release/v3.3'
ethernet: ensure RMII clock before PHY reset

See merge request espressif/esp-idf!13714
2021-05-31 06:53:37 +00:00
Michael (XIAO Xufeng)
6aaddf972c Merge branch 'bugfix/fix_dac_driver_self_contained_backport_v3.3' into 'release/v3.3'
fix dac header file self contained issue (backport v3.3)

See merge request espressif/esp-idf!12890
2021-05-26 10:06:31 +00:00
fuzhibo
4ec4d40af7 bugfix(adc): missing ranges of ADC codes in ESP32 2021-05-26 18:03:50 +08:00
Jiang Jiang Jian
0f80b6363c Merge branch 'nimble/fix_ble_sm_sc_pub_key_v3.3' into 'release/v3.3'
NimBLE: Fix MITM vulnerability and free AES context (v3.3)

See merge request espressif/esp-idf!13600
2021-05-26 04:10:41 +00:00
He Yin Ling
3bc41719ae Merge branch 'ci/ttfw_fix_dut_exception_not_added_to_junit_report_v3.3' into 'release/v3.3'
ttfw: fix DUT exception not added to junit report (v3.3)

See merge request espressif/esp-idf!13615
2021-05-26 03:13:53 +00:00
Omar Chebib
0fb2ff12b8 regi2c: add a spinlock for accessing (reg)I2C devices
When not compiling bootloader, a spinlock will be used for reading or writing
I2C internal devices/registers.
When compiling for bootloader, no need to use any lock.
2021-05-26 10:17:15 +08:00
Prasad Alatkar
9f56c39630 NimBLE: Fix MITM vulnerability and free AES context (v3.3) 2021-05-25 14:55:00 +00:00
Jiang Jiang Jian
aacc7e07a6 Merge branch 'bugfix/fix_set_channel_error_after_wifi_stop_v3.3' into 'release/v3.3'
esp_wifi: Fix setting channel error after WiFi stop (backport v3.3)

See merge request espressif/esp-idf!13453
2021-05-25 14:29:07 +00:00
morris
fc60e09295 ethernet: ensure RMII clock before PHY reset
Closes https://github.com/espressif/esp-idf/issues/6821
2021-05-25 18:51:25 +08:00
dongyou
6b263ae8cb ajust espnow channel range 2021-05-25 11:08:12 +08:00
Patryk Krzywdziński
ea73e952a1 Fix eclipse build: “UnicodeDecodeError: 'ascii' codec can't decode byte”
Closes https://github.com/espressif/esp-idf/pull/6505
2021-05-21 20:59:28 +02:00
David Čermák
d743f8502d Merge branch 'bugfix/mdns_coll_det_list' into 'release/v3.3'
mDNS: Fix of text length calculation when detecting a collision(Backport v3.3)

See merge request espressif/esp-idf!12026
2021-05-20 13:42:11 +00:00
suren.gabrielyan
c4ee49edf1 mDNS: Fix of text length calculation when detecting a collision 2021-05-20 11:05:51 +00:00
suren.gabrielyan
86f4afa330 mDNS: Fix of collision detection during txt length calculation
Closes https://github.com/espressif/esp-idf/issues/6114
2021-05-20 11:05:51 +00:00
He Yin Ling
0c2fb10e0c ttfw: fix DUT exception not added to junit report 2021-05-20 16:53:52 +08:00
Island
b3880ce487 Merge branch 'nimble/fix_host_flow_ctrl_v3.3' into 'release/v3.3'
NimBLE: Fix host flow control in NimBLE porting layer and host (release/v3.3)

See merge request espressif/esp-idf!13578
2021-05-19 09:51:10 +00:00
Prasad Alatkar
c15ecf9fcd NimBLE: Update submodule to include host flow control fixes. 2021-05-17 20:14:16 +05:30
Prasad Alatkar
3bdb0ce5c1 NimBLE: Fix host flow control in NimBLE porting layer.
- Register `ble_hs_flow_acl_free` callback in NimBLE porting layer.
2021-05-17 20:11:53 +05:30
Michael (XIAO Xufeng)
c0aee61ce0 Merge branch 'bugfix/fix_uart_module_enable_issue_v3.3' into 'release/v3.3'
Bugfix (uart): fix uart module reset issue (release V3.3)

See merge request espressif/esp-idf!8586
2021-05-13 06:55:15 +00:00
Jiang Jiang Jian
61a1e0d5c9 Merge branch 'bugfix/generate_value_0_when_prov_auth_v3.3' into 'release/v3.3'
ble_mesh: stack: Fix provisioning input or output count number should be at least 1 (v3.3)

See merge request espressif/esp-idf!13483
2021-05-08 12:53:48 +00:00
Jiang Jiang Jian
01cb29ba5a Merge branch 'bugfix/endianness_in_output_or_input_oob_v3.3' into 'release/v3.3'
ble_mesh: stack: Fix endianness error in output or input oob data of number (v3.3)

See merge request espressif/esp-idf!13470
2021-05-08 07:12:54 +00:00
wangjialiang
f24f7ab97b ble_mesh: stack: Fix provisioning input or output count number should be at least 1
Closes https://github.com/espressif/esp-idf/issues/6863
2021-05-08 13:19:03 +08:00
wangjialiang
e5f496149e ble_mesh: stack: Fix endianness error in output or input oob data of number
Closes https://github.com/espressif/esp-idf/issues/6862
2021-05-07 17:03:00 +08:00
Angus Gratton
fa00fd5c8a Merge branch 'bugfix/freertos_addition_overflow_v3.3' into 'release/v3.3'
freertos: Fix addition overflow (v3.3)

See merge request espressif/esp-idf!13426
2021-05-07 08:18:03 +00:00
xiehang
1a47ecbfac esp_wifi: Fix setting channel error after WiFi stop 2021-05-06 14:06:29 +08:00
Angus Gratton
542c3e07a0 freertos: Check for arithmetic overflows on queue creation
Addition overflow check is from FreeRTOS kernel commit 47338393f1f79558f6144213409f09f81d7c4837
2021-05-04 18:38:15 +10:00
Angus Gratton
9772facaca Merge branch 'bugfix/espsecure_args_v3.3' into 'release/v3.3'
esptool: Update to fix espsecure.py sign_data default version argument (v3.3)

See merge request espressif/esp-idf!13321
2021-05-03 08:57:42 +00:00
Angus Gratton
f845643608 esptool: Update to fix espsecure.py sign_data default version argument
Regression in Secure Boot signing, reported at https://github.com/espressif/esp-idf/issues/6831
2021-05-03 06:31:18 +00:00
Michael (XIAO Xufeng)
a040ec1eec Merge branch 'bugfix/put_uart_isr_in_iram_v3.3' into 'release/v3.3'
uart: add option to put ISR in IRAM (v3.3)

See merge request espressif/esp-idf!13144
2021-05-01 14:28:58 +00:00
Jiang Jiang Jian
6d44b690b8 Merge branch 'bugfix/remove_redundant_other_core_cache_disable_v3.3' into 'release/v3.3'
[system]: Remove redundant othercore cache disable (backport v3.3)

See merge request espressif/esp-idf!13360
2021-04-30 09:17:50 +00:00
Jiang Jiang Jian
ef7ae9a3ee Merge branch 'bugfix/wifi_softap_deep_sleep_current_opt_v3.3' into 'release/v3.3'
backport v3.3: optimize deep sleep current in wifi softap mode

See merge request espressif/esp-idf!13398
2021-04-30 02:50:33 +00:00
Li Shuai
e74a36da43 deep sleep: optimize sleep current in wifi softap mode 2021-04-29 15:43:00 +08:00
morris
dc9c0a9f6d uart: add option to put ISR in IRAM 2021-04-28 10:07:23 +00:00
Mahavir Jain
70cafac4bd Merge branch 'bugfix/esp_http_client_read_v3.3' into 'release/v3.3'
Fix esp_http_client_read for file size aligned to 289 bytes (v3.3)

See merge request espressif/esp-idf!13309
2021-04-28 10:03:47 +00:00
Shubham Kulkarni
c8996feebb esp_http_client_read: Add check for esp_http_client_is_complete_data_received before returning ESP_FAIL
Closes: https://github.com/espressif/esp-idf/issues/6772
2021-04-28 05:00:45 +00:00
houwenxiang
8fcca01384 driver(uart): fix uart module reset issue (release V3.3)
On ESP32, due to fifo reset issue, UART2 will work incorrectly if reset the fifo of UART1(TX fifo and RX fifo). The software can workaround the RX fifo reset issue,

    while the TX fifo reset issue can not. When UART2 is used and UART1 is used as the log output port, a software reset can reproduce this issue. So we should reset the UART memory

    before the software reset to solve this problem.
2021-04-27 10:12:59 +00:00
wuzhenghui
da31949530 remove othercore cache disable 2021-04-27 14:29:49 +08:00
Jiang Jiang Jian
0982de8c05 Merge branch 'bugfix/e8192_and_assert_param_v3.3' into 'release/v3.3'
Modify E8192 ELx200 ELx40 log level to LOGD

See merge request espressif/esp-idf!13170
2021-04-25 13:26:17 +00:00
xiongweichao
f11f52b72f modify E8192 ELx200 ELx40 log level to LOGD 2021-04-25 10:33:47 +00:00
Angus Gratton
648f923015 ci: Use GitHub Actions to generate recursive source code zips for releases
We do this for all ESP-IDF releases, this step automates it.

Uses action added in https://github.com/espressif/github-actions/pull/10
2021-04-23 08:36:50 +00:00
Angus Gratton
01fedd2b05 Merge branch 'bugfix/calc_8m_freq_test_v3.3' into 'release/v3.3'
rtc: increase CI acceptance range for calc 8M test (v3.3)

See merge request espressif/esp-idf!13089
2021-04-23 07:31:00 +00:00
Jiang Jiang Jian
13a069f276 Merge branch 'component_bt/optimize_spp_stop_server_v3.3' into 'release/v3.3'
component_bt/Optimize SPP Stop Server API[backport v3.3]

See merge request espressif/esp-idf!13164
2021-04-22 05:59:52 +00:00
Jiang Jiang Jian
aa8f1bef1e Merge branch 'bugfix/btdm_backport_ble_bugs_21_01_29_v3.3' into 'release/v3.3'
Bugfix/btdm backport ble bugs v3.3

See merge request espressif/esp-idf!12440
2021-04-22 05:59:38 +00:00
Jiang Jiang Jian
c3678c5378 Merge branch 'feature/support_transport_keepalive_v3.3' into 'release/v3.3'
Feature/support transport keepalive v3.3 [backport v3.3]

See merge request espressif/esp-idf!12154
2021-04-22 05:59:05 +00:00
Jiang Jiang Jian
9ab19d7b68 Merge branch 'nimble/add_error_prints_acl_buf_v3.3' into 'release/v3.3'
NimBLE: Add error prints for ACL buffer exhaustion in NPL (v3.3)

See merge request espressif/esp-idf!12972
2021-04-22 05:58:24 +00:00
Jiang Jiang Jian
cf79bfbc5f Merge branch 'bugfix/fix_wifi_interface_use_v3.3' into 'release/v3.3'
esp_wifi: Modify ESP_IF_WIFI_STA to WIFI_IF_STA  (backport v3.3)

See merge request espressif/esp-idf!12055
2021-04-22 05:57:04 +00:00
Jiang Jiang Jian
65b494567b Merge branch 'bugfix/ble_mesh_server_model_deinit_v3.3' into 'release/v3.3'
ble_mesh: stack: Fix deinit server models with no matching id (v3.3)

See merge request espressif/esp-idf!12317
2021-04-22 05:53:25 +00:00
Jiang Jiang Jian
22502bbd38 Merge branch 'bugfix/fix_tx_issue_after_esp_restart_v3.3' into 'release/v3.3'
components/bt: Shutdown Bluetooth before esp_restart.(V3.3)

See merge request espressif/esp-idf!11758
2021-04-22 05:52:18 +00:00
Jiang Jiang Jian
067f73d4ea Merge branch 'bugfix/btdm_assert_without_sw_coex_enable_v3.3' into 'release/v3.3'
components/bt: Fix assert without sw coexist enabled

See merge request espressif/esp-idf!12529
2021-04-22 05:51:39 +00:00
Jiang Jiang Jian
a943d21126 Merge branch 'feature/add_a2dp_init_deinit_comp_evt' into 'release/v3.3'
feature/ Add A2DP Init and Deinit Complete Evt [backport v3.3]

See merge request espressif/esp-idf!10151
2021-04-22 05:51:24 +00:00
Jiang Jiang Jian
fab97e2405 Merge branch 'bugfix/crash_on_enabling_verbose_logs_v3.3' into 'release/v3.3'
esp_wifi: Fixes issue of crashing when verbose logs are enabled (v3.3)

See merge request espressif/esp-idf!12492
2021-04-22 05:50:58 +00:00
Jiang Jiang Jian
94f5bc17a9 Merge branch 'bugfix/fix_arp_buffer_error_in_smart_config_v3.3' into 'release/v3.3'
bugfix/fix_arp_buffer_error_in_smart_config_v3.3

See merge request espressif/esp-idf!12291
2021-04-22 05:50:23 +00:00
Jiang Jiang Jian
c3e3f8b490 Merge branch 'bugfix/fix_iperf_example_exception_handling_for_no_ap_found_v3.3' into 'release/v3.3'
bugfix/fix_iperf_example_exception_handling_for_no_ap_found_v3.3

See merge request espressif/esp-idf!12274
2021-04-22 05:49:00 +00:00
Jiang Jiang Jian
eaa02c0ef8 Merge branch 'feat/ble_mesh_multiple_nvs_namespace_v3.3' into 'release/v3.3'
ble_mesh: stack: Provisioner supports multiple nvs namespaces (v3.3)

See merge request espressif/esp-idf!11950
2021-04-22 05:48:44 +00:00
Jiang Jiang Jian
5f03326833 Merge branch 'bugfix/fix_a2dp_underrun_issue_3_3' into 'release/v3.3'
Fix a2dp underrun issue [backport v3.3]

See merge request espressif/esp-idf!12280
2021-04-22 05:47:51 +00:00
Jiang Jiang Jian
bc625858ae Merge branch 'bugfix/esp_pm_dump_critical_v3.3' into 'release/v3.3'
esp_pm: esp_pm_dump_locks: don't print from a critical section, and fix formatting (backport v3.3)

See merge request espressif/esp-idf!12017
2021-04-22 05:47:12 +00:00
Anton Maklakov
c3251dcf29 Merge branch 'bugfix/ci/ci_fetch_submodule_fully_match_return_first_v3.3' into 'release/v3.3'
fix(ci): ci_fetch_submodule return full match name first (v3.3)

See merge request espressif/esp-idf!13214
2021-04-20 11:20:07 +00:00
Fu Hanxi
6828b0fcc7 fix(ci): ci_fetch_submodule return full match name first 2021-04-19 20:24:27 +08:00
liqigan
85be396cd3 add API esp_spp_stop_srv_scn to stop a specific server 2021-04-16 09:52:27 +08:00
Angus Gratton
63d482e162 Merge branch 'backport/anti-fi-check-sbv1-v3.3.3' into 'release/v3.3'
bootloader: Add fault injection resistance to Secure Boot bootloader verification

See merge request espressif/esp-idf!12738
2021-04-12 23:53:05 +00:00
Krzysztof Budzynski
600a0f841d Merge branch 'bugfix/doxygen_input_file_bug_v3.3' into 'release/v3.3'
docs: fix doxygen compile warnings for doxygen 1.9.1 (v3.3)

See merge request espressif/esp-idf!13080
2021-04-12 00:44:01 +00:00
Marius Vikhammer
9a338bc8c3 docs: fix doxygen compile warnings for doxygen 1.9.1
Newer versions of doxygen will give warnings for comments in
INPUT lists

Delete all comment lines to fix these warnings, our folder structure
stil gives an OK overview of what we are including
2021-04-12 08:43:57 +08:00
Marius Vikhammer
a680159bbb rtc: increase CI acceptance range for calc 8M test 2021-04-09 15:06:55 +08:00
Juraj Michálek
0b0364c719 tools: handle exception in case of logging Unicode characters 2021-04-06 19:17:45 +02:00
Sachin Parekh
3c7f439d5b bootloader: Add fault injection resistance to Secure Boot bootloader verification 2021-03-31 17:54:45 +05:30
Angus Gratton
08ce445ab6 Merge branch 'feature/twdt_prints_backtrace_v3.3' into 'release/v3.3'
Add Task Watchdog backtrace printing (v3.3)

See merge request espressif/esp-idf!12624
2021-03-31 05:17:23 +00:00
Prasad Alatkar
2b18d3c628 NimBLE: Add error prints for ACL buffer exhaustion in NPL 2021-03-31 10:44:07 +05:30
Mahavir Jain
7c86027531 Merge branch 'bugfix/rtc_clk_cal_cycles_add_default_vals_for_all_sources_v3.3' into 'release/v3.3'
esp32xx: Fix default values for all RTC sources in RTC_CLK_CAL_CYCLES option (v3.3)

See merge request espressif/esp-idf!12421
2021-03-26 06:42:07 +00:00
Mahavir Jain
5713bb1bb8 Merge branch 'fix/esp_tls_add_warning_if_ca_chain_has_invalid_cert_v3.3' into 'release/v3.3'
esp_tls: Add warning if the CA chain provided contains one/more invalid cert

See merge request espressif/esp-idf!11942
2021-03-26 06:25:37 +00:00
Mahavir Jain
9eb39ef409 Merge branch 'bugfix/http_client_buffer_overread_v3.3' into 'release/v3.3'
esp_http_client: Fix buffer overread, update https_request example to use HTTP/1.1 (v3.3)

See merge request espressif/esp-idf!12111
2021-03-26 05:23:07 +00:00
Mahavir Jain
dfdf9fe4e2 Merge branch 'bugfix/update_howsmyssl_cert_v3.3' into 'release/v3.3'
examples/protocols: update www.howsmyssl.com certificate to fix test failures (v3.3)

See merge request espressif/esp-idf!12214
2021-03-26 05:04:13 +00:00
Mahavir Jain
f227fc69e5 Merge branch 'feature/upgrade_mbedtls_to_v3.3' into 'release/v3.3'
mbedtls: upgrade to v2.16.9 release (v3.3)

See merge request espressif/esp-idf!11902
2021-03-26 05:02:46 +00:00
Mahavir Jain
30c7be6542 Merge branch 'bugfix/httpd_session_close_lru_v3.3' into 'release/v3.3'
esp_http_server: Add flag in sock_db to identify httpd_sess_close is called from httpd_session_close_lru (v3.3)

See merge request espressif/esp-idf!12115
2021-03-26 04:56:52 +00:00
Mahavir Jain
12cb4243f5 examples/protocols: update www.howsmyssl.com certificate to fix test failures 2021-03-26 02:42:44 +00:00
Mahavir Jain
069de99a9e mbedtls: upgrade to v2.16.9 release
For details release notes please refer to:
https://github.com/ARMmbed/mbedtls/releases/tag/v2.16.9
2021-03-26 02:42:29 +00:00
Shubham Kulkarni
b082ed5d2b Enable lru_purge_enable in simple HTTP server example 2021-03-26 02:41:50 +00:00
Shubham Kulkarni
f5acc1e446 esp_http_server: Add lru_socket flag in sock_db to indicate httpd_sess_close is called from httpd_sess_close_lru 2021-03-26 02:41:50 +00:00
Shubham Kulkarni
e16ab463d9 esp_http_client.c: Clear raw_len for response buffer after dispatching HTTP_EVENT_ON_FINISH event
Closes: https://github.com/espressif/esp-idf/issues/6146
2021-03-26 02:41:24 +00:00
Aditya Patwardhan
832128faf0 esp_tls: Add warning if the CA chain provided contains one/more invalid cert 2021-03-26 02:41:15 +00:00
Angus Gratton
85c43024cb Merge branch 'update/version_3_3_5' into 'release/v3.3'
Update version to 3.3.5

See merge request espressif/esp-idf!12901
2021-03-26 00:29:05 +00:00
xiehang
2091f4db1c esp_wifi: Modify WIFI_IF_AP to TCPIP_ADAPTER_IF_AP 2021-03-25 10:53:50 +08:00
xiehang
1975d39d44 esp_wifi: Modify ESP_IF_WIFI_AP to WIFI_IF_AP 2021-03-25 10:53:28 +08:00
xiehang
ee2b8a65a0 esp_wifi: Modify ESP_IF_WIFI_STA to WIFI_IF_STA 2021-03-25 10:51:36 +08:00
He Yin Ling
03810c4a06 versions: Update version to 3.3.5 2021-03-25 10:23:16 +08:00
fuzhibo
61a68ae95e driver(dac): fix dac header file self contained issue 2021-03-24 17:12:11 +08:00
Jiang Jiang Jian
343521ab1a Merge branch 'bugfix/fix-modem-sleep-mr-v3.3' into 'release/v3.3'
Fix the bug of modem sleep

See merge request espressif/esp-idf!12861
2021-03-24 09:06:57 +00:00
“YangZhao”
8eb75313d4 Fix the bug of modem sleep which may lead to the crash issue "assert(-218959118,0)" 2021-03-23 21:29:33 +08:00
Jiang Jiang Jian
b34dee5d9e Merge branch 'mesh/bugfix_fix_error_when_mesh_and_ble_enabled' into 'release/v3.3'
esp_wifi_mesh: fix error issue when both mesh and ble are enabled

See merge request espressif/esp-idf!11701
2021-03-23 06:41:56 +00:00
shenjun
73117b8c94 esp_wifi_mesh: fix error issue when both mesh and ble are enabled 2021-03-15 14:30:34 +08:00
Jiang Jiang Jian
c43efe1502 Merge branch 'bugfix/revert_refactor_wifi_interface_v3.3' into 'release/v3.3'
Revert "Refactor wifi_interface_t" (v3.3)

See merge request espressif/esp-idf!12483
2021-03-15 03:26:08 +00:00
xiehang
cd90dfa38b Revert "Refactor wifi_interface_t"
This reverts commit ae24692785.

Closes: https://github.com/espressif/arduino-esp32/issues/4905
2021-03-08 17:02:22 +08:00
Angus Gratton
0b1bc0b5b8 Merge branch 'bugfix/ttfw_example_test_fails_port_remains_open_v3.3' into 'release/v3.3'
ci: Fix CI issue if one example test fails, and if serial port returns some noise (v3.3)

See merge request espressif/esp-idf!12384
2021-03-07 23:42:24 +00:00
baohongde
a10dac936c components/bt: Fix crash in Bluetooth when esp_restart 2021-03-05 21:54:47 +08:00
baohongde
2ad908f71e components/bt: Shutdown Bluetooth before esp_restart. 2021-03-05 21:54:20 +08:00
Jiang Jiang Jian
0bfff0b25a Merge branch 'bugfix/fix_csa_channel_crash_v3.3' into 'release/v3.3'
esp_wifi: fix CSA and BAR crash issue(v3.3)

See merge request espressif/esp-idf!12552
2021-03-05 12:31:58 +00:00
Darian Leung
a1fd207aee Add Task Watchdog backtrace printing
This commit makes the Task Watchdog print the backtrace of both
cores when it times out.
2021-03-04 19:01:48 +11:00
Darian Leung
1786fc9ed2 esp32: Refactor backtrace and add esp_backtrace_print()
This commit refactors backtracing within the panic handler so that a common
function esp_backtrace_get_next_frame() is used iteratively to traverse a
callstack.

A esp_backtrace_print() function has also be added that allows the printing
of a backtrace at runtime. The esp_backtrace_print() function allows unity to
print the backtrace of failed test cases and jump back to the main test menu
without the need reset the chip. esp_backtrace_print() can also be used as a
debugging function by users.
2021-03-04 19:01:48 +11:00
Jiang Jiang Jian
c8915cd157 Merge branch 'bugfix/fix_spp_can_not_connect_twice' into 'release/v3.3'
Bugfix/Fix SPP Reconnect Failed after Disconnet

See merge request espressif/esp-idf!12241
2021-03-04 03:37:21 +00:00
Angus Gratton
a85b97a6f5 ci: ttfw: Encode serial port data to whatever the console encoding is
This is a bit of a hack, but gives us a way to always log it
2021-03-04 09:25:44 +11:00
ChenJianxing
88898e2f96 esp_wifi: fix CSA and BAR crash issue 2021-02-27 17:09:57 +08:00
aditi_lonkar
d6cafddaa3 esp_wifi: Fixes issue of crashing when verbose logs are enabled. 2021-02-26 19:07:33 +05:30
baohongde
716edebbbd components/bt: Fix assert without sw coexist enabled 2021-02-26 14:44:57 +08:00
zhiweijian
47c0ce6fca add connection parameter check 2021-02-22 15:14:32 +08:00
zhiweijian
c02d5a4d85 fix ble connection maximum latency is 499 2021-02-22 15:11:03 +08:00
zhiweijian
7ffe2c3136 disable bluedroid congest error log print 2021-02-22 14:58:59 +08:00
zhiweijian
208c2fb0fb fix read multi char failed(GATT_27001) 2021-02-22 14:56:10 +08:00
zhiweijian
1f4d3ac30a fix bluedroid repair faild if the two most significant bits of public address is '01' 2021-02-22 14:54:01 +08:00
zhiweijian
928e004208 fix ble read multi char err when the number of handles is more than 10 2021-02-22 14:51:33 +08:00
zhiweijian
db72885f15 fix scan rsp length err 2021-02-22 14:45:05 +08:00
KonstantinKondrashov
1e4552533d esp32xx: Fix default values for all RTC sources in RTC_CLK_CAL_CYCLES option
Closes: https://github.com/espressif/esp-idf/issues/6037
2021-02-19 20:02:49 +08:00
Island
7a85334d80 Merge branch 'bugfix/ignore_null_valued_comb_key_3_3' into 'release/v3.3'
Bugfix/ignore null valued comb key 3 3

See merge request espressif/esp-idf!12362
2021-02-19 11:38:57 +00:00
Angus Gratton
0aca88a6e9 ci: Log failure to close any DUT 2021-02-15 10:54:50 +11:00
Chinmay Chhajed
dcaaddae37 component/bt: Added check for NULL valued combination key. 2021-02-10 17:19:20 +05:30
Chinmay Chhajed
4936e8f86c Bluedroid: Do not initiate/accept connection with device having same BDADDR.
Added BD_ADDR comparison in l2cu_lcp_allocate and removed check from
security connection request handler as it's handled in l2cu_lcp_allocate
for both connection request and create connection.
2021-02-10 17:16:47 +05:30
Chinmay Chhajed
6a4e69f442 bt: removed esp_bt_get_mac()
There was no need for this function as there is already a way present to
fetch own mac address. Own mac addr can be fetched by calling
controller_get_interface().
2021-02-10 17:12:27 +05:30
lly
19a578c2e0 ble_mesh: stack: Fix deinit server models with no matching id 2021-02-07 11:20:44 +08:00
dongyou
c505fe650f fix smartconfig issue when router reply arp late 2021-02-05 12:01:05 +08:00
weitianhua
94e84e6c0c Fix audio underrun issue with oppo x20 2021-02-04 19:39:39 +08:00
dongyou
44f22150f2 add exception handling for iperf example's scan when no ap was found 2021-02-04 17:59:13 +08:00
Jiang Jiang Jian
d8082b7f39 Merge branch 'bugfix/espnow_recv_fail_v3.3' into 'release/v3.3'
fix the bug that espnow recv fail (v3.3)

See merge request espressif/esp-idf!12090
2021-02-04 16:10:43 +08:00
lly
4005df854f ble_mesh: ci: Add settings sdkconfig test files 2021-02-04 07:16:35 +00:00
lly
98e17de350 ble_mesh: stack: Provisioner supports multiple nvs namespaces
Now Provisioner can use different NVS namespaces to store
different instances of mesh information, for example, for
different user accounts.
2021-02-04 07:16:35 +00:00
liqigan
539718735b fix spp connect failed or discovery failed after the first connection release 2021-02-03 17:23:45 +08:00
Angus Gratton
92676f05fa Merge branch 'bugfix/force_sync_only_esptool_for_target_test_jobs' into 'release/v3.3'
ci: force sync only esptool for target test jobs (v3.3)

See merge request espressif/esp-idf!11904
2021-02-02 11:28:42 +08:00
Fu Hanxi
664597f4ce CI: only fetch esptool for target test jobs 2021-02-01 08:51:31 +00:00
Ivan Grokhotkov
b9f6a5da51 make: fix undefined variable warning (IDF_SKIP_CHECK_SUBMODULES) 2021-02-01 08:51:31 +00:00
He Yin Ling
a79c9402d6 ci: fix fetch submodule error on python3 2021-02-01 08:51:31 +00:00
He Yin Ling
6418be692a CI: build system do not check submodule for CI 2021-02-01 08:51:31 +00:00
He Yin Ling
729451ef60 CI: modify fetch submodule method:
download archive for submodules instead of clone
2021-02-01 08:51:31 +00:00
He Yin Ling
1b0a3f8924 CI: add utility gitlab_api 2021-02-01 08:51:31 +00:00
weitianhua
33ad4b6f84 Add A2DP Init and Deinit Complete Evt 2021-01-26 11:15:35 +08:00
yuanjm
36c3b8980d Make OTA example support keepalive 2021-01-25 17:48:54 +08:00
Shubham Kulkarni
8610ce4f34 Add options for esp_http_client and esp_websocket_client to support keepalive 2021-01-25 17:48:54 +08:00
yuanjm
af50ceb5e6 Modify esp-tls and tcp_transport to support keep alive for tcp and ssl connection 2021-01-25 17:48:47 +08:00
zhangyanjiao
a3740c97c9 fix the bug that espnow recv fail 2021-01-21 15:07:57 +08:00
Jiang Jiang Jian
3f15854d96 Merge branch 'bugfix/fix_some_wifi_bugs_0105_v3.3' into 'release/v3.3'
Bugfix/fix some wifi bugs 0105 v3.3 (backport v3.3)

See merge request espressif/esp-idf!11945
2021-01-18 21:22:48 +08:00
Jiang Jiang Jian
808f456442 Merge branch 'bugfix/fix_iperf_example_crash_issue_v3.3' into 'release/v3.3'
Bugfix/fix iperf example crash issue v3.3 (backport v3.3)

See merge request espressif/esp-idf!12018
2021-01-18 19:18:53 +08:00
Jiang Jiang Jian
854ccb743d Merge branch 'bugfix/bluedroid_avoid_same_bdaddr_conn_v3.3' into 'release/v3.3'
Bluedroid: Do not connect if peer BD_ADDR is same as own BD_ADDR. (v3.3)

See merge request espressif/esp-idf!11993
2021-01-18 14:35:25 +08:00
Jiang Jiang Jian
5ee8a808c8 Merge branch 'bugfix/fix_tcp_mss_issue_v3.3' into 'release/v3.3'
esp_wifi: The maximum value of modifying TCP MSS is 1460 (v3.3)

See merge request espressif/esp-idf!11999
2021-01-18 14:21:36 +08:00
Jiang Jiang Jian
71a50021ca Merge branch 'bugfix/fix_ping_specify_length_issue_v3.3' into 'release/v3.3'
bugfix: fix ICMP specify length issue (backport v3.3)

See merge request espressif/esp-idf!11988
2021-01-18 14:20:43 +08:00
Ivan Grokhotkov
5080a23ac3 esp_pm: fix formatting issues in esp_pm_dump_locks
- line was truncated because 64 characters were not sufficient
- length passed to snprintf should be full buffer length, not -1
- make the width of lock name field fixed
- fix alignment of lock type column
2021-01-15 12:46:46 +01:00
xiehang
3590a6816f example: Scan failure should not cause system crash 2021-01-15 19:45:59 +08:00
Ivan Grokhotkov
827bb925b7 esp_pm: esp_pm_dump_locks: don't print from a critical section
Reported in https://github.com/espressif/esp-idf/issues/1917
2021-01-15 12:45:45 +01:00
xiehang
2f4ef71beb example: do not check the return value of esp_wifi_connect() 2021-01-15 19:40:25 +08:00
Ivan Grokhotkov
7e63061fae Merge branch 'bugfix/xtensa_win_version' into 'release/v3.3'
Bugfix/xtensa win version

See merge request espressif/esp-idf!11983
2021-01-15 07:33:27 +08:00
xiehang
a31000dcb6 esp_wifi: The maximum value of modifying TCP MSS is 1660 2021-01-14 19:50:24 +08:00
Chinmay Chhajed
092dc133cc Bluedroid: Do not connect if peer BD_ADDR is same as own BD_ADDR. 2021-01-14 14:32:58 +05:30
Juraj Michálek
8cef74c151 bugfix: correction of xtensa-esp32-elf version for Windows 2021-01-14 08:36:31 +01:00
ronghulin
675d6f26d4 bugfix: fix ICMP specify length issue 2021-01-14 14:40:13 +08:00
xiehang
d3a27596a1 CI: Fix test_phy_rtc_cache_task stack overflow 2021-01-13 19:48:47 +08:00
xiehang
426736c769 bugfix: fix some wifi bugs
1. fix max tx power to 20dBm
2. fix the issue that the esp_wifi_sta_get_ap_info can't get country
2021-01-11 19:21:18 +08:00
xiehang
ae24692785 esp_wifi: Update WiFi lib
1. Add check CSA state before CSA timer process
2. Change wifi scan duration from 120ms to 100ms
3. Using deport reg instead of ahb
4. Check TID in ieee80211_recv_bar()
5. Revert to report specific reason code when receiving deauth during 4-way-handshark
6. Fix the bug that tx ampdu parameter is not from peer device
7. Refactor wifi_interface_t
8. Faster WiFi station connect improvement, avoid 100ms passive scan
9. Add FCS failed packets filter
10.Update esp32 phy lib to v4660
11.Fix csa timer issue
12.Fix country code last byte to space instead of NULL
13.Fix softap cannot forward A-MSDU
14.Fix max tx power to 20dBm
15.Fix the issue that the esp_wifi_sta_get_ap_info can't get country
2021-01-11 19:21:13 +08:00
xiehang
3df5b89c91 esp_wifi: ESP32 phy add [sections:phy_iram] 2021-01-11 15:32:46 +08:00
xiehang
3a56cfc9b3 esp_wifi: optimize phy version log 2021-01-11 15:32:37 +08:00
Jiang Jiang Jian
cd59d107b2 Merge branch 'bugfix/ble_mesh_node_id_adv_v3.3' into 'release/v3.3'
ble_mesh: stack: Fix Node ID adv with wrong timeout (v3.3)

See merge request espressif/esp-idf!11880
2021-01-11 11:46:41 +08:00
Jiang Jiang Jian
66a1b39814 Merge branch 'bugfix/add_macro_to_blufi' into 'release/v3.3'
component/bt: Add a macro to control the compilation of blufi.(backport v3.3)

See merge request espressif/esp-idf!11891
2021-01-11 11:45:14 +08:00
Jiang Jiang Jian
1df7be0e58 Merge branch 'feat/ble_mesh_provisioner_recv_hb_support_v3.3' into 'release/v3.3'
Feat/ble mesh provisioner recv hb support (v3.3)

See merge request espressif/esp-idf!11916
2021-01-11 11:44:27 +08:00
Jiang Jiang Jian
d3bdcccd3b Merge branch 'bugfix/fix_wifi_stack_overflow_v3.3' into 'release/v3.3'
esp_wifi: Fix WiFi stack overflow issue (v3.3)

See merge request espressif/esp-idf!11889
2021-01-11 11:43:53 +08:00
lly
79a5037ee2 ble_mesh: ci: Add enabling hb recv sdkconfig file 2021-01-08 09:36:52 +08:00
lly
e9caf68d6e ble_mesh: stack: Provisioner supports receiving heartbeat 2021-01-08 09:35:03 +08:00
xiehang
60291300a2 Revert "esp_wifi: Fix handling of multiple AP credentials in WPS"
This reverts commit de0d1fffcd.
2021-01-06 19:30:56 +08:00
wangcheng
e9d28837ec component/bt: Add a macro to control the compilation of blufi. 2021-01-06 18:04:30 +08:00
lly
6c6ad3f772 ble_mesh: stack: Fix Node ID adv with wrong timeout 2021-01-05 20:16:42 +08:00
Jiang Jiang Jian
71df1f7422 Merge branch 'bugfix/btdm_blufi_data_sequence_not_reset_after_disconnect_v3.3' into 'release/v3.3'
component/bt: fix Blufi sends data after disconnect the seq still increase(backport v3.3)

See merge request espressif/esp-idf!10245
2021-01-05 11:10:35 +08:00
XieWenxiang
d8b42e565c component/bt: fix Blufi sends data after disconnect the seq still increase(backport v3.3) 2021-01-05 01:53:33 +00:00
Jiang Jiang Jian
509de0aac3 Merge branch 'bugfix/mcpwm_period_error_v3.3' into 'release/v3.3'
bugfix(mcpwm_period_error): fix the issue of wrong period (backport v3.3)

See merge request espressif/esp-idf!7186
2021-01-05 09:53:22 +08:00
Jiang Jiang Jian
f3aaa39c43 Merge branch 'bugfix/btdm_blufi_send_longer_custom_data_will_congested_v3.3' into 'release/v3.3'
component/bt: fix Blufi sends longer customer data will will lead congested(backport v3.3)

See merge request espressif/esp-idf!11724
2021-01-05 09:51:39 +08:00
Angus Gratton
f61f54ee67 Merge branch 'feature/dis_uart_dl_mode_v3.3' into 'release/v3.3'
feature: Disable UART download mode (v3.3)

See merge request espressif/esp-idf!10767
2021-01-04 15:29:14 +08:00
Mahavir Jain
6917a40294 Merge branch 'fix/i2c_pm_lock_v3.3' into 'release/v3.3'
i2c: Acquire PM lock after acquiring mutex (v3.3)

See merge request espressif/esp-idf!11833
2020-12-30 18:50:14 +08:00
Sachin Parekh
25147f2560 i2c: Acquire PM lock after acquiring mutex 2020-12-30 13:25:40 +05:30
Jiang Jiang Jian
29e69a12d3 Merge branch 'feature/oocd_ver_backport_v3.3' into 'release/v3.3'
tools: Updates OpenOCD version to 'v0.10.0-esp32-20200709' (backport v3.3)

See merge request espressif/esp-idf!9750
2020-12-28 11:50:57 +08:00
Chen Zheng Wei
d3eb487d40 mcpwm: fix the issue of wrong period (backport v3.3) 2020-12-28 03:48:11 +00:00
Jiang Jiang Jian
c4aafb06ce Merge branch 'feature/nvs_erase_check_init_3.3' into 'release/v3.3'
NVS Flash: prevent erasing initialized partition (backport v3.3)

See merge request espressif/esp-idf!10072
2020-12-28 11:46:34 +08:00
Jiang Jiang Jian
777c8bbd44 Merge branch 'bugfix/bt_bluedroid_same_public_key_attack_v3.3' into 'release/v3.3'
Bluedroid: Fixes for some Bluetooth vulnerabilities. (v3.3)

See merge request espressif/esp-idf!11767
2020-12-28 11:41:19 +08:00
Chinmay Chhajed
0b84a1242e Bluedroid: Fixes for some vulnerabilities.
This commit fixes 'Impersonation in Passkey entry protocol'
(CVE-2020-26558) and suggests fixes for other vulnerabilites like
'Impersonation in the Pin Pairing Protocol' (CVE-2020-26555) and
'Authentication of the LE Legacy Pairing Protocol'

CVE-2020-26558 can be easily implemented if the peer device can
impersonate our public key. This commit adds a check by comparing our
and received public key and returns failed pairing if keys are same.

This commit also adds comments suggesting to use secure connection when
supported by all devices.
2020-12-25 16:03:33 +05:30
Jiang Jiang Jian
cc8525f630 Merge branch 'bugfix/backport_v3.3_esp_tls_closing_fd0' into 'release/v3.3'
Bugfix/backport v3.3 esp tls closing fd0

See merge request espressif/esp-idf!11055
2020-12-24 16:05:11 +08:00
Anton Maklakov
0713c7dbb4 Merge branch 'feature/ci_relative_submodules_v3.3' into 'release/v3.3'
CI: relative submodules (v3.3)

See merge request espressif/esp-idf!11735
2020-12-24 11:13:06 +08:00
XieWenxiang
b0719d3fc6 component/bt: fix Blufi sends longer customer data will will lead congested 2020-12-24 09:37:35 +08:00
Jiang Jiang Jian
8ff6e2eee5 Merge branch 'bugfix/wps_multiple_ap_creds_v3.3' into 'release/v3.3'
Bugfix/wps multiple ap creds v3.3 (backport v3.3)

See merge request espressif/esp-idf!11727
2020-12-23 23:33:46 +08:00
Anton Maklakov
6dfb8a5fc3 Merge branch 'bugfix/mdns_example_test_exit_v3.3' into 'release/v3.3'
ci: Fixed mdns example test to correctly exit helper thread

See merge request espressif/esp-idf!11676
2020-12-23 21:50:18 +08:00
Jiang Jiang Jian
1a6530156d Merge branch 'bugfix/fix_spp_vfs_dynamic_memory_bugs_v3.3' into 'release/v3.3'
component_bt/fix spp vfs demo crash when use dynamic memory[backport v3.3]

See merge request espressif/esp-idf!11725
2020-12-23 21:39:51 +08:00
Anton Maklakov
5487864df9 tools: Add a script for switching to real submodules in forks 2020-12-23 17:41:33 +07:00
Anton Maklakov
d7d8857fc5 ci: Use relative submodule URLs over IDF. Correct CI accordindly
Clean up `before_script`s

    Update `check_submodule_sync`

    Remove tools/ci/mirror* stuff
2020-12-23 17:41:33 +07:00
Anton Maklakov
69cd53dbd9 ci: Remove unused IS_PRIVATE and IS_PUBLIC environment 2020-12-23 16:52:57 +07:00
xutao
9c252b8f22 bugfix: backport esp_tls_closing_fd0 to v3.3 2020-12-23 09:51:48 +00:00
xiehang
56416dddda esp_wifi: Updata WiFi lib
1. Fix handling of multiple AP credentials in WPS
2. Fix esp_wifi log levels
2020-12-23 15:48:06 +08:00
xiehang
de0d1fffcd esp_wifi: Fix handling of multiple AP credentials in WPS
WPS can send multiple AP credentials, while existing implementation
will only use the first credentials which could be for the 5G band.
Fix this by passing these credentials to the App and attempting
to connect using each of those. Older Apps will remain compatible
without breaking WPS, but the issue will remain.
2020-12-23 15:05:28 +08:00
liqigan
46fa26b56f fix spp vfs demo crash when use dynamic memory 2020-12-23 14:44:48 +08:00
Jiang Jiang Jian
896180ec73 Merge branch 'bugfix/collection_bugfix_backport_for_3_3' into 'release/v3.3'
Bugfix/collection bugfix backport for 3 3

See merge request espressif/esp-idf!11708
2020-12-23 11:23:14 +08:00
Jiang Jiang Jian
1e747edd7d Merge branch 'bugfix/blufi_config_potential_double_free_v3.3' into 'release/v3.3'
component/bt: Fix a potential double free error.

See merge request espressif/esp-idf!11716
2020-12-23 11:22:40 +08:00
wangcheng
929ad413cb component/bt: Fix a potential double free error. 2020-12-22 19:09:15 +08:00
weitianhua
282d234ea5 components/bt: Fixed the problem of early release of pointer(p_ccb) in funcion 2020-12-22 15:12:55 +08:00
weitianhua
86de405578 Collection of bugfix backport for release/v3.3 2020-12-22 15:08:59 +08:00
Jiang Jiang Jian
3e6dd18075 Merge branch 'bugfix/revert_tx_optimization_v3.3' into 'release/v3.3'
esp_wifi: revert tx optimization(v3.3)

See merge request espressif/esp-idf!11688
2020-12-21 23:19:08 +08:00
Jiang Jiang Jian
1b4a46a28f Merge branch 'bugfix/ipv6_check_ns_na_packet_length' into 'release/v3.3'
lw-ip:bugfix for ipv6 check ns na packet length

See merge request espressif/esp-idf!11680
2020-12-21 23:18:27 +08:00
zhangyanjiao
d5f9d1f748 Revert "esp_wifi: optimize WiFi TX performance"
This reverts commit 7b245e59c4.
2020-12-21 15:53:19 +08:00
Michael (XIAO Xufeng)
ed420aacc0 Merge branch 'bugfix/WEL_DISABLE_V3.3' into 'release/v3.3'
spi_flash: ensure wel is diabled when flash is not being operated

See merge request espressif/esp-idf!11653
2020-12-21 15:48:51 +08:00
xueyunfei
ee1f925dff bugfix for ipv6 check ns na packet length 2020-12-21 10:54:24 +08:00
Jiang Jiang Jian
0a80c654e9 Merge branch 'bugfix/decouple_wifi_bt_with_coex_v3.3' into 'release/v3.3'
esp_wifi: decouple Wi-Fi and bluetooth with coexist to reduce binary file size(backport v3.3)

See merge request espressif/esp-idf!11644
2020-12-20 16:26:40 +08:00
David Cermak
86dbff4297 ci: Fixed mdns example test to correctly exit helper thread 2020-12-18 16:54:04 +01:00
Ivan Grokhotkov
857e2f0943 Merge branch 'bugfix/docker_gdb_python_v3.3' into 'release/v3.3'
tools/docker: Add libpython2.7 in order to satisfy GDB dependencies (backport v3.3)

See merge request espressif/esp-idf!10310
2020-12-17 23:16:26 +08:00
Angus Gratton
a461605003 efuse: Add ESP32 V3 'disable Download Mode' functionality 2020-12-17 17:44:21 +11:00
Xia Xiaotian
3cf6f36765 esp_wifi: decouple Wi-Fi and bluetooth with coexist to reduce binary file size 2020-12-17 14:21:59 +08:00
Cao Sen Miao
6d63c59ddb spi_flash: ensure sel is diabled when flash is not being operated 2020-12-17 10:58:49 +08:00
Martin Stejskal
ace26dda76 tools/docker: Add libpython2.7 in order to satisfy GDB dependencies
It was not possible to run xtensa-esp32-elf-gdb from container due to
missing libpython2.7 library.

Merges https://github.com/espressif/esp-idf/pull/5817
Closes https://github.com/espressif/esp-idf/issues/5284
2020-12-16 02:50:32 +00:00
Ivan Grokhotkov
3ca579bc23 Merge branch 'test/disable_twai_example_ci_v3.3' into 'release/v3.3'
Temporarily disable TWAI network example test (backport v3.3)

See merge request espressif/esp-idf!11564
2020-12-16 04:22:50 +08:00
Mahavir Jain
fb6fb2df3b Merge branch 'bugfix/redirection_v3.3' into 'release/v3.3'
esp_http_client: Skip check for redirection counter if status code is success, fix issue with digest auth, configurable user agent string. (v3.3)

See merge request espressif/esp-idf!11600
2020-12-14 20:20:20 +08:00
Jiang Jiang Jian
f33381b8e8 Merge branch 'fixbug/baidu_tcp_recv_assert_for_3.3' into 'release/v3.3'
lw-ip:fix bug for tcp recv assert(backport 3.3)

See merge request espressif/esp-idf!11289
2020-12-14 19:00:45 +08:00
Scott Shell
6d104d49b4 Make the UserAgent string in esp-http-client configurable
Signed-off-by: Shubham Kulkarni <shubham.kulkarni@espressif.com>

Merges https://github.com/espressif/esp-idf/pull/6044
2020-12-14 14:44:40 +05:30
Shubham Kulkarni
193fcc70dd http_auth.c: Fix crash when opaque field is not present in challenge string
Closes: https://github.com/espressif/esp-idf/issues/5888
2020-12-14 14:44:33 +05:30
Shubham Kulkarni
35d0b93ecf esp_http_client: Skip check for redirection counter if status code is success.
Set disable_auto_redirect in esp_http_client example to validate this condition in CI
2020-12-14 14:44:22 +05:30
Angus Gratton
6f3478dae0 Merge branch 'bugfix/esptool_version_v3.3' into 'release/v3.3'
esptool: Update esptool to latest v2.x version (backport v3.3)

See merge request espressif/esp-idf!11585
2020-12-14 15:14:45 +08:00
Jiang Jiang Jian
4767568837 Merge branch 'nimble/fix_misc_coverity_issue_v3.3' into 'release/v3.3'
Nimble: Fix misc issues in NimBLE NVS, `ble_eddystone`, recursive call and  L2CAP CoC (v3.3)

See merge request espressif/esp-idf!11393
2020-12-12 19:21:41 +08:00
Jiang Jiang Jian
c2f5fc0c88 Merge branch 'optimize/ble_mesh_provision_dev_uuid_check_v3.3' into 'release/v3.3'
ble_mesh: stack: Need uuid when adding device for provisioning (v3.3)

See merge request espressif/esp-idf!11582
2020-12-12 17:57:37 +08:00
Jiang Jiang Jian
e38adae62b Merge branch 'backport/need_commit_to_v3.3' into 'release/v3.3'
components/bt: Backport some fixes to v3.3

See merge request espressif/esp-idf!11470
2020-12-12 17:53:20 +08:00
radim.karnis
54ee2f2ebc Changed esptool version to latest v2.x 2020-12-11 13:29:19 +01:00
lly
60ebc7f8e3 ble_mesh: ci: Add PB-ADV & PB-GATT sdkconfig test files 2020-12-11 20:12:45 +08:00
lly
bff66d7653 ble_mesh: stack: Need uuid when adding device for provisioning 2020-12-11 20:10:57 +08:00
Krzysztof Budzynski
17ca685a15 Merge branch 'feature/python2-deprecation-warn_v3.3' into 'release/v3.3'
Tools: Add Python 2 deprecation warning (v3.3)

See merge request espressif/esp-idf!11550
2020-12-11 16:31:18 +08:00
baohongde
a36ed1c60b components/bt: insert the llcp packet to the top of the tx_prog linked list 2020-12-11 11:28:12 +08:00
wangcheng
04d28bdf40 components/bt: Fix ble disconnect issue in coex mode 2020-12-11 11:28:12 +08:00
baohongde
2711f35552 components/bt: Fix waking up fail while sleeping 2020-12-11 11:28:12 +08:00
baohongde
fcbaa63c4e components/bt: Make sleep avaliable in hli(for future use) 2020-12-11 11:27:35 +08:00
baohongde
809a1ff74c components/coex: Some bugfix about ble dynamic prio
Rewrite ble dynamic prio to fix ble disconn in conn_param_update/channel_map_update
Rewrite ble dynamic prio in connection establishment
Fix ble dynamic prio with latency
Fix status bit set error when conn fail
2020-12-11 11:27:35 +08:00
wangcheng
b8f061334a components/bt: backport requires commit to release v3.3 2020-12-11 11:27:35 +08:00
wangcheng
c82ba10521 components/bt: fixed memory damage caused by bluetooth memory release 2020-12-11 11:27:35 +08:00
wangcheng
83ee0eef9e Fix BT controller dead issue when clkn overflow 2020-12-11 11:27:35 +08:00
wangcheng
ddab5b2a2a component/bt: Fixed the watchdog timeout of btu task during multi-connection 2020-12-11 11:27:35 +08:00
wangcheng
3622e29465 components/bt: Fixed the state not synchronized between controller and host when disconnected. 2020-12-11 11:27:35 +08:00
wangcheng
510110228c btdm: Add comments to clarify the two different device names of GAP and ADV in the ble_spp_server_demo example, as the old example might confuse users. 2020-12-11 11:27:35 +08:00
wangmengyang
8744b8266b component/bt: fall back to main XTAL as Bluetooth sleep clock when EXT 32K CRYS is configured but not detected 2020-12-11 11:27:35 +08:00
Jiang Jiang Jian
ab41d84a2f Merge branch 'bugfix/fix_spp_read_flow_control_v3.3' into 'release/v3.3'
component_bt/fix spp flow control and vfs write[backport 3.3]

See merge request espressif/esp-idf!11471
2020-12-10 22:50:56 +08:00
Jiang Jiang Jian
720a2a113e Merge branch 'bugfix/fix_some_wifi_bugs_1204_v3.3' into 'release/v3.3'
Bugfix/fix some wifi bugs 1204 v3.3

See merge request espressif/esp-idf!11504
2020-12-10 22:48:24 +08:00
Darian Leung
fca496b4b6 twai: Temporarily disable network example test
Disabling network example test due to issue with synchronizing the
start of each DUT
2020-12-10 21:44:21 +08:00
daiziyan
228bec2371 add CN translation for adding python2 deprecation warning(MR 11115) 2020-12-10 14:04:57 +01:00
xiehang
65a1e1269f esp_wifi: Update wifi lib
1. Optimize WiFi log
2. Optimize 4way handshake failure time
3. Fix eapol frames encryption during reauth
4. Set softap beacon DTIM count according to TSF timer
5. Remove wifi tx buffer limits
6. Remove coexist warnings in ESP_WIFI_MESH
7. Update some APIs descriptions, tables format and typos
8. Fix wifi tx all
2020-12-10 02:55:22 +00:00
xiehang
7b245e59c4 esp_wifi: optimize WiFi TX performance 2020-12-10 02:55:22 +00:00
xiehang
42061dded1 esp_wifi: add limitation for setting maximum WiFi TX power
Limit the WiFi TX power range to 10dBm ~ 20.5 dBm
2020-12-10 02:55:22 +00:00
dongyou
1e519370dd Add documentation to avoid using WiFi modem sleep for WiFi/BT coexistence
Remove description of unusable API esp_wifi_restart()
Update esp_now_fetch_peer discription
Update table format prblm for esp_wifi_set_max_tx_power()
Update description for ssid and password
2020-12-10 02:55:22 +00:00
xiehang
022192411e esp_wifi: remove wifi tx buffer limits 2020-12-10 02:55:22 +00:00
xiehang
afad32da9e esp_wifi: set softap beacon DTIM count according to TSF timer 2020-12-10 02:55:22 +00:00
xiehang
77b3ad8385 eps_wifi: Optimize WiFi debug log
1. Add esp_wifi_statis_dump()
2. Optimize WiFi related debug log
2020-12-10 02:55:22 +00:00
liqigan
7a52ed2f15 fix spp flow control and vfs write 2020-12-10 10:44:44 +08:00
martin.gano
7af26fa6d6 Tools: add Python 2 deprecation warning 2020-12-10 00:12:09 +01:00
Jiang Jiang Jian
0416586dcc Merge branch 'bugfix/add_protection_for_spp_api_3_3' into 'release/v3.3'
componnet_bt:/ Add protection for btc and some comment correction [backport v3.3]

See merge request espressif/esp-idf!11455
2020-12-09 22:10:26 +08:00
Michael (XIAO Xufeng)
a2142eae7e Merge branch 'bugfix/phy_xpd_v3.3' into 'release/v3.3'
wifi: add set_xpd_sar override(backport v3.3)

See merge request espressif/esp-idf!11491
2020-12-09 10:49:55 +08:00
Island
fca750b4ea Merge branch 'feature/btdm_support_some_ble_new_features_v3.3' into 'release/v3.3'
components/bt: backport some new features for Bluedroid BLE(release v3.3)

See merge request espressif/esp-idf!11464
2020-12-09 10:28:39 +08:00
Krzysztof Budzynski
6a1cf51938 Merge branch 'bugfix/sleep_comments_v3.3' into 'release/v3.3'
doc: Specify that sleep wakeup source restrictions apply to all current ESP32 revisions (v3.3)

See merge request espressif/esp-idf!8569
2020-12-08 17:42:13 +08:00
Cao Sen Miao
5490dbcaf7 adc_i2s: solve the i2s_adc issue when using wifi 2020-12-08 16:15:03 +08:00
Angus Gratton
debd4ad723 doc: Specify that sleep wakeup source restrictions apply to all current ESP32 revisions
Closes https://github.com/espressif/esp-idf/issues/4681

Discussion https://esp32.com/viewtopic.php?f=13&t=15145
2020-12-08 18:00:11 +11:00
Jiang Jiang Jian
a7ec2e6503 Merge branch 'bugfix/add_disconn_req_action_when_no_link_3_3' into 'release/v3.3'
component_bt/bugfix: add_disconn_req_action_when_no_link [backport v3.3]

See merge request espressif/esp-idf!11456
2020-12-07 12:11:47 +08:00
Michael (XIAO Xufeng)
24b910916a Merge branch 'bugfix/can_backport_accumulated_fixes_v3.3' into 'release/v3.3'
CAN backport accumulated fixes (backport v3.3)

See merge request espressif/esp-idf!11463
2020-12-04 23:57:09 +08:00
Darian Leung
fcabc257a5 CAN: ISR runs when cache is disabled
This commit adds the feature where the CAN ISR will continue to
run even if the cache is disabled. Whilst cache is disabled, any
received messages will go into the RX queue, and any pending TX
messages in the TX queue will be transmitted. This feature should
be enabled using the CONFIG_CAN_ISR_IN_IRAM option.
2020-12-04 17:58:02 +08:00
Jiang Jiang Jian
d96e1442b3 Merge branch 'bugfix/update_toolchain_5.2.0_psram_final_v3.3' into 'release/v3.3'
esp_wifi: Update WiFi toolchain to 1.22.0-97-gc752ad5 (backport v3.3)

See merge request espressif/esp-idf!11103
2020-12-04 11:57:30 +08:00
xiewenxiang
a15ce322b5 component/bt: support BLE Read Attribute value by UUID 2020-12-03 21:04:21 +08:00
xiewenxiang
dfefe7bfd7 component/bt: refactor ble random address setting 2020-12-03 20:44:58 +08:00
xiewenxiang
ea678c3fd1 component/bt: support BLE Application Layer Encryption key size check 2020-12-03 20:36:19 +08:00
xiewenxiang
456d3461a1 component/bt: support BLE Authorization 2020-12-03 20:25:47 +08:00
xiewenxiang
1896249485 component/bt: fix incorrect encryption flag setting 2020-12-03 20:07:05 +08:00
weitianhua
3e3445811a Correct some debug log for BT Stack & Add protection for rfcomm close API in SPP 2020-12-03 19:29:20 +08:00
weitianhua
810e3b7d79 Separating AVRC & A2DP
1. Remove uneccessary macro
2. Add bda_addr for esp_bt_a2dp_disconn_req API
3. Rewrite a2dp clean_up function
2020-12-03 19:05:24 +08:00
Jiang Jiang Jian
b4c0751692 Merge branch 'bugfix/fix_spp_dynamic_memory_bugs' into 'release/v3.3'
componet_bt/fix SPP init deynamic memory bugs

See merge request espressif/esp-idf!11435
2020-12-03 16:53:52 +08:00
xiehang
d037923265 esp_wifi: Update WiFi toolchain to 1.22.0-97-gc752ad5 2020-12-03 15:54:55 +08:00
Darian Leung
3574ca6156 can: Fix critical section ESP_LOG functions
This commit removes any function calls within
the CAN driver that result in a call to ESP_LOG
whilst inside a critical section.

These function calls are either moved outside
critical sections (e.g., intr_alloc and gpio
functions), or substituted (e.g., assert()).
2020-12-02 21:50:38 +08:00
Darian Leung
35511d0e87 can: Fix semaphore take in critical section
This commit fixes can_reconfigure_alerts() which
could lead to a call to xSemaphoreTake() whilst
inside a critical section.
2020-12-02 21:41:47 +08:00
Darian Leung
540b401e95 CAN: Fix size of RX msg count field on the esp32
This commit fixes the size of the RX message count register field
on the esp32.
2020-12-02 21:40:17 +08:00
Jiang Jiang Jian
aee3303084 Merge branch 'bugfix/fix_some_wifi_bugs_1202_v3.3' into 'release/v3.3'
esp_wifi: fix some wifi bugs 1202 (backport v3.3)

See merge request espressif/esp-idf!11437
2020-12-02 20:06:51 +08:00
Hrudaynath Dhabe
e456bfedd7 wpa_supplicant: Fix configurable debug log feature's warning issue 2020-12-02 17:00:58 +08:00
GOPTIONS\pfrost
b4b51f5a5e Reduce log level of hexdumps to verbose
Revert "Reduce log level of hexdumps to verbose"

Add a menuconfig option to enable or disable the logging in wpa_supplicant

Clarify help message
2020-12-02 16:53:49 +08:00
ronghulin
6d82b0a749 bugfix: fix TCP timer interval 2020-12-02 16:53:49 +08:00
ronghulin
d77991744f fix TCP retransmission interval 2020-12-02 16:53:49 +08:00
Jan-Hendrik Frintrop
e6bc6951af Fixed links to example directories for fast_scan and scan
Signed-off-by: ronghulin <ronghulin@espressif.com>

https://github.com/espressif/esp-idf/pull/5186
2020-12-02 16:53:49 +08:00
dongyou
f70a819761 WIFI: Iperf example's parameter opt was uninitialized, may leads setsockoption invalide if it equal to 0 2020-12-02 16:53:49 +08:00
Angus Gratton
42f4fa4de6 Merge branch 'bugfix/blecent_example_test_v3.3' into 'release/v3.3'
Fix CI blecent example test (backport v3.3)

See merge request espressif/esp-idf!11320
2020-12-02 15:44:39 +08:00
liqigan
25774f41db fix SPP init deynamic memory bugs 2020-12-02 12:24:05 +08:00
Shivani Tipnis
cbabe5bacc ci: Fix blecent example test
(cherry picked from commit fc146a98e4)
2020-11-30 22:49:31 +05:30
Artem Godlevskyi
7b030c3943 Added missing MYNEWT_VAL_BLE_L2CAP_COC_MPS definition
Signed-off-by: Prasad Alatkar <prasad.alatkar@espressif.com>

Merges https://github.com/espressif/esp-idf/pull/5825
2020-11-30 18:51:13 +05:30
Prasad Alatkar
5900f9601e NimBLE: Fix misc coverity issues in NimBLE host
- NimBLE NVS : Additional check to account for NVS operation failure
- NimBLE host: Fix minor bug in ble_eddystone_set_adv_data_gen
- NimBLE host: remove recursive call, upstream PR: https://github.com/apache/mynewt-nimble/pull/857
2020-11-30 18:50:57 +05:30
Angus Gratton
c33fc7821a Merge branch 'ci/fix_annotated_tag_check_v3.3' into 'release/v3.3'
ci: Fix annotated tag check (v3.3)

See merge request espressif/esp-idf!11334
2020-11-24 06:32:17 +08:00
Jiang Jiang Jian
31f5334ae1 Merge branch 'bugfix/btdm_spp_null_ptr_with_dynamic_memory_v3.3' into 'release/v3.3'
components/bt: Fix SPP using NULL point with dynamic memory

See merge request espressif/esp-idf!11330
2020-11-23 15:49:20 +08:00
Angus Gratton
7e2c75fae7 ci: Fix annotated tag check
Regression in 1612f84
2020-11-23 17:33:52 +11:00
liqigan
b9bf3f7cc9 components/bt: Fix SPP using NULL point with dynamic memory 2020-11-23 11:48:34 +08:00
Jiang Jiang Jian
fea21b8e44 Merge branch 'bugfix/backport_v3.3_fix_pthread_priority_inheritance' into 'release/v3.3'
pthread: fix the priority inheritance (backport v3.3)

See merge request espressif/esp-idf!11293
2020-11-21 17:51:42 +08:00
Jiang Jiang Jian
025b8c3f21 Merge branch 'feature/mqtt_submodule_update_23c8e1ec_v3.3' into 'release/v3.3'
MQTT: Update submodule reference to da850b (config, error flags, minor fixes) (v3.3)

See merge request espressif/esp-idf!11315
2020-11-21 17:26:18 +08:00
Jiang Jiang Jian
e8a0ecddd8 Merge branch 'bugfix/att_buffer_count_fixed_v3.3' into 'release/v3.3'
Bugfix/att buffer count fixed v3.3

See merge request espressif/esp-idf!9164
2020-11-21 17:05:47 +08:00
Jiang Jiang Jian
dc4856e292 Merge branch 'bugfix/backport_v3.3_fix_websocket_issue' into 'release/v3.3'
websocket_client: fix some issues for websocket client(backport v3.3)

See merge request espressif/esp-idf!11295
2020-11-21 16:20:28 +08:00
David Čermák
a19f58355a Merge branch 'bugfix/fix_transport_ssl_blocking_v3.3' into 'release/v3.3'
transport_ssl: Fix a bug in transport_ssl (backport v3.3)

See merge request espressif/esp-idf!11294
2020-11-20 17:43:41 +08:00
David Cermak
e846274e59 MQTT: Update submodule reference: config, error handle, minor fixes
Updates esp-mqtt reference to include fixes below related mainly to:
* configuration update (disable keepalive, network timeout)
* minor fixes (size_t for all sizes, unbalanced lock, api for
  outbox-size)
* extended error handle to include socket's errno

Closes https://github.com/espressif/esp-idf/issues/5906

Config: Added config value to disable keepalive mechanism
esp-mqtt commit: 8562437c8a
Related https://github.com/espressif/esp-mqtt/issues/179

Added esp_mqtt_client_get_outbox_size API
esp-mqtt commit: 0a1d9d0300
Related https://github.com/espressif/esp-mqtt/pull/178

mqtt_outbox: Removed unused retry_count field from outbox_item_t
esp-mqtt commit: 673086e13a

config: Fixed typo for configuring OUTBOX_EXPIRED_TIMEOUT_MS
esp-mqtt commit: 259baaec96

Fixed missing MQTT_API_UNLOCK in esp_mqtt_client_stop error path
esp-mqtt commit: 845c2a3a1e
Related https://github.com/espressif/esp-mqtt/issues/173
Related https://github.com/espressif/esp-mqtt/pull/174

Extended mqtt error handle to capture transport's socket errno (IDF
v4.3+)
esp-mqtt commit: 23c8e1ecf5

Config: Added configuration value to set network timeout
esp-mqtt commit: a03228ac46
Related https://github.com/espressif/esp-mqtt/pull/166

Used size_t for all lengths to allow for other architectures
esp-mqtt commit: b9db8d9020
2020-11-20 10:25:59 +01:00
xutao
9da4c47e74 websocket_client: fix some issues for websocket client(backport v3.3) 2020-11-19 15:54:36 +08:00
xutao
cf4eba2f5d pthread: fix the priority inheritance (backport v3.3) 2020-11-19 15:30:49 +08:00
xueyunfei
858c7b122e fix bug for tcp recv assert 2020-11-19 11:27:14 +08:00
Island
2c6eb0bd74 Merge branch 'optimize/ble_mesh_gattc_conn_param_v3.3' into 'release/v3.3'
ble_mesh: stack: Update connection parameters used by Central (v3.3)

See merge request espressif/esp-idf!11285
2020-11-19 11:23:21 +08:00
Island
adcab65d7d Merge branch 'feat/ble_mesh_node_local_data_func_v3.3' into 'release/v3.3'
ble_mesh: stack: Add node local netkey/appkey func (v3.3)

See merge request espressif/esp-idf!11282
2020-11-19 11:23:12 +08:00
lly
1a36790014 ble_mesh: stack: Update connection interval to 15ms 2020-11-18 20:25:26 +08:00
lly
a9ac3e87db ble_mesh: stack: Update connection parameters used by Central 2020-11-18 20:25:14 +08:00
lly
d2a99ec816 ble_mesh: stack: Fix wrong declaration of node bind AppKey func 2020-11-18 20:16:25 +08:00
lly
42bdf7ecc2 ble_mesh: stack: Add node local netkey/appkey func 2020-11-18 20:16:06 +08:00
Island
f62e92c35f Merge branch 'optimize/ble_mesh_reduce_code_size_v3.3' into 'release/v3.3'
ble_mesh: stack: Optimization introduced to reduce code size (v3.3)

See merge request espressif/esp-idf!11250
2020-11-18 20:08:44 +08:00
Mahavir Jain
77119a793e Merge branch 'fix/protocomm_simple_ble_v3.3' into 'release/v3.3'
Protocomm/simple_ble: Fix gatt table map size to number of handles received  (v3.3)

See merge request espressif/esp-idf!11268
2020-11-18 12:14:35 +08:00
Prasad Alatkar
c8354f0231 Protocomm/simple_ble: Make gatt table map size equal to number of handles received (v3.3)
- Fixes memcpy failure observed while adding 2 or more endpoints in
  wifi_provisioning.

 Closes IDF-2250

 Closes https://github.com/espressif/esp-idf/issues/6121
2020-11-17 16:27:29 +05:30
lly
c6f809ec03 ble_mesh: example: Update sdkconfig test files for disabling Health Server model 2020-11-17 11:40:52 +08:00
lly
2c66a82434 ble_mesh: stack: Add a Kconfig option to make Health Server model optional 2020-11-17 11:40:31 +08:00
lly
f1def7f24e ble_mesh: stack: Split model Kconfig menu into foundation and others 2020-11-17 11:39:07 +08:00
lly
aecb897fb8 ble_mesh: example: Fix fast provisioning compile error 2020-11-17 11:37:32 +08:00
lly
10a396d17c ble_mesh: ci: Add disabling mesh model sdkconfig test files 2020-11-17 11:36:37 +08:00
lly
d9ffe54991 ble_mesh: stack: Add Kconfig options to make server models optional 2020-11-17 11:33:10 +08:00
lly
c90def0992 ble_mesh: stack: Use Kconfig option to make client models optional 2020-11-17 11:30:15 +08:00
lly
4c7a021acd ble_mesh: stack: Make some internal static functions inline 2020-11-17 11:29:28 +08:00
lly
841a015d6c ble_mesh: ci: Add disabling mesh deinit sdkconfig test files 2020-11-17 11:28:54 +08:00
lly
09ac1b596d ble_mesh: stack: Add a Kconfig option to make deinit optional 2020-11-17 11:19:49 +08:00
lly
bc4ebea32c ble_mesh: stack: Introduce a new header file mesh_config.h 2020-11-17 11:18:14 +08:00
Jiang Jiang Jian
68b237fe53 Merge branch 'bugfix/customer_baidu_psram_stack_backtrace_v3.3' into 'release/v3.3'
backport v3.3: added psram stack check in backtrace

See merge request espressif/esp-idf!8460
2020-11-12 21:01:12 +08:00
Angus Gratton
c823b14802 Merge branch 'bugfix/doc_remove_cmake_defconfig_v3.3' into 'release/v3.3'
Remove defconfig from idf.py (v3.3)

See merge request espressif/esp-idf!10086
2020-11-11 10:44:17 +08:00
Angus Gratton
7a08ec735f Merge branch 'bugfix/ci_use_local_mirror_for_getting_submodules_v3.3' into 'release/v3.3'
ci: Use local git mirror for getting submodules v3.3

See merge request espressif/esp-idf!10383
2020-11-11 08:05:52 +08:00
Island
53bbc94ced Merge branch 'bugfix/fix_node_test_func_not_set_role_v3.3' into 'release/v3.3'
ble_mesh: test: Fix node test function not update role flag (v3.3)

See merge request espressif/esp-idf!11043
2020-11-10 16:44:18 +08:00
lly
330f39ee23 ble_mesh: test: Fix node test function not update role flag 2020-11-09 02:42:36 +00:00
Jiang Jiang Jian
44ec7972bd Merge branch 'bugfix/fix_16mbit_psram_id_read_error_v3.3' into 'release/v3.3'
psram: fix 16mbit psram id read error (backport v3.3)

See merge request espressif/esp-idf!9441
2020-11-05 23:02:09 +08:00
Michael (XIAO Xufeng)
49ace4968f spiram: fix the read id failure
The issue is caused by:
1. The disable_qio_mode inside read_id may have side effects.
2. read_id twice may have side effects.

Fix this issue by moving disable_qio_mode out of read_id and only do it
once before read_id. And retry read_id only when the first one is
failed.

Issue introduced in 3ecbb59c15.
2020-11-05 06:11:29 +00:00
chenjianqiang
1903c05d53 psram: fix 16mbit psram id read error 2020-11-05 06:11:29 +00:00
Jiang Jiang Jian
5d42f3075e Merge branch 'feature/toolchain_gcc52_revert_PSRAM_fixes_2020r3_v3.3' into 'release/v3.3'
Update toolchain to 1.22.0-97-gc752ad5 (v3.3)

See merge request espressif/esp-idf!10348
2020-11-05 14:08:47 +08:00
Jiang Jiang Jian
8667591004 Merge branch 'bugfix/lwip_netdb_cpp_guards_v3.3' into 'release/v3.3'
lw-IP: Changed to C linkage in netdb.h for fixing bug when using mixed C/C++ code (v3.3)

See merge request espressif/esp-idf!11092
2020-11-05 14:00:42 +08:00
Jiang Jiang Jian
e0a8eb60dd Merge branch 'feature/lwip_tcp_isn_hook_v3.3' into 'release/v3.3'
lw-ip: enable TCP ISN hook (v3.3)

See merge request espressif/esp-idf!11065
2020-11-05 12:10:59 +08:00
Jiang Jiang Jian
25781e7c88 Merge branch 'mesh/bugfix_1023_backport_v3.3' into 'release/v3.3'
esp_wifi_mesh: update wifi mesh libs(Backport v3.3)

See merge request espressif/esp-idf!11081
2020-11-05 12:08:19 +08:00
Anton Maklakov
d429fd7031 ci: Use a local mirror for getting submodules 2020-11-04 10:19:57 +07:00
Anton Maklakov
1f78540cbb windows: Update the prebuilt MSYS2 environment to use then new toolchain
No other changes in the environment contents.
2020-11-04 10:08:00 +07:00
Ivan Grokhotkov
843889fd03 pthread: add dummy implementation of pthread_setcancelstate
Used by new versions of newlib in stdio functions.
2020-11-04 10:08:00 +07:00
Anton Maklakov
873aca4c0d newlib: Build psram libc with the new toolchain
Generated from commit 02c81fb7 in the newlib script repo
2020-11-04 10:08:00 +07:00
Anton Maklakov
81da2bae2a Update toolchain to 1.22.0-97-gc752ad5
Revert a part of PSRAM workaround because of regression
    Add a C++ locale fix for multithreading
2020-11-04 10:07:58 +07:00
Ivan Grokhotkov
d8456c621e Merge branch 'bugfix/ci_clone_https_v3.3' into 'release/v3.3'
ci: use HTTPS for cloning in IT jobs (v3.3)

See merge request espressif/esp-idf!11098
2020-11-03 21:45:37 +08:00
Ivan Grokhotkov
cc8f9cc539 ci: use HTTPS for cloning in IT jobs 2020-11-03 19:33:21 +08:00
mathiasbredholt
737fce72cc lwip: Changed to C linkage for fixing bug when using mixed C/C++ code
Merges https://github.com/espressif/esp-idf/pull/5900
2020-11-03 08:43:09 +01:00
shenjun
a15f77e1c7 esp_wifi_mesh: update wifi mesh libs
1. Fix FIX-ROOT does not reconnect to router when disconnect reason is too many
2. Add API esp_mesh_print_scan_result
3. Modify not to reset mesh_xonseq of self and children when flush_upstream_packets
4. Fix not switch to a parent candidate which has the same layer and assoc as current parent
5. Fix not arm parent monitor when a parent candidate is cleared without sending an event to mesh layer
6. Fix the new voted root does not reconnect to router if rssi is weak
2020-11-03 15:23:28 +08:00
Mahavir Jain
652f43d9ee esp_netif: initialize TCP ISN hook if enabled in configuration 2020-11-02 16:01:58 +05:30
Mahavir Jain
516ca4698f lwip: provide configuration option to enable TCP ISN hook 2020-11-02 16:01:53 +05:30
Mahavir Jain
59112bbd76 tcp_isn: use ROM APIs for md5 calculations 2020-11-02 14:32:58 +05:30
Mahavir Jain
a4ad6f7547 lwip: add custom TCP ISN hook implementation
Source:
https://git.savannah.nongnu.org/cgit/lwip/lwip-contrib.git/
2020-10-30 16:42:08 +05:30
Angus Gratton
71af965514 Merge branch 'bugfix/err_to_name_paths_windows_v3.3' into 'release/v3.3'
tools: fix path handling errors in gen_esp_err_to_name.py for Windows (v3.3)

See merge request espressif/esp-idf!10898
2020-10-30 15:12:42 +08:00
Angus Gratton
1960d3c700 Merge branch 'bugfix/ldgen_section_windows_line_ending_v3.3' into 'release/v3.3'
tools/ldgen: Fix parsing of section names on Windows (v3.3)

See merge request espressif/esp-idf!11037
2020-10-30 15:12:05 +08:00
Roland Dobai
3280f45259 tools/ldgen: Fix parsing of sections names on Windows 2020-10-29 08:34:57 +01:00
He Yin Ling
66d3783c89 Merge branch 'bugfix/relative_import_error' into 'release/v3.3'
bugfix: import error in example tests

See merge request espressif/esp-idf!11003
2020-10-29 10:42:51 +08:00
Jiang Jiang Jian
ec4124676f Merge branch 'bugfix/bredr_bugfix_release_for_qa_dummy_disconnect_3_3' into 'release/v3.3'
Bugfix/bredr bugfix release for qa dummy disconnect 3.3

See merge request espressif/esp-idf!10649
2020-10-28 21:26:29 +08:00
Jiang Jiang Jian
3616ae4da4 Merge branch 'bugfix/add_clear_bond_complete_evt_3_3' into 'release/v3.3'
componenet_bt/bugfix: add remove bond device complete event 3.3

See merge request espressif/esp-idf!10658
2020-10-28 16:58:49 +08:00
Chen Yu Dong
312f100551 bugfix: import error in example tests
relative import error in lib_ble_client
import Queue error in blehr_test
import http server error in ota tests
2020-10-28 14:19:30 +08:00
Jiang Jiang Jian
39f26cce95 Merge branch 'bugfix/fix_dhcp_renew_fail_for_3.3' into 'release/v3.3'
lw-ip: Fix dhcp renew fail in t1 and will renew ip in t2 every 1s

See merge request espressif/esp-idf!10986
2020-10-28 11:21:46 +08:00
Jiang Jiang Jian
4e71047a2a Merge branch 'bugfix/fix_bredr_read_rssi_delta_v3.3' into 'release/v3.3'
Bugfix/Fix Read Rssi Delta Bug in Bredr [backport v3.3]

See merge request espressif/esp-idf!10810
2020-10-26 21:44:39 +08:00
Jiang Jiang Jian
e5cf7bc370 Merge branch 'bugfix/fix_tsf_bug_v3.3' into 'release/v3.3'
WiFi: fix tsf bug (backport v3.3)

See merge request espressif/esp-idf!10951
2020-10-26 21:32:56 +08:00
zhangyanjiao
91fca12f6a esp_wifi: Fixed the bug for timestamp check, didn't disconnect AP when AP's timestamp decrease abnormally 2020-10-26 11:16:34 +00:00
xueyunfei
668347e9c1 fix(dhcp): Fix dhcp renew fail in t1 and will renew ip in t2 every 1s util renew successful.(backport 3.3) 2020-10-26 16:35:32 +08:00
Angus Gratton
c1b49c419d Merge branch 'bugfix/ldgen_unicode_path_v3.3' into 'release/v3.3'
tools/ldgen: Parse paths with Unicode characters in archives (v3.3)

See merge request espressif/esp-idf!10967
2020-10-26 12:08:28 +08:00
Jiang Jiang Jian
cd06c14265 Merge branch 'bugfix/fix_get_bond_device_list_v3.3' into 'release/v3.3'
bugfix/fix esp_bt_gap_get_bond_device_list bug [backport v3.3]

See merge request espressif/esp-idf!9669
2020-10-26 11:47:08 +08:00
Jiang Jiang Jian
410d59d53d Merge branch 'feature/esp_spp_stop_srv_v3.3' into 'release/v3.3'
bugfix/Add API esp_spp_stop_srv and fix collection of SPP [backport v3.3]

See merge request espressif/esp-idf!10010
2020-10-26 11:46:56 +08:00
Jiang Jiang Jian
77486506e3 Merge branch 'bugfix/fix_hci_max_page_num_v3.3' into 'release/v3.3'
bugfix/Support for more Bluetooth HID devices [backport v3.3]

See merge request espressif/esp-idf!9663
2020-10-26 11:46:11 +08:00
Michael (XIAO Xufeng)
adaed2c79d Merge branch 'spi_dma_close_before_cpu_reset_v3.3' into 'release/v3.3'
spi: fix issue with closing DMA before CPU reset (3.3)

See merge request espressif/esp-idf!10865
2020-10-25 23:51:21 +08:00
He Yin Ling
4a9f946278 Merge branch 'feature/move_auto_test_script_to_new_repo_3.3' into 'release/v3.3'
ci: move auto_test_script to new repo (backport 3.3)

See merge request espressif/esp-idf!10881
2020-10-24 09:26:11 +08:00
Chen Yu Dong
632530ef3c test: move auto test script to new repo (backport)
known issues +
2020-10-24 09:26:08 +08:00
Roland Dobai
ef43198018 tools/ldgen: Parse paths with Unicode characters in archives
Closes https://github.com/espressif/esp-idf/issues/5996
2020-10-23 13:46:19 +02:00
Jiang Jiang Jian
4a3e7bc40d Merge branch 'bugfix/udpv6_fail_to_receive_data_for_the_first_time' into 'release/v3.3'
lw-ip:udpv6 failed to receive data for the first time

See merge request espressif/esp-idf!10942
2020-10-23 15:25:55 +08:00
boblane
c5b23a85b8 Some Bluetooth devices - such as an Xbox One S controller (model 1708) - report more than two external features pages and are rejected immediately. Pages 1 and 2 are marked as unhandled in btm_devctl.c anyway, so there is no reason to block devices with more pages.
(IDFGH-3515)
Signed-off-by: liqigan <liqigan@espressif.com>

Merges https://github.com/espressif/esp-idf/pull/5481
Closes https://github.com/espressif/esp-idf/issues/5470
2020-10-23 06:14:24 +00:00
liqigan
35b2eeaa65 add API esp_spp_stop_srv(), fix the error parameter in esp-idf/examples/bluetooth/bluedroid/classic_bt/bt_spp_initiator/main/example_spp_initiator_demo.c and fix collection of SPP
Closes https://github.com/espressif/esp-idf/issues/5409
Closes https://github.com/espressif/esp-idf/pull/5408

See merge request !9114
2020-10-22 08:33:39 +00:00
boblane
fc6f480e89 fix esp_bt_gap_get_bond_device_list bug
Closes https://github.com/espressif/esp-idf/issues/5395
2020-10-22 06:32:16 +00:00
Angus Gratton
394d0ecb65 Merge branch 'bugfix/embed_file_symbol_names_v3.3' into 'release/v3.3'
cmake: fix C identifier generation from embedded file (v3.3)

See merge request espressif/esp-idf!10667
2020-10-22 12:16:49 +08:00
xueyunfei
2e3dfd23e7 udpv6 failed to receive data for the first time 2020-10-22 11:40:04 +08:00
Mahavir Jain
83809a37a7 Merge branch 'bugfix/esp_idf_version_v3.3' into 'release/v3.3'
Add __ASSEMBLER__ flag in esp_idf_version.h to fix build failure with assembly files (v3.3)

See merge request espressif/esp-idf!10902
2020-10-21 20:07:54 +08:00
liqigan
d61459e692 modify read rssi related function names
Closes https://github.com/espressif/esp-idf/issues/5660
2020-10-20 12:31:50 +00:00
Jiang Jiang Jian
5543b6a85b Merge branch 'bugfix/fix_some_wifi_bugs_0924_v3.3' into 'release/v3.3'
fix some wifi bugs 0924 (v3.3)

See merge request espressif/esp-idf!10615
2020-10-20 20:29:50 +08:00
Island
d25b00bd5e Merge branch 'bugfix/ble_mesh_autorsp_description_v3.3' into 'release/v3.3'
esp_ble_mesh: api: fixed comment about autoresp (v3.3)

See merge request espressif/esp-idf!10891
2020-10-19 16:34:26 +08:00
Shubham Kulkarni
5a287c3a31 esp_idf_version.h: Add __ASSEMBLER__ flag to fix build failure with assembly files 2020-10-19 13:23:20 +05:30
Marius Vikhammer
a1c57aa022 tools: fix path handling errors in gen_esp_err_to_name.py for Windows
Exclude paths that were specified with slash as a path separator were compared
as strings. This would fail on Windows which uses backslash as a path separator.
2020-10-19 14:44:33 +08:00
andreachiara
b097435596 esp_ble_mesh: api: fixed comment about autoresp 2020-10-19 11:32:52 +08:00
Armando
2a0dc304c0 spi: fix issue with closing DMA before CPU reset 2020-10-16 14:13:32 +08:00
Renz Bagaporo
b94c309fd9 cmake: fix C identifier generation from embedded file 2020-10-15 21:29:24 +08:00
Alexey Gerenkov
495ffcc899 tools: Updates OpenOCD version to 'v0.10.0-esp32-20200709' 2020-10-14 19:03:06 +00:00
Island
3901f38de6 Merge branch 'optimize/ble_mesh_make_buf_config_invisible_v3.3' into 'release/v3.3'
ble_mesh: stack: Make mesh buf debug option invisible (v3.3)

See merge request espressif/esp-idf!10797
2020-10-13 19:51:59 +08:00
Island
58c5b7a1bf Merge branch 'feat/ble_mesh_device_properties_v2_v3.3' into 'release/v3.3'
Feat/ble mesh device properties v2 (v3.3)

See merge request espressif/esp-idf!10790
2020-10-13 19:50:17 +08:00
lly
0d92639439 ble_mesh: stack: Make mesh buf debug option invisible 2020-10-13 09:31:47 +00:00
lly
23a21f92be ble_mesh: stack: Add mesh device properties v2 definitions
Also fixes wrong characteristic value length of some device
properties.
2020-10-13 09:30:16 +00:00
lly
aa329b08ce ble_mesh: stack: Move device property to model common part 2020-10-13 09:30:16 +00:00
Island
7d8d841659 Merge branch 'bugfix/ble_mesh_proxy_cfg_replay_v3.3' into 'release/v3.3'
Bugfix/ble mesh proxy cfg replay (v3.3)

See merge request espressif/esp-idf!10821
2020-10-13 17:24:11 +08:00
zhangyanjiao
a5b5467dca esp_wifi:
1. Optimize some debug logs for probe response
2. Optimize phy and soc files
3. Fix the bug that no event for connect
4. Fix the bug that set_channel doesn't work for softAP
5. Drop receiving packets from myself
2020-10-13 17:22:47 +08:00
lly
18cc96d188 ble_mesh: stack: Store kr phase after value changed [Zephyr] 2020-10-13 14:32:51 +08:00
lly
3e61d519c1 ble_mesh: stack: Fix rpl not check by proxy cfg [Zephyr] 2020-10-13 14:32:36 +08:00
David Čermák
ad0b1ac8d7 Merge branch 'feature/mqtt_sub_update_01594bf1_v3.3' into 'release/v3.3'
MQTT: Update submodule reference (Backport v3.3)

See merge request espressif/esp-idf!10234
2020-10-13 14:13:52 +08:00
David Čermák
651dc8788f Merge branch 'bugfix/ws_stop_deadlock_v3.3' into 'release/v3.3'
Websocket client: avoid deadlock if stop called from event handler (Backport v3.3)

See merge request espressif/esp-idf!10229
2020-10-13 14:12:52 +08:00
David Čermák
31d272e460 Merge branch 'bugfix/openss_strict_verify_mode_3.3' into 'release/v3.3'
openssl: made verification mode conversion to mbetls modes more strict (v3.3)

See merge request espressif/esp-idf!10502
2020-10-13 14:10:54 +08:00
Island
b4338b61a2 Merge branch 'bugfix/ble_mesh_node_deinit_v3.3' into 'release/v3.3'
ble_mesh: stack: Persistent storage misc fixes (v3.3)

See merge request espressif/esp-idf!10815
2020-10-13 14:06:23 +08:00
Jiang Jiang Jian
5d1da96e3e Merge branch 'bugfix/ipv6_address_get_fail_after_wifi_disconnect_for_3.3' into 'release/v3.3'
lw-ip:ipv6 address get fail after wifi disconnect for 3.3(backport 3.3)

See merge request espressif/esp-idf!10792
2020-10-13 12:28:46 +08:00
lly
542b6bdbc1 ble_mesh: stack: Persistent storage misc fixes
* Fix the issue that deinit node with "erase_flash"
  set to true, but info is not erased from nvs
* Reuse bt_mesh_cfg_reset() when deinit node
* Optimize Provisioner related erase operations
* No store pending timeout will be used when Node
  is not provisioned OR Provisioner is disabled
  and erase operation is performed
* Change the default timeout for settings operation
  to 0, and rpl store rate to 0
2020-10-13 10:55:58 +08:00
Island
733aaa4af0 Merge branch 'bugfix/ble_mesh_settings_fix_v3.3' into 'release/v3.3'
Bugfix/ble mesh settings fix (v3.3)

See merge request espressif/esp-idf!10786
2020-10-13 10:50:07 +08:00
Marius Vikhammer
0b42900063 Websocket client: avoid deadlock if stop called from event handler 2020-10-12 10:15:55 +00:00
Marius Vikhammer
22ce545187 MQTT: Update submodule reference
SSL: add config option for skipping common name check
esp-mqtt commit: 5e8950e681)
Closes https://github.com/espressif/esp-mqtt/issues/158

Websocket: Allow the query part of the uri to be a part of the path
esp-mqtt commit: 40b06deb10)
Closes https://github.com/espressif/esp-mqtt/issues/161

Config: Add check for consistency between config settings
esp-mqtt commit: 8a412c147d)

Add IDF version check for secure element feature
esp-mqtt commit: db4bce01ab)

Fix esp_mqtt_client_stop deadlock
esp-mqtt commit: 5e17dcaeb2)
Closes https://github.com/espressif/esp-mqtt/issues/163

Add dispatch error event for read errors
esp-mqtt commit: d4aaec08ff
Closes https://github.com/espressif/esp-idf/issues/5704

Cleanup expired messages when offline
esp-mqtt commit: bdadd77c6e
Closes https://github.com/espressif/esp-idf/issues/5668

esp_mqtt_client_publish now returns msg id for QoS > 0 when offline
esp-mqtt commit: f7325bfa10
2020-10-12 10:15:19 +00:00
David Cermak
4a1016411b openssl: made verification mode conversion to mbetls modes more strict 2020-10-12 10:14:21 +00:00
xueyunfei
a9f6748de9 lw-ip:ipv6 address get fail after wifi disconnect for 3.3 2020-10-12 10:58:50 +08:00
lly
b4c3c87c75 ble_mesh: stack: Use settings_core_erase when deinit 2020-10-12 10:02:05 +08:00
lly
3940ab80a3 ble_mesh: stack: Fix storing next net_idx and app_idx 2020-10-12 10:02:05 +08:00
lly
d7c2d66d55 ble_mesh: stack: Continue restore even if failure happens
Previously we have used this solution for node info
restore. Here use the same solution for other mesh
information restore.
2020-10-12 10:02:05 +08:00
lly
4fc62b7983 ble_mesh: stack: Split model settings store and clear 2020-10-12 10:02:05 +08:00
lly
de15e502a7 ble_mesh: stack: Erase netkey and appkey with key index 2020-10-12 10:02:05 +08:00
lly
d51431fff5 ble_mesh: stack: Add clear hb_pub in settings 2020-10-12 10:02:05 +08:00
lly
d4651bbb30 ble_mesh: stack: Transport rx reset settings update
When reset the rx info of transport layer, the
rpl list will always cleared, and rpl stored
in the nvs will only be erased when erase flag
is true and BLE_MESH_SETTINGS is enabled.
Compared with the previous solution, it should
be more clear.
2020-10-12 10:02:05 +08:00
lly
e202225bd1 ble_mesh: stack: Use erase settings functions 2020-10-12 10:02:05 +08:00
lly
1a3515ab76 ble_mesh: stack: Use mutex for settings operation
Also expose the settings functions with the parameter
bt_mesh_nvs_handle_t, which will be used for further
updates.
2020-10-12 10:02:05 +08:00
lly
a662d14a4e ble_mesh: stack: Add role check before enabling device 2020-10-12 10:02:05 +08:00
lly
4dcbe2bd7a ble_mesh: stack: Define a type for mesh nvs handle 2020-10-12 10:01:47 +08:00
lly
22d01ba674 ble_mesh: ci: Enable settings in sdkconfig.ci.xxx 2020-10-12 08:49:52 +08:00
Jiang Jiang Jian
4782dde73a Merge branch 'bugfix/fix_ble_hci_desync_deadlock_v3.3' into 'release/v3.3'
components/bt: Fix for HCI desync deadlock issue in BLE controller.

See merge request espressif/esp-idf!10625
2020-10-09 19:52:42 +08:00
Jiang Jiang Jian
151e4e156f Merge branch 'bugfix/nimble_host_rcv_pkt_length_check_v3.3' into 'release/v3.3'
NimBLE: host_rcv_pkt event buf size check. (v3.3)

See merge request espressif/esp-idf!10761
2020-10-09 15:19:47 +08:00
Chinmay Chhajed
1aa40de934 NimBLE: host_rcv_pkt event buf size check.
Check if the size of HCI event buffer is greater than the received HCI
packet. If not then abort with the error message.
2020-10-09 09:32:37 +05:30
Angus Gratton
471d79edae Merge branch 'bugfix/ci_auto_checkout_revision_of_project_used_in_ci_v3.3' into 'release/v3.3'
CI: get git describe from annotated tags (v3.3)

See merge request espressif/esp-idf!10676
2020-10-08 16:44:49 +08:00
Mahavir Jain
1ffeff5948 Merge branch 'bugfix/bootloader_anti_rollback_mmap_v3.3' into 'release/v3.3'
bootloader_support: fix issue in memory mapping for getting app descriptor (v3.3)

See merge request espressif/esp-idf!10737
2020-10-08 16:31:35 +08:00
Angus Gratton
0f6b7ad3cf Merge branch 'bugfix/bootloader_common_get_sha256_of_partition_v3.3' into 'release/v3.3'
bootloader_support: Fix bootloader_common_get_sha256_of_partition(), can handle a long image (v3.3)

See merge request espressif/esp-idf!9955
2020-10-08 13:11:46 +08:00
Angus Gratton
111e0361c9 ci: Check version tags are always annotated
Closes https://github.com/espressif/esp-idf/issues/3114
2020-10-07 13:53:45 +11:00
Angus Gratton
6c2bffe53c build system: Also get IDF version from annotated tags only
Builds on previous commit.

Note: Getting the project version still pases --tags so still works with plain
tags, to keep compatibility for existing projects
2020-10-07 13:53:45 +11:00
Mahavir Jain
0167a5e96d bootloader_support: fix issue in memory mapping for getting app descriptor
For getting secure_version field in anti rollback case, bootloader tries
to map whole firmware partition but fails for cases where partition size
is beyond available MMU free pages capacity.

Fix here ensures to map only required length upto application descriptor
size in firmware partition.

Closes https://github.com/espressif/esp-idf/issues/5911
2020-10-06 14:43:12 +05:30
Michael (XIAO Xufeng)
021e1189c5 Merge branch 'bugfix/mcpwm_fault_init_copypaste_typo_bp3.3' into 'release/v3.3'
MCPWM: Fix PWM-fault init function that read config incorrectly (backport v3.3)

See merge request espressif/esp-idf!9550
2020-10-02 14:20:12 +08:00
He Yin Ling
936c803ccb CI: get git describe from annotated tags:
we should only parse IDF version from annotated tags
2020-09-30 11:34:28 +08:00
xutao
85d63af301 tcp_transport: fix an issue when use 2020-09-30 11:34:00 +08:00
Chinmay Chhajed
02893a2038 components/bt: Fix for HCI desync deadlock issue in BLE controller. 2020-09-29 21:35:15 +05:30
Jiang Jiang Jian
cd86bc9d8d Merge branch 'bugfix/confirmed_bugfix_from_baidu_proj_3.3' into 'release/v3.3'
Confirmed bugfix from Baidu Project 3.3

See merge request espressif/esp-idf!10548
2020-09-29 20:48:50 +08:00
Jiang Jiang Jian
9401c59f89 Merge branch 'bugfix/customer_baidu_int_wdt_v3.3' into 'release/v3.3'
backport v3.3: add soft solution for esp32 eco3 live lock issue

See merge request espressif/esp-idf!9217
2020-09-29 14:04:00 +08:00
baohongde
67edd0c10e components/bt: Replace task post with btc_inter_profile_call, when post message from btc_dm to btc_gap 2020-09-28 19:36:23 +08:00
baohongde
abf6cecde1 components/bt: Fix clear bond fail when connected without ble included 2020-09-28 16:21:25 +08:00
xiongweichao
67276f5d26 add remove bond device complete event 2020-09-28 16:14:52 +08:00
xiongweichao
3c0aee8595 1.revert dummy command
2.fix send MEDIA_CTRL command in disconnect
2020-09-28 12:00:28 +08:00
xiongweichao
2233b5d25e 1.fix test case dummy
2.fix sink send media control ESP_A2D_MEDIA_CHECK_SRC_RDY
2020-09-28 11:55:46 +08:00
Jiang Jiang Jian
a55f0ebbd5 Merge branch 'bugfix/wifi_spin_lock_allocation_in_PSRAM_v3.3' into 'release/v3.3'
wifi: Fix spin lock allocation in PSRAM bug(v3.3)

See merge request espressif/esp-idf!10550
2020-09-27 12:49:32 +08:00
Jiang Jiang Jian
e49a6b95ed Merge branch 'bugfix/fix_ipv6_nd6_max_queue_num_v3.3' into 'release/v3.3'
lw-ip: fix IPv6 ND6 queue too much pkts cause no mem issue(backport v3.3)

See merge request espressif/esp-idf!10177
2020-09-27 12:47:30 +08:00
Jiang Jiang Jian
4a037fa911 Merge branch 'bugfix/can_mmap_after_get_enough_free_mmu_pages_v3.3' into 'release/v3.3'
flash_mmap: can mmap after get enough free MMU pages (backport v3.3)

See merge request espressif/esp-idf!10587
2020-09-27 12:46:42 +08:00
Island
0b792c44eb Merge branch 'optimize/ble_mesh_provisioner_delete_dev_v3.3' into 'release/v3.3'
ble_mesh: stack: Optimize Provisioner delete device function (v3.3)

See merge request espressif/esp-idf!10606
2020-09-27 10:53:19 +08:00
lly
81354cf24f ble_mesh: stack: Optimize Provisioner delete device function
Since we have provided separate functions for deleting node
information with node's unicast address, device uuid, etc.
So we update the behavior of this function, which will only
be used to delete device information which is not provisioned
or just under provisioning.
2020-09-25 14:04:58 +08:00
Angus Gratton
fcadbaf97c Merge branch 'update/release_v3.3.4' into 'release/v3.3'
v3.3: Update to v3.3.4

See merge request espressif/esp-idf!10520
2020-09-25 10:21:30 +08:00
ChenJianxing
186ad2f6aa lwip: fix IPv6 ND6 queue too much pkts cause no mem issue and add menuconfig item for this params. 2020-09-24 10:43:23 +08:00
jiangguangming
4f3ddbb299 flash_mmap: restore interrupt and cache before err return 2020-09-24 10:06:18 +08:00
jiangguangming
9debc7248a flash_mmap: can mmap after get enough free MMU pages 2020-09-24 10:06:18 +08:00
Jiang Jiang Jian
fb18b12efe Merge branch 'bugfix/bt_linkup_fallback_event_v3.3' into 'release/v3.3'
Bluedroid: Fixes cases having fallback to link up event. (v3.3)

See merge request espressif/esp-idf!9805
2020-09-22 16:44:07 +08:00
Jiang Jiang Jian
251676181a Merge branch 'bugfix/backport_some_lwip_bugs_0910_v3.3' into 'release/v3.3'
lw-ip:backport bugfix lw-ip for v3.3

See merge request espressif/esp-idf!10409
2020-09-22 14:18:30 +08:00
dongyou
e12593a79f Fix spin lock allocation in PSRAM bug 2020-09-22 14:11:25 +08:00
weitianhua
7f9a4d25ef Confirmed bugfix from Baidu Project 2020-09-22 11:57:00 +08:00
Michael (XIAO Xufeng)
4afc8facde Merge branch 'fixbug/sdmmc_spi_highspeed_v3.3' into 'release/v3.3'
sdmmc: fix the probe issue that forbid sdspi working in highspeed mode(backport v3.3)

See merge request espressif/esp-idf!9838
2020-09-21 11:10:09 +08:00
Angus Gratton
c73a00e073 Merge branch 'bugfix/espcoredump_fix_error_reported_for_blank_partition_v33' into 'release/v3.3'
Bugfix/espcoredump fix error reported for blank partition (backport v3.3)

See merge request espressif/esp-idf!9625
2020-09-21 10:45:05 +08:00
Michael (XIAO Xufeng)
f2f13eb8e8 Merge branch 'bugfix/spi_master_multiple_dev_with_diff_cs_lvl_3.3' into 'release/v3.3'
spi_master: correctly set cs polarity (3.3)

See merge request espressif/esp-idf!10406
2020-09-21 10:21:22 +08:00
aleks
c9f4b0aba8 espcoredump: fix error reported for blank partition 2020-09-21 01:29:24 +00:00
Ivan Grokhotkov
6e284ea84b Merge branch 'bugfix/parttool_example_test_fail_v3.3' into 'release/v3.3'
examples/parttool: fix the test to work on parallel test runner (backport v3.3)

See merge request espressif/esp-idf!10376
2020-09-18 23:30:58 +08:00
Angus Gratton
34961db9c1 Merge branch 'release/v3.3' into update/release_v3.3.4 2020-09-18 19:44:26 +10:00
Angus Gratton
b64b375234 version: Update to v3.3.4 2020-09-18 19:42:21 +10:00
xueyunfei
315cbe05cf backport bugfix lwip for v3.3 2020-09-18 02:28:13 +00:00
Island
f54f776905 Merge branch 'bugfix/ble_mesh_check_stack_init_v3.3' into 'release/v3.3'
ble_mesh: stack: Check if mesh stack initialized before init vendor client (v3.3)

See merge request espressif/esp-idf!10484
2020-09-18 09:40:14 +08:00
Michael (XIAO Xufeng)
c7a9851de0 Merge branch 'bugfix/fix_bugs_in_gpio_unit_test_v3.3' into 'release/v3.3'
bugfix(ut): fix gpio output and input mode test(backport v3.3)

See merge request espressif/esp-idf!10023
2020-09-18 02:17:42 +08:00
lly
1f32a8d95e ble_mesh: stack: Check if mesh stack initialized before init vendor client 2020-09-17 11:28:02 +08:00
Ivan Grokhotkov
c3e8fb73c7 Merge branch 'bugfix/missing_regex_error_stub' into 'release/v3.3'
Add missing regex_error stub

See merge request espressif/esp-idf!8852
2020-09-16 04:50:54 +08:00
Ivan Grokhotkov
9dda741a99 Merge branch 'bugfix/nvs_no_throw_v3.3' into 'release/v3.3'
NVS: Changed all new to new (nothrow) (backport v3.3)

See merge request espressif/esp-idf!7858
2020-09-16 02:49:09 +08:00
Jakob Hasse
5d45705ca1 NVS Flash: prevent erasing initialized partition
Closes https://github.com/espressif/esp-idf/issues/4755
Closes https://github.com/espressif/esp-idf/issues/2777

* nvs_flash_erase_partition() checks whether
  the parition in question is initialized
  already and will return an error if so
* reflect changes in the documentation
2020-09-15 18:45:42 +00:00
Jakob Hasse
a7e1c144e2 Add missing regex_error stub
Closes IDFGH-3153

* avoids linker error
2020-09-15 18:20:09 +00:00
Angus Gratton
8a79415c2e Merge branch 'bugfix/ulp_as_version_v3.3' into 'release/v3.3'
ulp: fix ULP assembler version detection for localized systems (v3.3)

See merge request espressif/esp-idf!10396
2020-09-15 15:09:30 +08:00
Angus Gratton
1d8bf5356b Merge branch 'bugfix/eclipse_make_py3_v3.3' into 'release/v3.3'
tools: Fix Python 3 incompatibility for building with Eclipse on Windows (v3.3)

See merge request espressif/esp-idf!10401
2020-09-15 15:06:54 +08:00
Angus Gratton
d7ea1b0a08 Merge branch 'bugfix/ut_ext_win_open_file_v3.3' into 'release/v3.3'
Tools: Close temporary file before invoking external tools accessing it (v3.3)

See merge request espressif/esp-idf!9858
2020-09-15 14:27:34 +08:00
Ivan Grokhotkov
65d829826e Merge branch 'feature/ci_fix_docker_build_v3.3' into 'release/v3.3'
ci: Use git mirror for docker image (v3.3)

See merge request espressif/esp-idf!10448
2020-09-15 01:47:56 +08:00
Wielebny666
bca1beb3f0 spi_master: correctly set cs polarity
All devices must be added to the same spi line before use.
2020-09-14 11:58:10 +00:00
Sergei Silnov
4f11ecebbc ci: Use git mirror for docker image 2020-09-14 13:11:44 +02:00
Island
64adabfd3a Merge branch 'bugfix/ble_mesh_prov_iv_index_v3.3' into 'release/v3.3'
ble_mesh: stack: Using the latest iv_index for provisioning (v3.3)

See merge request espressif/esp-idf!10419
2020-09-14 14:17:53 +08:00
Michael (XIAO Xufeng)
cbcb218418 Merge branch 'bugfix/fix_i2s_reset_issue_v3.3' into 'release/v3.3'
driver(I2S): Fix I2S reset issue for release/v3.3

See merge request espressif/esp-idf!9586
2020-09-14 10:45:50 +08:00
Jiang Jiang Jian
cec88e11ed Merge branch 'component/seperate_bta_jv_l2c_3.3' into 'release/v3.3'
Component/seperate bta jv l2c 3.3

See merge request espressif/esp-idf!9651
2020-09-11 19:38:36 +08:00
lly
34f30a878e ble_mesh: stack: Using the latest iv_index for provisioning
Provisioner should always uses the latest IV Index for provisioning.
For example, if the current IV Index is 0x00000001, but prov->iv_index
is still initialized with 0x00000000, and if Provisioner uses prov->
iv_index for provisioning, this will cause the Provisioner failing to
control the node.
So here bt_mesh.iv_index is used instead of prov->iv_index.
2020-09-11 07:58:20 +00:00
Jiang Jiang Jian
908938bc3c Merge branch 'bugfix/fix_some_wifi_bugs_0907_v3.3' into 'release/v3.3'
bugfix: fix some wifi bugs (backport v3.3)

See merge request espressif/esp-idf!10318
2020-09-10 22:33:18 +08:00
Roland Dobai
518e1da637 tools: Fix Python 3 incompatibility for building with Eclipse on Windows 2020-09-10 09:47:29 +02:00
Roland Dobai
cccdd13937 ulp: fix ULP assembler version detection for localized systems 2020-09-10 09:36:22 +02:00
Island
6c5fc42114 Merge branch 'feat/ble_mesh_use_model_c_v3.3' into 'release/v3.3'
ble_mesh: stack: Use model callback for operations [Zephyr] (v3.3)

See merge request espressif/esp-idf!10365
2020-09-10 10:40:19 +08:00
Island
7514850962 Merge branch 'bugfix/ble_mesh_remove_assert_v3.3' into 'release/v3.3'
ble_mesh: stack: Avoid using assert in mesh stack (v3.3)

See merge request espressif/esp-idf!10361
2020-09-10 10:39:21 +08:00
Island
fa24dd7f6d Merge branch 'bugfix/ble_mesh_nimble_ccc_handle_v3.3' into 'release/v3.3'
ble_mesh: nimble: Fix updating ccc handle with wrong value (v3.3)

See merge request espressif/esp-idf!10357
2020-09-10 10:38:31 +08:00
Ivan Grokhotkov
e1fd76a11f examples/parttool: fix the test to work on parallel test runner
Pass the DUT port to parttool_example.py as an argument.
2020-09-09 18:40:53 +02:00
lly
9b70ddbb77 ble_mesh: stack: Use model callback for operations [Zephyr]
- Previously when a model is initialized or deinitialized, in the
  access layer, we need to check the model id with the ids in the
  table in order to find the proper model operation function.
- Currently all the operation functions of each model will be set
  during the mesh initialization. When the model is found, we can
  directly use the corresponding callback for different operations.
- Currently only init/deinit operations are registered, later we
  will add more operations.
2020-09-09 14:01:17 +08:00
lly
1090c12acd ble_mesh: stack: Avoid using assert in mesh stack 2020-09-09 10:58:18 +08:00
lly
d79e95e6e0 ble_mesh: nimble: Fix updating ccc handle with wrong value 2020-09-09 10:50:40 +08:00
Michael (XIAO Xufeng)
a3ef2bbe33 Merge branch 'feature/vfs_uart_set_line_ending_v3.3' into 'release/v3.3'
feature: support vfs uart set line endings with specified uart number release/v3.3

See merge request espressif/esp-idf!9595
2020-09-09 10:36:59 +08:00
ronghulin
a571bc0d0a bugfix: fix some wifi bugs
1. add sta connect again ap sent disconnect event
2. add set/get inactive time api
3. fix connect hidden AP doesn't update information
4. add rf test long short support
2020-09-08 14:18:00 +08:00
He Yin Ling
3b79b6b5da Merge branch 'bugfix/remove_auto_conn_case_v3.3' into 'release/v3.3'
test: remove auto conn case because we do not support this anymore (v3.3)

See merge request espressif/esp-idf!9943
2020-09-07 20:45:52 +08:00
Michael (XIAO Xufeng)
7e6572a34d Merge branch 'bugfix/spi_flash_yield_coredump_v3.3' into 'release/v3.3'
spi_flash: don't call vTaskDelay in non-os context (backport v3.3)

See merge request espressif/esp-idf!10300
2020-09-07 13:26:56 +08:00
Ivan Grokhotkov
93ad53c09d spi_flash: don't call vTaskDelay in non-os context
Fixes regression in core dump, when a crash happens in interrupt
context.
2020-09-04 21:30:01 +02:00
Krzysztof Budzynski
10d40d1448 Merge branch 'bugfix/macos_toolchain_url_v3.3' into 'release/v3.3'
docs: Fix toolchain URL generation for macos (v3.3)

See merge request espressif/esp-idf!10028
2020-09-04 23:08:01 +08:00
Krzysztof Budzynski
0af1da4416 Merge branch 'doc/broken_readme_links_v3.3' into 'release/v3.3'
Docs: Fix broken README links (v3.3)

See merge request espressif/esp-idf!9504
2020-09-04 23:05:57 +08:00
Island
77e3b100eb Merge branch 'bugfix/ble_mesh_sensor_example_fix_v3.3' into 'release/v3.3'
ble_mesh: example: Fix sensor data wrong iteration (v3.3)

See merge request espressif/esp-idf!10276
2020-09-04 16:55:14 +08:00
lly
073542063c ble_mesh: example: Fix sensor data wrong iteration 2020-09-04 11:57:08 +08:00
Mahavir Jain
b5ac1871de Merge branch 'feature/upgrade_mbedtls_to_v3.3' into 'release/v3.3'
mbedtls: update to mbedtls release v2.16.7 (v3.3)

See merge request espressif/esp-idf!9909
2020-09-03 18:59:16 +08:00
Mahavir Jain
2ad0565e3a mbedtls: update to mbedtls release v2.16.7
For detailed release notes, please refer to:
https://github.com/ARMmbed/mbedtls/releases/tag/mbedtls-2.16.7
2020-09-03 05:10:30 +00:00
Michael (XIAO Xufeng)
ad75a51f43 Merge branch 'ci/test_spi_speed_psram_enabled_3.3' into 'release/v3.3'
driver test: disable the spi master performance test when psram is used (v3.3)

See merge request espressif/esp-idf!9639
2020-09-02 08:53:04 +08:00
Michael (XIAO Xufeng)
6552aef2e7 driver test: disable the spi master performance test when psram is used 2020-09-01 16:41:59 +00:00
Island
468c30843c Merge branch 'bugfix/ble_mesh_example_compile_warn_v3.3' into 'release/v3.3'
Bugfix/ble mesh example compile warn (v3.3)

See merge request espressif/esp-idf!10225
2020-09-01 19:16:23 +08:00
lly
f8bf6b1f91 ble_mesh: example: Remove some useless included header files 2020-09-01 14:14:13 +08:00
Carlos Sobrinho
5725cb9342 Fix compilation warnings about portmacro being already define. 2020-09-01 14:13:42 +08:00
Jiang Jiang Jian
b2b47b4465 Merge branch 'bugfix/fix_some_wifi_bugs_0703_v3.3' into 'release/v3.3'
fix some wifi bugs 0703 (v3.3)

See merge request espressif/esp-idf!9537
2020-09-01 11:34:29 +08:00
Jiang Jiang Jian
ad2a05a391 Merge branch 'doc/add_UUID_description_in_gattc_demo_backport_v3.3' into 'release/v3.3'
docs:add 128-bit UUID description backport v3.3

See merge request espressif/esp-idf!9226
2020-09-01 11:01:06 +08:00
Jiang Jiang Jian
fee489e770 Merge branch 'bugfix/fix_build_err_in_cpp_backport_v3.3' into 'release/v3.3'
ble_hid_device_demo: fix build if building with c++ backport v3.3

See merge request espressif/esp-idf!9234
2020-09-01 11:00:21 +08:00
Island
173c76cb04 Merge branch 'bugfix/ble_mesh_client_msg_optimize_v3.3' into 'release/v3.3'
Bugfix/ble mesh client msg optimize (v3.3)

See merge request espressif/esp-idf!10207
2020-09-01 09:33:39 +08:00
Jiang Jiang Jian
c30a264d21 Merge branch 'bugfix/put_periph_module_enable/diable_into_iram_v3.3' into 'release/v3.3'
wifi, bt: move esp_phy_common_clock_disable into periph_ctrl and put it into IRAM(v3.3)

See merge request espressif/esp-idf!10109
2020-08-31 19:23:26 +08:00
lly
31060cf42b ble_mesh: stack: Client model related code clean 2020-08-31 13:18:53 +08:00
lly
8a19d03a1c ble_mesh: stack: Rename cfg & health client status recv func 2020-08-31 13:18:48 +08:00
lly
d5e9fc092c ble_mesh: stack: Check client msg result in common func 2020-08-31 13:18:42 +08:00
lly
8ae06fde5f ble_mesh: stack: Fix no events for some error conditions 2020-08-31 13:18:37 +08:00
lly
90e2bbe330 ble_mesh: stack: Move client role set to the msg function 2020-08-31 13:18:31 +08:00
lly
9aa33c344a ble_mesh: stack: Remove some not used client parameters 2020-08-31 13:18:25 +08:00
lly
7cb6b85ec9 ble_mesh: stack: Remove some not used variables & functions 2020-08-31 13:18:18 +08:00
lly
f11e347e2e ble_mesh: stack: Update client model msg send 2020-08-31 13:18:11 +08:00
Mahavir Jain
ba47806b8d Merge branch 'bugfix/http_client_read_v3.3' into 'release/v3.3'
Fix error handling in esp_http_client_read and esp_https_ota_perform (v3.3)

See merge request espressif/esp-idf!9205
2020-08-31 13:04:10 +08:00
Mahavir Jain
cfcc189a89 Merge branch 'bugfix/softap_prov_session_v3.3' into 'release/v3.3'
protocomm_httpd: Restart security session if request is received on a new session (v3.3)

See merge request espressif/esp-idf!9118
2020-08-31 13:01:12 +08:00
Island
41debcfbd2 Merge branch 'bugfix/ble_mesh_health_current_status_recv_v3.3' into 'release/v3.3'
ble_mesh: stack: Fix recv health current status incorrectly (v3.3)

See merge request espressif/esp-idf!10196
2020-08-31 11:15:13 +08:00
lly
726c74ff39 ble_mesh: stack: Fix recv health current status incorrectly 2020-08-28 17:40:59 +08:00
Island
6a2652c685 Merge branch 'bugfix/ble_mesh_misc_updates_v3.3' into 'release/v3.3'
Bugfix/ble mesh misc updates (v3.3)

See merge request espressif/esp-idf!10187
2020-08-28 17:32:10 +08:00
lly
c7cb56b507 ble_mesh: ci: Enable friend & low power in build check 2020-08-28 10:51:30 +08:00
lly
ff1132d2e4 ble_mesh: stack: Only keep func pointer for very common log
Currently only keep func pointer for the followings:
- Invalid parameter (mesh btc & mesh stack)
- Out of memory (mesh btc & mesh stack)
- Unknown act (mesh btc)
- Invalid model user data (mesh stack)
- BT_DBG("%s", __func__) (mesh btc & mesh stack)
- A few other specific situations (buf ref debug, send status check)
2020-08-28 10:51:17 +08:00
lly
6ea6de8d42 ble_mesh: stack: Make proxy server & client functions clear 2020-08-28 10:51:02 +08:00
Island
7e26c8ddda Merge branch 'bugfix/ble_mesh_add_misc_check_v3.3' into 'release/v3.3'
Bugfix/ble mesh add misc check (v3.3)

See merge request espressif/esp-idf!9633
2020-08-28 10:43:55 +08:00
Angus Gratton
f043a3da97 Merge branch 'update/release_v3.3.3' into 'release/v3.3'
version: Update to v3.3.3

See merge request espressif/esp-idf!10180
2020-08-27 19:38:21 +08:00
lly
f6cc9afaa9 ble_mesh: stack: Add proxy cfg pdu length check 2020-08-27 11:20:50 +00:00
lly
55489bb41a ble_mesh: stack: Rework using dev flag to check scan status
Different bluetooth host has different behaviors, so it's better
to maintain a scan check mechanism of BLE Mesh itself.
Fixes an issue when only PB-GATT is enabled for node, which will
output a scan error log when the device is provisioned.
2020-08-27 11:20:50 +00:00
lly
43ffec0bd7 ble_mesh: example: Add result check during mesh init 2020-08-27 11:20:50 +00:00
lly
c1c4990f75 ble_mesh: stack: Add more checks about input prov bearers 2020-08-27 11:20:50 +00:00
Island
72f029abc3 Merge branch 'feat/ble_mesh_use_iram_for_mem_alloc_v3.3' into 'release/v3.3'
Feat/ble mesh use diff ram for mem alloc (v3.3)

See merge request espressif/esp-idf!9619
2020-08-27 19:19:23 +08:00
Island
c902b1fa24 Merge branch 'bugfix/ble_mesh_update_send_ttl_v3.3' into 'release/v3.3'
Bugfix/ble mesh update send ttl v3.3

See merge request espressif/esp-idf!9564
2020-08-27 19:19:01 +08:00
Angus Gratton
95c7b26cdd version: Update to v3.3.3 2020-08-27 18:21:03 +10:00
Angus Gratton
78003e9437 docs: Fix toolchain URL generation for macos
Didn't backport the new URL scheme when we updated the toolchain version.

Have put a link on the server so in this case the "osx" toolchain URL remains
valid.

Closes https://github.com/espressif/esp-idf/issues/5720
2020-08-27 14:10:35 +10:00
lly
2a6b0d68ce ble_mesh: stack: Rename mesh adv queue and relay queue 2020-08-26 08:24:55 +00:00
lly
da068a639f ble_mesh: stack: Use macros for adv task name & prio 2020-08-26 08:24:55 +00:00
lly
df8b2c5f3a ble_mesh: stack: Make freertos static allocation visible 2020-08-26 08:24:55 +00:00
lly
a194c415a8 ble_mesh: stack: Update option of using DRAM/SPIRAM for memory allocation 2020-08-26 08:24:55 +00:00
weitianhua
33546a0094 Fix tsk watchdog when running spp vfs demo 2020-08-26 15:33:48 +08:00
weitianhua
8fb47ab0c2 Seperate BTA_JV_L2CAP for less bin size 2020-08-26 15:33:48 +08:00
zhangyanjiao
09113e163b esp wifi bugfix:
1. Fix TX DMA buffer issue
2. API esp_wifi_get_config add acquisition sta.listen_interval
3. Configure bandwidth and phy mode to store NVS
4. If AP's tsf has been restarted, STA will disconnect from AP.
5. Do not reset softAP's tsf except it restart
6. Fix the wifi regdomain update bug
7. Fix the bug for airkiss find hidden AP fail
8. Fix addba and first ampdu send bar
9. Fix WiFi fragment issue
10. Fix WiFi fragment issue
2020-08-26 14:43:53 +08:00
zhangyanjiao
85ca89ee4a esp_wifi: Add API to get available internal heap size 2020-08-26 14:43:35 +08:00
dongyou
9825d0004f Add IRAM_ATTR wifi_bt_common_module_enable/disable()
Deleted duplicated spinlock and counter.
2020-08-24 14:00:22 +08:00
houwenxiang
c7f33524b4 driver(I2S): Fix I2S reset issue for release/v3.3
`i2s_start` reseting I2S in incorrect order causeing the word-order error.
2020-08-24 01:25:39 +00:00
Chen Yi Qun
c2ead692aa bugfix(ut): fix gpio output and input mode test(backport v3.3) 2020-08-20 06:25:40 +00:00
Sergei Silnov
01a2ab9329 Remove mention of idf.py defconfig
Closes https://github.com/espressif/esp-idf/issues/5075
2020-08-18 16:07:46 +02:00
houwenxiang
a293dfea7a feature: support vfs uart set line endings with specified uart number release/v3.3 2020-08-14 14:35:44 +08:00
Angus Gratton
9ff108dcd0 Merge branch 'fix/prov_ble_read_offset_v3.3' into 'release/v3.3'
BLE provisioning: Add check for valid ble read offset (v3.3)

See merge request espressif/esp-idf!9747
2020-08-13 16:29:02 +08:00
Michael (XIAO Xufeng)
0a75f2d5f8 Merge branch 'bugfix/fix_adc_dac_conflict_backportv3.3' into 'release/v3.3'
Driver(adc): Disable the synchronization operation function of ADC1 and DAC (backport v3.3)

See merge request espressif/esp-idf!9364
2020-08-13 09:51:25 +08:00
Prasad Alatkar
fbdcfc8e4a BLE provisioning: Add check for valid ble read offset 2020-08-12 08:46:01 +00:00
Jiang Jiang Jian
22e3c00b48 Merge branch 'bugfix/fix_udp_tx_performance_issue_v3.3' into 'release/v3.3'
lw-ip: fix udp tx packet loss issue (backport v3.3)

See merge request espressif/esp-idf!10007
2020-08-12 16:16:47 +08:00
xiehang
7952bed766 lwip: fix udp tx packet loss issue 2020-08-12 10:38:42 +08:00
Li Shuai
ab63b48f6f add soft solution for esp32 eco3 live lock issue 2020-08-12 02:16:53 +00:00
Jiang Jiang Jian
8ab3cb0b12 Merge branch 'bugfix/fix_IPv6_memory_leak_issue' into 'release/v3.3'
lw-ip: fix IPv6 memory leak issue

See merge request espressif/esp-idf!9933
2020-08-11 22:09:50 +08:00
ronghulin
cb78c1083f bugfix: fix IPv6 memory leak issue 2020-08-11 14:19:06 +08:00
Jiang Jiang Jian
7e1c529b00 Merge branch 'bugfix/param_check_instant_tx_octets_adv_ubderrun_v3.3' into 'release/v3.3'
component/bt: add connect parameter, fix instant reverse, fix tx default octets, fix assert(1024,0)

See merge request espressif/esp-idf!9484
2020-08-11 14:11:03 +08:00
Jiang Jiang Jian
f538307629 Merge branch 'bugfix/ipv6_fragment_for_3.3' into 'release/v3.3'
lw-ip:fix bug for ipv6 fragment(backport 3.3)

See merge request espressif/esp-idf!9655
2020-08-11 14:09:11 +08:00
xueyunfei
68ecc44d34 fix bug for ipv6 fragment 2020-08-11 09:45:02 +08:00
Jiang Jiang Jian
b244afc208 Merge branch 'feature/make_tcp_rto_configurable_v3.3' into 'release/v3.3'
make TCP rto time configurable (backport v3.3)

See merge request espressif/esp-idf!9610
2020-08-10 21:17:45 +08:00
Wang Cheng
bfaa14bfdd component/bt: Fix buffer count deinit crash. 2020-08-10 11:43:54 +08:00
wangcheng
12d476427f components/bt: Add api to query the number of available buffers for the current connection 2020-08-10 11:43:54 +08:00
baohongde
debda4a63f Fix ble disconnect due to instant of channel map update is too small
Set AFH in time
Fix ble connecting fail in coexist
2020-08-10 11:43:54 +08:00
baohongde
b76f5b2ef2 Coexistence: Add coexist API to enable BLE connection dynamic priority 2020-08-10 11:43:54 +08:00
wangcheng
d674016d64 component/bt: add connect parameter, fix instant reverse, fix tx default octets, fix assert(1024,0), fix assert(512,0) 2020-08-10 11:43:17 +08:00
KonstantinKondrashov
9ce137139b bootloader: Adds bootloader_sha256_flash_contents() 2020-08-07 23:10:29 +08:00
Piyush Shah
52c089fba7 protocomm_httpd: Restart security session if request is received on a new session
This commit fixes a bug as well as changes a behaviour.

Bugfix: During softap/httpd based provisioning, if a session was closed
midway and a new one started, it would never proceed if the http server
assigns same socket number to the new session (which happens almost always).
Now, if a session is closed, using the http callbacks, the older session
data is cleared so that a new one can be created.

Behavioural change: If a client (mobile app particularly) does not use
persistent http session i.e. all provisioning communication on the same
socket, the provisioning may fail. Earlier, since the session context was
not getting cleared, even if the client closed a session and continued
on a new one, it would go through if the socket number assigned was same
(which happens almost always).

Ideally, from a security perspective, all communication related
to secure provisioning must happen on the same socket, and so, this
change is required.
2020-08-06 18:25:53 +00:00
KonstantinKondrashov
035783039b bootloader_support: Fix bootloader_common_get_sha256_of_partition, can handle a long image
Closes: IDFGH-3594
2020-08-05 23:21:52 +08:00
Hou Chen Yao
2e89f963d7 remove auto conn case because we do not support this anymore 2020-08-05 18:04:34 +08:00
Li Shuai
b1990352bb added psram stack check in backtrace 2020-08-04 05:46:45 +00:00
He Yin Ling
aa6730f0e2 Merge branch 'bugfix/checkout_ref_auto_test_script' into 'release/v3.3'
CI: IT jobs use incorrect auto test script branch

See merge request espressif/esp-idf!9867
2020-07-31 17:45:04 +08:00
Jiang Jiang Jian
593ca2255c Merge branch 'mesh/bugfix_set_type_v3.3' into 'release/v3.3'
Mesh/bugfix (backport v3.3)

See merge request espressif/esp-idf!9179
2020-07-30 21:17:11 +08:00
Chen Yudong
dc5eeb8e4b ci: fix auto test script uses incorrect branch 2020-07-30 20:55:37 +08:00
Roland Dobai
62fea80a01 Tools: Close temporary file before invoking external tools accessing it 2020-07-29 20:24:30 +02:00
Jiang Jiang Jian
44791067ec Merge branch 'nimble/nrpa_support_v3.3' into 'release/v3.3'
NimBLE: Add Non-Resolvable private address support and misc fixes (Backport v3.3)

See merge request espressif/esp-idf!9735
2020-07-29 16:35:25 +08:00
Michael (XIAO Xufeng)
55bb42dc63 sdmmc: fix the probe issue that forbid sdspi working in highspeed mode
SD cards don't support CMD7 (select_card) in SPI mode. Highspeed probe
of sdspi will fail in this step and stop working in highspeed mode.
Remove the CMD7 in enable_hs_mode_and_check to fix this issue.

Please note that, on ESP32, you have to use the IOMUX pins to use sdspi
in 40MHz, otherwise the initialization process will report reading issue
and fail.
2020-07-28 19:09:38 +08:00
Wielebny666
fc8ba15b33 Fix init MCPWM Fault line via config struct
Signed-off-by: wubowen <wubowen@espressif.com>

Merges https://github.com/espressif/esp-idf/pull/5491
Closes https://github.com/espressif/esp-idf/issues/5433
2020-07-28 03:44:36 +00:00
Chinmay Chhajed
6bbb75f219 Bluedroid: Fixes cases having fallback to link up event.
Signed-off-by: Chinmay Chhajed <chinmay.chhajed@espressif.com>
2020-07-27 14:08:03 +05:30
Angus Gratton
4f5577446b Merge branch 'bugfix/rs485_test_temp_disable_v33' into 'release/v3.3'
Bugfix/rs485 test temp disable v33 (backport v3.3)

See merge request espressif/esp-idf!9521
2020-07-24 11:14:57 +08:00
Prasad Alatkar
7aab15f33d NimBLE: Add Non-Resolvable private address support and misc bug fixes (Backport v3.3)
- Merges https://github.com/espressif/esp-nimble/pull/12
- Fixes repeated pairing failure in RPA feature

Closes https://github.com/espressif/esp-idf/issues/5530
2020-07-23 11:28:42 +05:30
aleks
b64f4bced8 ci: temporarily disable RS485 related tests 2020-07-22 08:46:57 +00:00
Angus Gratton
bf02206096 Merge branch 'ci/workaround_multiple_ci_failures_v3.3' into 'release/v3.3'
CI: workaround multiple ci failures (v3.3)

See merge request espressif/esp-idf!9687
2020-07-22 11:54:45 +08:00
yuanjm
e5066c9969 feat(lwip): make LWIP TCP rto time configurable 2020-07-20 07:58:06 +00:00
Angus Gratton
07942e3991 Merge branch 'bugfix/cmake_bugfixes_v3.3' into 'release/v3.3'
CMake-related bugfixes (v3.3)

See merge request espressif/esp-idf!8069
2020-07-20 08:43:52 +08:00
Angus Gratton
62a187b55b Merge branch 'feature/msys2_toolchain_v3.3' into 'release/v3.3'
windows: Update the prebuilt MSYS2 environment to use new toolchain

See merge request espressif/esp-idf!9624
2020-07-20 08:23:08 +08:00
He Yin Ling
858e12a040 CI: do not run cases likely to fail 2020-07-19 15:30:15 +08:00
He Yin Ling
bfb7757feb CI: disable cases with test env SSC_T5_1 2020-07-19 15:26:29 +08:00
He Yin Ling
de82bd5d19 CI: temp allow mesh job to fail as runner is not stable 2020-07-19 15:24:55 +08:00
He Yin Ling
9a205c654d CI: remove incorrect MTU related cases 2020-07-19 15:23:21 +08:00
Angus Gratton
ff2fef7e91 windows: Update the prebuilt MSYS2 environment to use then new toolchain
No other changes in the environment contents.
2020-07-15 12:04:09 +10:00
chenyudong
83fdac780c mesh/ci: fix MESH_EST_0216 2020-07-10 17:57:36 +08:00
chenyudong
7c95474f6c mesh: backport some bugfixes
1. If the root is specified (FIXED-ROOT) by set type or set parent, change ie.mesh_type to MESH_ROOT before connect to router.
2. Release esp_mesh_recv_toDS when the root becomes non-root.
3. esp_mesh_set_type now supports MESH_IDLE and MESH_STA.
4. Fix ie.rc_rssi is not updated during scan and vote.
5. Fix ie.mesh_type do not match ie.layer caused by parent switch.
6. Fix during root switch, the original root doesn't disconnect from the router after it receives the switch request from the new voted root. (root switch happens by invoking esp_mesh_waive_root).
7. Fix the routing announce timer is not stopped immediately in a new root if the new root is transformed from non-root.
8. Choose the candidate with less ie.assoc when doing parent switch.
2020-07-10 17:57:34 +08:00
lly
28c0673376 ble_mesh: stack: Add two application macros for TTL 2020-07-10 09:15:56 +08:00
lly
9eb66d49e4 ble_mesh: stack: Update send_ttl in btc when recv a msg
Update send_ttl mainly for server models. When a server model
receives a message, and the status is required to be replied
by the application, we need to set send_ttl to the msg context.
If send_ttl is not updated in btc, and the applcation does not
set the TTL either, then the status will be replied with TTL=0,
which may cause the client side (e.g. the phone App) failed to
receive the status.

Closes https://github.com/espressif/esp-idf/issues/5300
2020-07-10 09:15:49 +08:00
Shubham Kulkarni
b45e2699b2 Increase receive timeout in sdkconfig.ci to fix CI failures 2020-07-08 10:02:07 +05:30
Shubham Kulkarni
e84ad136b9 esp_https_ota.c: Add fix to return failure if (-1) is returned from esp_http_client_read
Closes https://github.com/espressif/esp-idf/issues/4960
2020-07-08 10:00:48 +05:30
Shubham Kulkarni
22926742be esp_http_client.c: In esp_http_client_read, add fix to return (-1) if esp_transport_read fails 2020-07-08 10:00:48 +05:30
Angus Gratton
a4fe300cc9 Merge branch 'bugfix/bootloader_efuse_clock_freq_v3.3' into 'release/v3.3'
bootloader: Fix regression burning efuses late in boot process

See merge request espressif/esp-idf!9489
2020-07-08 10:29:01 +08:00
Marius Vikhammer
a3ef357b8d Docs: fix broken example README links 2020-07-07 18:22:55 +08:00
Angus Gratton
9d6c3632e8 bootloader: Fix regression burning efuses late in boot process
APB clock get functions not included in iram_loader_seg, meaning
could be overwritten by app depending on app IRAM size and linker
layout.

Regression in dd5190868a

Closes https://github.com/espressif/esp-idf/issues/5456
2020-07-06 16:42:46 +10:00
Jiang Jiang Jian
4891fcea78 Merge branch 'bugfix/beacon_security_downgrade_v3.3' into 'release/v3.3'
Avoid parsing RSN/WPA IE's after connection (Backport v3.3)

See merge request espressif/esp-idf!9268
2020-07-03 14:32:04 +08:00
Island
bfb3690821 Merge branch 'bugfix/ble_mesh_fast_prov_misc_update_v3.3' into 'release/v3.3'
Bugfix/ble mesh fast prov misc update (v3.3)

See merge request espressif/esp-idf!9464
2020-07-03 11:13:39 +08:00
lly
8753fb359a ble_mesh: stack: Update some fast prov functions 2020-07-03 08:54:59 +08:00
lly
bbf4ce8d18 ble_mesh: stack: Move fast prov functions to a single file 2020-07-03 08:54:51 +08:00
Island
be526abc13 Merge branch 'bugfix/ble_mesh_split_tinycrypt_v3.3' into 'release/v3.3'
Bugfix/ble mesh split tinycrypt (v3.3)

See merge request espressif/esp-idf!9373
2020-07-02 22:45:50 +08:00
Nachiket Kukade
2edc576419 esp_wifi: Update wifi lib
1. Avoid parsing RSN/WPA IE's after connection
2. Remove AUTH_CHANGED reason code logic
2020-07-02 04:06:35 +00:00
lly
d76a3a8372 ble_mesh: ci: Fix failing to compile when using make 2020-07-02 03:38:18 +00:00
lly
e36105156c ble_mesh: Mark platform related default RNG as 0 2020-07-02 03:38:18 +00:00
lly
9060de827f ble_mesh: Remove the previously added redundant aes files 2020-07-02 03:38:18 +00:00
lly
8887bd5f3c ble_mesh: Update CMake and make files for tinycrypt 2020-07-02 03:38:18 +00:00
lly
0940f5b2c3 ble_mesh: Update tinycrypt header file include guards
Add BLE_MESH in the macro to make it specific for BLE Mesh.
2020-07-02 03:38:18 +00:00
lly
d690e52993 ble_mesh: Format source and header files of tinycrypt 2020-07-02 03:38:18 +00:00
lly
12b9f59559 ble_mesh: Port full implementation of tinycrypt [Zephyr]
- Original code is here: https://github.com/zephyrproject-rtos/tinycrypt
- Also this fixes the compile error when NimBLE and ESP BLE Mesh
  both uses the tinycrypt.
2020-07-02 03:38:18 +00:00
Island
d7353cd2ea Merge branch 'bugfix/ble_mesh_readme_fix_v3.3' into 'release/v3.3'
ble_mesh: example: Fix example README & tutorial link error (v3.3)

See merge request espressif/esp-idf!9437
2020-07-02 11:29:54 +08:00
Island
742f40a211 Merge branch 'bugfix/ble_mesh_compile_error_v3.3' into 'release/v3.3'
Bugfix/ble mesh compile error (v3.3)

See merge request espressif/esp-idf!9433
2020-07-02 11:29:15 +08:00
lly
144ae4a7fd ble_mesh: example: Fix example README & tutorial link error 2020-07-01 14:40:42 +08:00
fuzhibo
44887f5fde Driver(adc): Disable the synchronization operation function of ADC1 and DAC
Closes IDF-1585
2020-07-01 06:16:35 +00:00
lly
7a939c148c ble_mesh: ci: Add different proxy configurations 2020-07-01 12:36:08 +08:00
lly
f835011e2f ble_mesh: stack: Fix compile error when only proxy enabled
Also remove some redundant CONFIG_BLE_MESH_PROXY checks, because
when the following options are satisfied, the CONFIG_BLE_MESH_PROXY
option will be selected mandatorily.
2020-07-01 12:32:04 +08:00
Island
021e23ebf7 Merge branch 'bugfix/ble_mesh_check_subnet_before_update_beacon_sent_v3.3' into 'release/v3.3'
ble_mesh: Check if subnet exists before updating beacon_sent (v3.3)

See merge request espressif/esp-idf!9398
2020-07-01 11:17:08 +08:00
Island
31b52a5c05 Merge branch 'bugfix/ble_mesh_set_recv_rssi_v3.3' into 'release/v3.3'
Bugfix/ble mesh set recv rssi (v3.3)

See merge request espressif/esp-idf!9392
2020-07-01 11:15:48 +08:00
wangcheng
095098da0f components/bt:Fixed the problem of incomplete data packets caused by disordered acl data packets 2020-06-30 15:56:49 +08:00
wangcheng
58feea1a0e components/bt: Consider link_xmit_data_q in congest events to prevent excessive memory usage 2020-06-30 15:56:17 +08:00
Jiang Jiang Jian
46bc9e5dc4 Merge branch 'feature/bt_secure_conn_downgrade_check_v3.3' into 'release/v3.3'
Bluedroid: Authentication fixes in Legacy and Secure Connection.

See merge request espressif/esp-idf!9332
2020-06-30 15:12:21 +08:00
lly
9f6375db50 ble_mesh: Check if subnet exists before updating beacon_sent
- Before updating the "beacon_sent" of a subnet, we need to check
  if the subnet still exists, especially for a Provisioner.
- Fix a bug which will cause Provisioner failed to send Secure
  Network Beacon if no device is provisioned
2020-06-30 09:23:28 +08:00
lly
96865524c7 ble_mesh: stack: Copy recv_rssi for other received messages
Follow the commit: 2b80cb6883,
copy the recv_rssi for other mesh messages.
2020-06-30 09:06:42 +08:00
mbroek
86cad8b825 When a generic mesh model message is received "bt_mesh_generic_server_cb_evt_to_btc" copies the
ctx values to cb_params for the mesh stack.

recv_rssi was not copied.

This means the rssi could not be read when receiving generic server messages using ble_mesh.
2020-06-30 09:06:31 +08:00
Mahavir Jain
d6a63531ce Merge branch 'bugfix/http_server_lru_v3.3' into 'release/v3.3'
esp_http_server: Update LRU counter on accepting a new connection (v3.3)

See merge request espressif/esp-idf!9353
2020-06-29 12:57:43 +08:00
Island
370bb55f42 Merge branch 'bugfix/ble_mesh_get_node_with_name_v3.3' into 'release/v3.3'
ble_mesh: Get node info with pre-configured node name (v3.3)

See merge request espressif/esp-idf!9304
2020-06-28 20:25:13 +08:00
Island
70b7a4b868 Merge branch 'bugfix/ble_mesh_example_tag_define_v3.3' into 'release/v3.3'
ble_mesh: Move TAG definition to each example (v3.3)

See merge request espressif/esp-idf!9308
2020-06-28 20:24:44 +08:00
Island
1fb6ffecad Merge branch 'bugfix/ble_mesh_bt_hex_v3.3' into 'release/v3.3'
ble_mesh: Fix wrong log output with bt_hex (v3.3)

See merge request espressif/esp-idf!9311
2020-06-28 20:23:56 +08:00
Island
036828a172 Merge branch 'bugfix/ble_mesh_not_define_bool_v3.3' into 'release/v3.3'
Bugfix/ble mesh not define bool (v3.3)

See merge request espressif/esp-idf!9318
2020-06-28 20:22:50 +08:00
Island
b9cc633b50 Merge branch 'bugfix/ble_mesh_check_model_status_v3.3' into 'release/v3.3'
ble_mesh: stack: Check model status with variable length (v3.3)

See merge request espressif/esp-idf!9321
2020-06-28 20:22:11 +08:00
Shubham Kulkarni
673e433281 esp_http_server: Update LRU counter on accepting a new connection
Closes https://github.com/espressif/esp-idf/issues/3851
2020-06-26 19:25:42 +05:30
Chinmay Chhajed
99d572700d Bluedroid: Authentication fixes in Legacy and Secure Connection.
Prevent a remote device from doing a Bluetooth Impersonation Attack
(BIAS) by:

- Preventing remote device to downgrade secure connection
feature mask. Secure connection feature mask should remain same or
increase to enabled in link key generation and authentication.

- Doing a mutual authentication during Legacy Authentication.
2020-06-25 13:59:14 +00:00
Anton Maklakov
f4333c8e3a Merge branch 'feature/toolchain_gcc52_psram_fixes_v3.3' into 'release/v3.3'
Update the toolchain for backport PSRAM workaround and memw  fixes (v3.3)

See merge request espressif/esp-idf!9228
2020-06-25 10:38:27 +08:00
lly
42378c8e19 ble_mesh: Move TAG definition to each example
Move the TAG definition of each example to the corresponding
source file (previously it is defined in the common example
intialization header file), which can avoid the redefinition
of TAG in some situations.
2020-06-24 12:06:58 +00:00
Anton Maklakov
ff29e3e7a2 Update toolchain to 1.22.0-96-g2852398
PSRAM workaround fixes,
    Volatile loads with memw fixes
2020-06-24 11:56:59 +00:00
lly
ad970addf0 ble_mesh: Get node info with pre-configured node name
Also add a function to get the entry of the nodes table.

Closes https://github.com/espressif/esp-idf/issues/5397
2020-06-24 11:53:59 +00:00
lly
adbc337023 ble_mesh: Fix wrong log output with bt_hex
- This issue was introduced in the commit: a788e7cd3d
  which updated the bt_hex() function incorrectly.
- And in bt_hex(), we use 2 for the two-dimensional array, because currently
  at most two bt_hex() will be used at the same time. Also this will save
  some DRAM compared with using 4.
2020-06-24 11:50:58 +00:00
lly
1dbbc55cc0 ble_mesh: Remove boolean type definitions 2020-06-24 11:46:51 +00:00
Nikolaos Strikos
0526de4536 ble_mesh: Do not #define bool when compiling in C++ 2020-06-24 11:46:51 +00:00
lly
366dd9759d ble_mesh: stack: Check model status with variable length 2020-06-24 11:41:58 +00:00
Anton Maklakov
f0b4c08e77 Merge branch 'bugfix/python_lint_v3.3' into 'release/v3.3'
tools: fix python lint (v3.3)

See merge request espressif/esp-idf!9328
2020-06-24 19:37:22 +08:00
morris
9b9502451a tools: fix python lint 2020-06-24 15:14:22 +08:00
Jiang Jiang Jian
39e5184159 Merge branch 'bugfix/fix_event_bug_in_GAP_API_release_v3.3' into 'release/v3.3'
Bugfix/fix event bug in GAP API [backport v3.3]

See merge request espressif/esp-idf!9195
2020-06-23 12:19:04 +08:00
David Čermák
e3f3e0ae0f Merge branch 'feature/ws_timeout_v3.3' into 'release/v3.3'
websocket: add configurable timeout for PONG not received (v3.3)

See merge request espressif/esp-idf!8911
2020-06-19 02:22:08 +08:00
Elvis Dukaj
048fd80450 ble_hid_device_demo: fix build if building with c++
Signed-off-by: Elvis Dukaj <elvis.dukaj@gmail.com>
Signed-off-by: liminyang <liminyang@example.com>

Merges https://github.com/espressif/esp-idf/pull/5191
2020-06-18 15:52:56 +08:00
liminyang
6ac7ceef9e docs:perfect 128-bit UUID description
The previous description is not easy for the reader to understand, some changees have been made to perfect it.
Closes https://github.com/espressif/esp-idf/issues/5057
2020-06-18 15:02:44 +08:00
Island
2ea53169ad Merge branch 'bugfix/blufi_buffer_overflow_report_v3.3' into 'release/v3.3'
blufi: When the format of the received data packet is wrong, reply with an error response(backport 3.3)

See merge request espressif/esp-idf!9198
2020-06-18 13:45:34 +08:00
Michael (XIAO Xufeng)
2aaf254d44 Merge branch 'bugfix/fix_fifo_cnt_bug_v3.3' into 'release/v3.3'
bugfix(uart): fix esp32 uart fifo_cnt bug(backport v3.3)

See merge request espressif/esp-idf!9042
2020-06-18 01:43:04 +08:00
David Čermák
e25b710a02 Merge branch 'bugfix/ws_send_abort_v3.3' into 'release/v3.3'
websocket client: the client now aborts the connection if send fails (v3.3)

See merge request espressif/esp-idf!8903
2020-06-17 15:05:48 +08:00
wangcheng
563c9901ca blufi: When the format of the received data packet is wrong, reply with an error response 2020-06-17 12:32:57 +08:00
liqigan
02f9eaa31a components/bt: Adjust the description of esp_bt_gap_start_discovery and esp_bt_gap_cancel_discovery.
Add some comments to explain why `ESP_BT_GAP_DISC_STATE_CHANGED_EVT` is not reported.
2020-06-17 11:27:37 +08:00
Marius Vikhammer
b478dc4ad6 websocket: add configurable timeout for PONG not received
Closes IDF-1744
2020-06-17 11:13:26 +08:00
xiongyu
c9d9545310 bugfix(uart): fix esp32 uart fifo_cnt bug
When using DPort to read fifo, fifo_cnt is not credible, we need to calculate the real cnt based on the fifo read and write pointer. When using AHB to read FIFO, we can use fifo_cnt to indicate the data length in fifo.
2020-06-15 12:22:33 +08:00
Angus Gratton
332e243f17 Merge branch 'feature/msys2_env_update_v3.3' into 'release/v3.3'
windows: Update pre-compiled MSYS2 environment

See merge request espressif/esp-idf!9035
2020-06-12 07:26:41 +08:00
Angus Gratton
5e84ee108c Merge branch 'bugfix/bootloader_efuse_build_regression_v3.3' into 'release/v3.3'
bootloader: add definition of esp_clk_apb_freq (v3.3)

See merge request espressif/esp-idf!9093
2020-06-10 16:01:35 +08:00
Angus Gratton
f17f59fb54 Merge branch 'bugfix/parttool_get_info_wo_info_option_v3.3' into 'release/v3.3'
partition_table: Fix parttool.py crashes when retrieving partition info (v3.3)

See merge request espressif/esp-idf!9065
2020-06-10 15:58:01 +08:00
Jiang Jiang Jian
2f6f842d0f Merge branch 'bugfix/collection_of_confirmed_fixes_from_baidu_project_3.3' into 'release/v3.3'
Backport MR for baidu project for release/v3.3

See merge request espressif/esp-idf!8990
2020-06-10 13:08:11 +08:00
weitianhua
282433500e Backport MR from baid proj 2020-06-10 03:53:21 +00:00
Ivan Grokhotkov
618794e1fb bootloader: add definition of esp_clk_apb_freq
Commit 8cd04c80 has added a dependency of efuse component on
esp_clk_apb_freq, however there was no definition of this function in
the bootloader context.

Reported at https://esp32.com/viewtopic.php?f=13&t=12035

Closes: https://github.com/espressif/esp-idf/issues/5396
2020-06-08 16:45:29 +08:00
Jiang Jiang Jian
eaca5a11e4 Merge branch 'bugfix/authmode_degrade_fix_v3.3' into 'release/v3.3'
esp_wifi: Remove auth_changed event and fix wpa2_ent authmode threshold (backport 3.3)

See merge request espressif/esp-idf!9058
2020-06-05 13:59:48 +08:00
Jiang Jiang Jian
b4c89c6607 Merge branch 'bugfix/add_so_linger_to_menuconfig_for_3.3' into 'release/v3.3'
lw-ip:add LINGER to menuconfig(backport 3.3)

See merge request espressif/esp-idf!9062
2020-06-05 13:54:22 +08:00
Jiang Jiang Jian
a5a6ba895e Merge branch 'optimization/DNS_get_function_for_3.3' into 'release/v3.3'
lw-ip:optimization DNS get function(backport 3.3)

See merge request espressif/esp-idf!9061
2020-06-05 13:54:07 +08:00
Jiang Jiang Jian
b336851479 Merge branch 'workaround/wps_iot_fixes_v3.3' into 'release/v3.3'
wpa_supplicant: WPS Inter operatability Fixes ( backport v3.3)

See merge request espressif/esp-idf!9060
2020-06-05 13:49:24 +08:00
Michael (XIAO Xufeng)
ace2cff01a Merge branch 'bugfix/sdmmc_check_slot_before_pullup_3.3' into 'release/v3.3'
sdmmc: Correctly check function parameters before using them (3.3)

See merge request espressif/esp-idf!9057
2020-06-05 07:19:11 +08:00
KonstantinKondrashov
28d3d6daac partition_table: Fix parttool.py crashes when retrieving partition info
Closes: IDFGH-3279
Closes: https://github.com/espressif/esp-idf/issues/5271
2020-06-04 16:43:06 +08:00
Angus Gratton
14f4c196c0 windows: Update other MSYS2 package names to all be Python 3 2020-06-04 18:39:20 +10:00
kapil.gupta
21395421d1 wpa_supplicant: WPS Inter operatability Fixes
Add WPS IOT fixes under config option

Current fixes under this flag.
1. Allow NULL-padded WPS attributes.
2. Bypass WPS-Config method validation
2020-06-04 13:57:20 +05:30
xueyunfei
68d1afb47d add LINGER to menuconfig 2020-06-04 16:16:03 +08:00
xueyunfei
32b3c255ac optimization DNS get function 2020-06-04 16:05:17 +08:00
Jiang Jiang Jian
c13b946773 Merge branch 'bugfix/modify_TCP_MSS_range_v3.3' into 'release/v3.3'
Change the default value of TCP_MSS (backport v3.3)

See merge request espressif/esp-idf!9050
2020-06-04 15:59:17 +08:00
Jiang Jiang Jian
3838da57f0 Merge branch 'bugfix/compiler_err_when_performance_optimization_enabled_v3.3' into 'release/v3.3'
Bugfix/compiler err when performance optimization enabled v3.3

See merge request espressif/esp-idf!7979
2020-06-04 15:58:34 +08:00
kapil.gupta
1625c595ff esp_wifi: Remove auth_changed event and fix wpa2 authmode threshold 2020-06-04 13:13:21 +05:30
Nachiket Kukade
c6ca42b1e7 wpa_supplicant: Allow NULL-padded WPS attributes
Some AP's keep NULL-padding at the end of some variable length WPS
Attributes. This is not as par the WPS2.0 specs, but to avoid interop
issues, ignore the padding by reducing the attribute length by 1.
2020-06-04 12:18:43 +05:30
Alexander Borsuk
cccd679b3e sdmmc: Correctly check function parameters before using them
Closes https://github.com/espressif/esp-idf/pull/5000
2020-06-04 12:07:16 +08:00
xiehang
6f26e72817 Change the default value of TCP_MSS to 1440 and TCP_MSS Range : [536 1460] 2020-06-04 12:04:14 +08:00
Island
ad2447a6ea Merge branch 'bugfix/ble_mesh_remove_relay_dependency_v3.3' into 'release/v3.3'
ble_mesh: Remove relay option dependency (v3.3)

See merge request espressif/esp-idf!9028
2020-06-03 15:20:56 +08:00
Island
686530d373 Merge branch 'bugfix/ble_mesh_example_nvs_store_v3.3' into 'release/v3.3'
Bugfix/ble mesh example nvs store (v3.3)

See merge request espressif/esp-idf!9018
2020-06-03 15:12:28 +08:00
Island
c3902be87f Merge branch 'bugfix/ble_mesh_model_recv_fix_v3.3' into 'release/v3.3'
Bugfix/ble mesh model recv fix (v3.3)

See merge request espressif/esp-idf!9009
2020-06-03 15:11:38 +08:00
Island
88937185ac Merge branch 'bugfix/ble_mesh_rework_prov_pdu_len_check_v3.3' into 'release/v3.3'
ble_mesh: Rework prov pdu length check (v3.3)

See merge request espressif/esp-idf!9005
2020-06-03 15:11:11 +08:00
lly
7937a51779 ble_mesh: Remove relay option dependency
When the relay functionality of a node is not enabled, this
issue will cause the node failing to send messages to fixed
group.
2020-06-02 19:19:18 +08:00
Jiang Jiang Jian
a94842d8f7 Merge branch 'bugfix/fix_some_wifi_bugs_0525_v3.3' into 'release/v3.3'
feature: optimize some wifi API  (backport v3.3)

See merge request espressif/esp-idf!8893
2020-06-02 17:39:23 +08:00
lly
5d72e0c33c ble_mesh: Add nvs operations for examples
- Store onoff_client example proper mesh info
- Store vendor_client example proper mesh info

Closes https://github.com/espressif/esp-idf/issues/5359
2020-06-02 17:29:44 +08:00
lly
cabd3b9e76 ble_mesh: Add mesh example common nvs operations 2020-06-02 17:28:44 +08:00
Angus Gratton
90be3b4970 windows: Update pre-compiled MSYS2 environment
* Latest MSYS2 packages
* Uses Python 3 now (no more Python 2 in MSYS2)

This pre-compiled package is not suitable of ESP-IDF v4.x
2020-06-02 18:32:42 +10:00
weitianhua
afae411857 Remove (x2) varible for BCM_STRNCPY_S and BCM_STRCPY_S 2020-06-02 08:30:02 +00:00
weitianhua
437bee123c Initialize mem_start and mem_end 2020-06-02 08:30:02 +00:00
lly
cb0288d399 ble_mesh: Config and health client btc fixes
Fix an issue which may cause no error code is returned
when sending config client or health client messages
with invalid parameters.
2020-06-02 14:05:26 +08:00
lly
59cdd33dcf ble_mesh: Add more checks of net_idx & app_idx 2020-06-02 14:05:19 +08:00
lly
36c476833f ble_mesh: Optimize some send & recv logs 2020-06-02 14:05:12 +08:00
Michael (XIAO Xufeng)
13154fe5c6 Merge branch 'bugfix/fix_gpio_wake_up_disable_invalid_for_rtc_io_v3.3' into 'release/v3.3'
bugfix (GPIO): fixed gpio_wake_up_disable not working for RTC IO (release/3.3)

See merge request espressif/esp-idf!7997
2020-06-02 11:16:59 +08:00
Island
bce064e655 Merge branch 'bugfix/ble_mesh_local_model_sub_v3.3' into 'release/v3.3'
Bugfix/ble mesh local model sub (v3.3)

See merge request espressif/esp-idf!8985
2020-06-02 10:58:50 +08:00
lly
ac565c97a3 ble_mesh: correct the return type [Zephyr] 2020-06-02 10:33:12 +08:00
lly
8c5a8bef50 ble_mesh: Add net_buf_simple_init_with_data [Zephyr] 2020-06-02 10:33:05 +08:00
lly
ac76870ad7 ble_mesh: Optimize model recv operations [Zephyr]
Previously the model recv operation is a littl fuzzy.
With the changes, the model recv operation is splitted into:
- find op
- check app_idx
- check dst
- check length
- update info & handle message
2020-06-02 10:32:57 +08:00
lly
a96e1b80ac ble_mesh: Rework prov pdu length check 2020-06-02 10:17:20 +08:00
Mahavir Jain
3f57aecabd Merge branch 'bugfix/httpd_lru_purge_v3.3' into 'release/v3.3'
esp_http_server: Fixed a bug which could cause issues with LRU purge (v3.3)

See merge request espressif/esp-idf!8834
2020-06-01 11:23:53 +08:00
houwenxiang
eab88f51e7 driver(GPIO): fixed gpio_wake_up_disable not working for RTC IO (release/3.3) 2020-06-01 11:16:07 +08:00
lly
6abdc9e542 ble_mesh: Local model (un)subscribes group address 2020-06-01 09:13:57 +08:00
lly
0ee9227b45 ble_mesh: Define a macro for invalid company id 2020-06-01 09:13:43 +08:00
ronghulin
8f3209b7b7 feature: optimize some wifi API
1. optimization esp_wifi_set_max_tx_power description
2. add API esp_wifi_ap_get_sta_aid
2020-05-29 12:02:24 +08:00
Jiang Jiang Jian
d7e6eecd66 Merge branch 'bufix/fix_v3.3_bluedroid_bugs_mr' into 'release/v3.3'
component/bt: fix notify malloc failed , fix no BLE_AUTH_CMPL_EVT and fix bluedroid btc deinit crash(backport 3.3)

See merge request espressif/esp-idf!8754
2020-05-29 11:25:41 +08:00
zwj
38e98acca1 :add congest direct callback and modify congest evt triger threshold 2020-05-28 12:06:10 +00:00
wangcheng
340e40abbe master missing BLE_AUTH_CMPL_EVT after restart 2020-05-28 12:06:10 +00:00
wangcheng
ed3a172df7 fix bta_dm_deinit_cb 2020-05-28 12:06:10 +00:00
Jiang Jiang Jian
27f03b4ac0 Merge branch 'bugfix/ble_mesh_check_timer_init_v3.3' into 'release/v3.3'
ble_mesh: Check the result of creating timer (v3.3)

See merge request espressif/esp-idf!8960
2020-05-28 15:26:53 +08:00
Jiang Jiang Jian
706d704c08 Merge branch 'nimble/update_nimble_submodule_v3.3' into 'release/v3.3'
NimBLE: Include upstream fixes and use macros for log level filtering (backport v3.3)

See merge request espressif/esp-idf!8798
2020-05-28 15:23:31 +08:00
lly
b5f3f79716 ble_mesh: Check the result of creating timer 2020-05-28 10:28:36 +08:00
Island
5f43d69d21 Merge branch 'bugfix/ble_mesh_sync_zephyr_fixes_v3.3' into 'release/v3.3'
Bugfix/ble mesh sync zephyr fixes (v3.3)

See merge request espressif/esp-idf!8950
2020-05-28 10:17:29 +08:00
Island
a70c956a75 Merge branch 'bugfix/ble_mesh_not_use_same_private_key_v3.3' into 'release/v3.3'
ble_mesh: Not using pre-initialized private key (v3.3)

See merge request espressif/esp-idf!8947
2020-05-28 10:15:40 +08:00
Island
6d9b618a2d Merge branch 'bugfix/ble_mesh_comp_data_store_restore_v3.3' into 'release/v3.3'
ble_mesh: Same func for storing/restoring comp data (v3.3)

See merge request espressif/esp-idf!8944
2020-05-28 10:14:01 +08:00
Piyush Shah
8890fa98c8 esp_http_server: Fixed a bug which could cause issues with LRU purge
LRU counter should be started from 1, and not 0, so that all checks
work fine.

Closes https://github.com/espressif/esp-idf/issues/4753
2020-05-27 17:14:12 +00:00
He Yin Ling
4fa5f9d1a6 Merge branch 'bugfix/ci_push_to_github_on_label_v3.3' into 'release/v3.3'
ci: Don't push to Github or deploy docs on customized pipelines (v3.3)

See merge request espressif/esp-idf!8939
2020-05-27 18:16:13 +08:00
lly
822b20eb40 ble_mesh: Transport tx fields overflow [Zephyr]
The transport segmented TX nack and seg_pending fields must be at least
6 bits to avoid overflow for 32 segment messages. This change rearranges
the seg_tx fields to gather all state flag fields in one byte, while
making the counter fields whole bytes.
2020-05-27 17:45:12 +08:00
lly
b381998a23 ble_mesh: Friend with unknown appkey [Zephyr]
Ensures that friend messages are enqueued, even if the packet is
received with an appkey is unknown to the friend. Previously, sdu_recv
would return EINVAL if the appkey was unknown, which would prevent the
lower transport layer from adding the packet to the friend queue. This
is irrelevant for the logic in lower transport, and should not be
returned as an error.
2020-05-27 17:44:58 +08:00
lly
393e4e9007 ble_mesh: Not using pre-initialized private key 2020-05-27 17:38:41 +08:00
lly
4b191ac6fb ble_mesh: Same func for storing/restoring comp data 2020-05-27 17:32:56 +08:00
Island
322f461439 Merge branch 'example/ble_mesh_structural_adjust_v3.3' into 'release/v3.3'
Example/ble mesh structural adjust (v3.3)

See merge request espressif/esp-idf!8866
2020-05-27 17:22:30 +08:00
Angus Gratton
7b8cd22a46 ci: Don't push to Github or deploy docs on customized pipelines
BOT_TRIGGER_WITH_LABEL must be empty (meaning all tests are running).
2020-05-27 19:08:22 +10:00
Jiang Jiang Jian
221ca4b1e5 Merge branch 'bugfix/fix_some_wifi_bugs_0427_v3.3' into 'release/v3.3'
Bugfix/fix some wifi bugs 0427 (v3.3)

See merge request espressif/esp-idf!8573
2020-05-26 18:57:43 +08:00
David Čermák
0a558ea3c4 Merge branch 'bugfix/ws_client_fragmented_send_v3.3' into 'release/v3.3'
ws_client: fix fragmented send setting proper opcodes (v3.3)

See merge request espressif/esp-idf!8692
2020-05-25 17:22:02 +08:00
Marius Vikhammer
0829b5c5d5 websocket client: the client now aborts the connection if send fails.
Closes IDF-1744
2020-05-25 17:11:23 +08:00
Jiang Jiang Jian
19736dbedc Merge branch 'bugfix/supplicant_general_fixes_33' into 'release/v3.3'
wpa_supplicant: Fix some memleaks and invalid memory access(backport V3.3)

See merge request espressif/esp-idf!8741
2020-05-22 21:18:36 +08:00
Island
a809cdba76 Merge branch 'bugfix/ble_mesh_provisioner_fail_to_pub_v3.3' into 'release/v3.3'
ble_mesh: Fix Provisioner failed to publish (v3.3)

See merge request espressif/esp-idf!8875
2020-05-22 19:14:42 +08:00
lly
879bfc608c ble_mesh: Fix Provisioner failed to publish 2020-05-22 15:49:30 +08:00
David Cermak
612b9e4a58 ws_client: fix fragmented send setting proper opcodes
Previous implementation violated the RFC by having both the actual opcode and WS_FIN flag set for all fragments of a message.
Fixed by setting the opcode only for the first fragment and WS_FIN for the last one

Closes IDFGH-2938
Closes https://github.com/espressif/esp-idf/issues/4974
2020-05-22 06:16:29 +00:00
lly
8bc195db3b ble_mesh: Fix tutorial links in examples README.md 2020-05-22 14:09:21 +08:00
lly
af4ca47300 ble_mesh: Rename esp_fast_prov_* to ble_mesh_fast_prov_* 2020-05-22 14:09:21 +08:00
lly
b98eee2445 ble_mesh: Rename the folders ble_mesh_fast_prov_* to fast_prov_* 2020-05-22 14:09:21 +08:00
lly
0e4faac0ee ble_mesh: Rename ble mesh example main & init files
- Rename ble_mesh_demo_main.c to main.c
- Rename ble_mesh_demo_init.* to ble_mesh_example_init.*
2020-05-22 14:09:21 +08:00
lly
6149b640c9 ble_mesh: Move the example init to the components 2020-05-22 14:08:53 +08:00
lly
bdaf56b17a ble_mesh: Move the button component to components 2020-05-22 10:56:26 +08:00
lly
b6ed032e1d ble_mesh: Change the EXTRA_COMPONENT_DIRS used by examples 2020-05-22 10:56:26 +08:00
lly
ecf7ea897e ble_mesh: Rename common_vendor_models to components
Since the scripts of CI will bypass components when trying
to get EXAMPLE_PATHS, and these BLE Mesh components will
only be used by other mesh examples, i.e. no need to be
compiled as a single example, so we rename the folder
to componnets.
2020-05-22 10:56:26 +08:00
Island
796dc4bb35 Merge branch 'bugfix/ble_mesh_friend_init_flag_v3.3' into 'release/v3.3'
Bugfix/ble mesh friend init flag (v3.3)

See merge request espressif/esp-idf!8849
2020-05-22 10:50:55 +08:00
Island
2ae27a9ae1 Merge branch 'doc/ble_mesh_fix_v3.3' into 'release/v3.3'
ble_mesh: Doc miscellaneous fixes (v3.3)

See merge request espressif/esp-idf!8860
2020-05-22 10:49:27 +08:00
lly
6e8529c08d ble_mesh: Doc miscellaneous fixes
- Update ble mesh architecture
2020-05-21 17:49:58 +08:00
Island
6046e7b26f Merge branch 'bugfix/ble_mesh_node_old_version_to_new_v3.3' into 'release/v3.3'
ble_mesh: Fix mesh node device role restore (v3.3)

See merge request espressif/esp-idf!8725
2020-05-21 15:10:29 +08:00
lly
1b1aea24f0 ble_mesh: Clear two more vars during proxy server deinit 2020-05-21 14:29:04 +08:00
lly
e55c65562c ble_mesh: Add missing sdkconfig.h 2020-05-21 14:28:57 +08:00
lly
1ad9de1131 ble_mesh: Init device name during proxy server init
Device name will be reset when deinit mesh stack. If not
initializing device name during the next mesh stack init,
it will fail to set the device name when using bluedroid.
2020-05-21 14:28:49 +08:00
lly
8e4399bf29 ble_mesh: Add init flag for friend init/deinit
Since bt_mesh_friend_init() will only be invoked when
a device is provisioned or Provisioner is enabled, so
we add a flag to indicate if the friend functionality
is initialized in case deinit before initialization.
2020-05-21 14:28:40 +08:00
Island
cb4e8cef87 Merge branch 'bugfix/ble_mesh_fix_typos_v3.3' into 'release/v3.3'
ble_mesh: Fix typos (v3.3)

See merge request espressif/esp-idf!8727
2020-05-21 11:47:33 +08:00
Island
f55719522e Merge branch 'bugfix/ble_mesh_remove_patch_v3.3' into 'release/v3.3'
ble_mesh: Remove patch for the bug of an App (v3.3)

See merge request espressif/esp-idf!8780
2020-05-21 11:46:49 +08:00
Prasad Alatkar
04e3cf44bc NimBLE: Include upstream fixes and use macros for log level filtering (backport v3.3)
Change list:
- Reduces the size of the compiled binary, PR: https://github.com/espressif/esp-nimble/pull/6
- Null pointer check, PR: https://github.com/apache/mynewt-nimble/pull/701
- Pairing procedure abort on unexpected req: https://github.com/apache/mynewt-nimble/pull/710
- Fix conn flags after pairing: https://github.com/apache/mynewt-nimble/pull/730
- Remove notification for update process timeout (Vol 6, Part B, section 5.2 ):
  https://github.com/apache/mynewt-nimble/pull/782
- CCCD fix : https://github.com/apache/mynewt-nimble/pull/790 and
  https://github.com/apache/mynewt-nimble/pull/804
- Host based Privacy (RPA) fix: https://github.com/espressif/esp-nimble/pull/7

 Closes https://github.com/espressif/esp-nimble/issues/10

 Closes https://github.com/espressif/esp-idf/issues/4413
2020-05-20 16:27:53 +05:30
zhangyanjiao
1a1b3a8538 wifi changes:
1. fix the bug for softAP update second channel wrong
2. change wifi_scan_time_t from union to struct
3. query country code wrong when policy change from manual to auto
4. fix the crash issue when fetch peer after delete the cur_peer
5. fix the timeout issue of EAPOL four-way handshake
2020-05-20 17:55:11 +08:00
zhangyanjiao
c3d4c61650 esp_wifi:Add softap example channel configuration 2020-05-20 11:07:29 +08:00
Jiang Jiang Jian
f56937f0eb Merge branch 'bugfix/fix_switch_channel_without_discon_issue_v3.3' into 'release/v3.3'
esp_wifi: Fix AP switch to adjacent channel without disconnect (backport v3.3)

See merge request espressif/esp-idf!8771
2020-05-18 22:27:12 +08:00
lly
d6e189927e ble_mesh: Remove patch for the bug of an App 2020-05-15 20:24:35 +08:00
xiehang
92e4f84ec5 esp_wifi: Fix AP switch to adjacent channel without disconnect 2020-05-15 14:42:03 +08:00
kapil.gupta
b91bba1a07 wpa_supplicant: Fix some memleaks and invalid memory access
Add changes to fix issues reported in clang analyzer
2020-05-14 11:28:27 +05:30
lly
8cdaf34430 ble_mesh: Fix typos 2020-05-13 18:33:46 +08:00
lly
4f402486c6 ble_mesh: Fix mesh node device role restore
Old version of BLE Mesh has no device role storage, because
previously we only support storing mesh node info.
If the binary of the node is upgraded from old version to a
new version (support storing provisioner info), the mesh info
of the node will not be restored because mesh role does not
exist in the flash.
2020-05-13 18:24:44 +08:00
Island
19893abd04 Merge branch 'bugfix/sync_zephyr_bt_mesh_bugfix_v3.3' into 'release/v3.3'
Bugfix/sync zephyr bt mesh bugfix (v3.3)

See merge request espressif/esp-idf!8689
2020-05-13 18:15:22 +08:00
Island
b3c40e8e06 Merge branch 'bugfix/ble_mesh_not_ignore_msg_in_fast_prov_v3.3' into 'release/v3.3'
ble_mesh: Not ignore msg when fast prov is enabled (v3.3)

See merge request espressif/esp-idf!8712
2020-05-13 18:14:51 +08:00
lly
46a8982a80 ble_mesh: A specific fix for compile warning in idf3.3
- Remove the extra #include "bt_common.h" in mesh_timer.c
- Compared with the latest idf, idf3.3 defines BIT(nr) in
  the "soc/soc.h" without the pre-condition "#ifndef BIT",
  which will cause compile warning when using mesh. So we
  include the header file "soc/soc.h" in "mesh_util.h",
  which can bypass the definition of "BIT" in "mesh_util.h"
  when compiling.
2020-05-13 03:40:30 +00:00
lly
8deabb7945 ble_mesh: Fix not update prov addr in fast prov
When using fast provisioning, the Provisioner functionality
will be enabled. Unicast addresses within the pre-allocated
range will be used for provisioning nodes. And during the
address assignment, the allocated unicast address will be
checked that if it's duplicated with other nodes addresses
and the Provisioner's own addresses.
So before starting using fast provisioning, we need to update
the Provisioner address.
2020-05-13 03:40:30 +00:00
lly
f1abf94922 ble_mesh: net_key_status only pull one key idx [Zephyr]
Fixes bug where the config client's net_key_status handler would attempt
to pull two key indexes from a message which only holds one.
2020-05-13 03:40:30 +00:00
lly
f5f9d34443 ble_mesh: Update client message timeout calculation
Since the behavior of sending segmented messages has been
changed properly, the calculation of timeout value which
will be used when sending an acknowledged message by a
client model also needs to be updated.
2020-05-13 03:40:30 +00:00
lly
08a463907e ble_mesh: Add lock for segmented msg operations
Add mutex to protect some variables of the mesh segmented
messages.
Currently the timeout handler of mesh will be executed in
the btc task, while the received mesh messages will be
handled in the btu task. In case some variables are set to
NULL when handled in the btu task, meanwhile these variables
are also accessed in the timeout handler, so we add mutex to
protect these variables and related operations.
2020-05-13 03:40:30 +00:00
lly
367677c3bb ble_mesh: Fix dereferencing pointer before checking for NULL [Zephyr]
The publication context is checked for NULL in bt_mesh_model_publish()
however it was dereferenced before that. Move the assignment to
ctx.send_rel to the same place where other ctx members are set.
2020-05-13 03:40:30 +00:00
lly
b0a6fc7937 ble_mesh: Optimize some mesh log output 2020-05-13 03:40:30 +00:00
lly
30d62cc00f ble_mesh: Fix restore when revoke keys [Zephyr]
Store keys (NetKey and AppKey) again after revoking.
2020-05-13 03:40:30 +00:00
lly
2983f6edb1 ble_mesh: Spit mesh_util.h into different header files
Split mesh_util.h into mesh_byteorder.h, mesh_compiler.h,
mesh_ffs.h and mesh_util.h based on the classification of
Zephyr, which will make further porting more clear.
2020-05-13 03:40:30 +00:00
lly
35c5a7a08c ble_mesh: Split mesh os related into a separate file 2020-05-13 03:40:30 +00:00
lly
0daac93e4e ble_mesh: Split mesh mutex into a separate file 2020-05-13 03:40:30 +00:00
lly
ec34cd8338 ble_mesh: Rename mesh_kernel.* to mesh_timer.* 2020-05-13 03:40:30 +00:00
lly
92cfbe3c6c ble_mesh: Add and use transport macro definitions [Zephyr] 2020-05-13 03:40:30 +00:00
lly
e2186b1d3a ble_mesh: Friend SeqAuth cleanup [Zephyr]
The Friend queue uses the message SeqAuth to determine whether the
message is already in the queue. To facilitate this, the SeqAuth is
passed around as a pointer throughout the transport modules. In the
bt_mesh_ctl_send functions, this parameter is also exposed in the API,
but the internal usage is inconsistent and buggy. Also, no one actually
uses this parameter.

- Removes seq_auth param from bt_mesh_ctl_send, instead passing NULL
  directly to the friend module, to enforce its addition to the queue.
- Makes the seq_auth pointer const throughout the friend module.
2020-05-13 03:40:30 +00:00
lly
489d32663b ble_mesh: Rework msg_cache [Zephyr]
Changes the behavior of the message cache to optimize for cache
capacity. Previously, the message cache's primary function was to avoid
decrypting messages multiple times, although the cache's main function
in the spec is to avoid message rebroadcasting. Optimizing for minimal
decryption causes us to fill the network cache faster, which in turn
causes more cache misses, potentially outweighing the advantage.

Now stores src + seq in message cache instead of field hash value. This
cuts cache size in two, while including more of the sequence number than
before.

Adds messages to the cache only after the packet is successfully
decrypted. This reduces noise in the cache, and ensures that no
invalid deobfuscations are added.

Additionally, this fixes a bug where multiple calls to net_decrypt with
the same packet failed, as the message cache found its own entry from
the previous call.
2020-05-13 03:40:30 +00:00
lly
febe084113 ble_mesh: Segmented TX to groups [Zephyr]
Implements several changes to the transport layer segmented tx to
improve group message performance:
- Moves retransmit counter to tx context instead of per packet. As every
  unacked packet is sent every retransmit, the retransmit counters would
  be the same in each segment. This makes it easier to control progress.
- Delays the scheduling of the retransmit until the completion of the
  last segment by adding a seg_pending counter. This is essentially the
  same as the old behavior, except that the old behavior might retrigger
  the sending before all segments are finished if the advertising is
  slow.
- Allows the group transmits to stop as soon as all retransmits have
  been exhausted, instead of timing out waiting for acks that won't
  come. This allows group tx to finish without error.
- Fixes a bug where a failed TX would block IV update.
- Cancels any pending transmissions of acked segments.
- Reduces log level for several common group tx scenarios that aren't
  erronous.
2020-05-13 03:40:30 +00:00
lly
b6729860dd ble_mesh: Add comment explaining use of byte order [Zephyr]
Add comment that explains why a different byte order is used for the
3-byte opcode on the CID part of the opcode.
2020-05-13 03:40:30 +00:00
lly
9f9acb6c4a ble_mesh: Use 24-bit functions [Zephyr]
Use 24-bit functions for byteorder and net_buf in order to make the
byteorder used more readable.
2020-05-13 03:40:30 +00:00
lly
6d77a8b0c8 ble_mesh: Optimize net_buf_simple routines [Zephyr]
Use sys_put_xyz() helpers instead of memcpy() whenever possible. This
brings in straight-line inline code for pushes and adds of known,
small sizes.
2020-05-13 03:40:30 +00:00
lly
fa06b60568 ble_mesh: Add PRIu64 & PRIx64 in mesh_types.h 2020-05-13 03:40:30 +00:00
lly
bb09078b65 ble_mesh: Add push functions for supported bit-variants [Zephyr]
Add push functions for bit-widths supported by add and pull functions.
2020-05-13 03:40:30 +00:00
lly
0522ce7cf3 ble_mesh: Add support for 64 bit data type [Zephyr]
This enables pulling and pushing values in 64 bit format.
2020-05-13 03:40:30 +00:00
lly
b41d50908b ble_mesh: Add support for 48 bit data type [Zephyr]
This enables pulling and pushing values in 48 bit format.
2020-05-13 03:40:30 +00:00
lly
be57df5e19 ble_mesh: Add 48 bit variants [Zephyr]
This adds sys_*_*48 functions that operation on a 48 bits values.
2020-05-13 03:40:30 +00:00
lly
fd5e18eb49 ble_mesh: Add support for 24 bit data type [Zephyr]
This enables pulling and pushing values in 24 bit format.
2020-05-13 03:40:30 +00:00
lly
4963d4ddf8 ble_mesh: Add 24 bit variants [Zephyr]
This adds sys_*_*24 functions that operation on a 24 bits values.
2020-05-13 03:40:30 +00:00
lly
bc1722260f ble_mesh: Group resends in proxy nodes [Zephyr]
Resend transport segments for groups on the advertiser interface, even
if a connected proxy node holds the group.
2020-05-13 03:40:30 +00:00
lly
968772d18a ble_mesh: Typo in condition in comp_add_elem of cfg_srv [Zephyr]
Vendor model IDs take up four (not two) bytes in the composition
2020-05-13 03:40:30 +00:00
lly
a45406fe6e ble_mesh: GATT Proxy Spec 1.0.1 changes [Zephyr]
Backport of https://github.com/apache/mynewt-nimble/pull/724

Mesh spec 1.0.1 changes proxy disabling behavior to only affect the
relaying from proxy nodes. Previously, disabling proxy would shut down
all proxy and node activity.

Tweaks from the original commit:
- Removed redundant call to bt_mesh_adv_update() in gatt_proxy_set()
- Removed invalid ref to 4.2.11.1 in node_identity_set()

---

According to Mesh Profile Spec 1.0.1, Section 4.2.11:
"If the Proxy feature is disabled, a GATT client device can connect
over GATT to that node for configuration and control. Messages from
the GATT bearer are not relayed to the advertising bearer."

Moreover some notes have been removed from the spec compared to
version 1.0:

Mesh Profile Spec 1.0, Section 4.2.11:

"Upon transition from GATT Proxy state 0x01 to GATT Proxy state 0x00
the GATT Bearer Server shall disconnect all GATT Bearer Clients."

"The Configuration Client should turn off the Proxy state as the last
step in the configuration process."

Mesh Profile Spec 1.0, Section 4.2.11.1:

"When the GATT Proxy state is set to 0x00, the Node Identity state
for all subnets shall be set to 0x00 and shall not be changed."
2020-05-13 03:40:30 +00:00
lly
10f2ed14eb ble_mesh: Support reliable sending when publishing [Zephyr]
Until now the choice of reliable sending (segmented messages with
acks) was implicitly dependent on the size of the payload. Add a new
member to the bt_mesh_model_pub to force using segment acks even when
the payload would fit a single unsegmented message.
2020-05-13 03:40:30 +00:00
lly
cd19f6faf1 ble_mesh: Check device uuid when init provisioning 2020-05-13 03:40:30 +00:00
lly
abcfcc47ec ble_mesh: Fix provisioning buffer initialization [Zephyr]
When PB-GATT support has been enabled the provisioning code "borrows"
the buffer from the proxy code. However, the way that initialization
was happening the proxy buffers were initialized only after
provisioning initialization, resulting in a corrupted buffer with
buf->data pointing to NULL. Reorder the initialization calls so that
proxy is done first and provisioning only after it.
2020-05-13 03:40:30 +00:00
lly
e580f98b44 ble_mesh: Skip publish if update fails [Zephyr]
Allow models to skip a periodic publish interval by returning an error
from the publish update callback.

Previously, an error return from publish update would cancel periodic
publishing. This can't be recovered from, and as such, no valid model
implementation could return an error from this callback, and there was
no way to skip a periodic publish.
2020-05-13 03:40:30 +00:00
lly
50b4bea45c ble_mesh: Enable Segmented Control Messages [Zephyr]
The function bt_mesh_ctl_send() used to support maximum length of
11 bytes. The segmentation complies with the BLE Mesh Standard.
The ack is disabled in case of non unicast address.
2020-05-13 03:40:30 +00:00
Angus Gratton
5738c3a9c6 Merge branch 'feature/ldgen_output_determinism_v3.3' into 'release/v3.3'
ldgen: determinism in mapping rule order (v3.3)

See merge request espressif/esp-idf!8662
2020-05-13 11:30:48 +08:00
lly
4748b07fa2 ble_mesh: Not ignore msg when fast prov is enabled
When fast provisioning is enabled, Provisioner shall not
ignore messages from the nodes whose addresses are not in
the provisioning database. Because other nodes which are
not provisioned by the Primary Provisioner will send node
address messages to the Primary Provisioner.
2020-05-13 10:10:40 +08:00
Renz Bagaporo
ccbca45709 ldgen: determinism in mapping rule order
This MR imposes some determinism in the mapping rule order in the output
file. For each section, the archives are arranged alphabetically
(ascending), and the mapping rules in each archive are arranged by
increasing specificity then alphabetically (ascending). The default
rules remain the very first rule for each section.
2020-05-12 22:21:35 +08:00
Michael (XIAO Xufeng)
44d1c90d25 Merge branch 'bugfix/timer_group_intr_enable_v3.3' into 'release/v3.3'
Fix timer group intr enable (backport v3.3)

See merge request espressif/esp-idf!8531
2020-05-08 15:00:16 +08:00
Island
2c1c87b37d Merge branch 'bugfix/ble_mesh_add_missing_cpp_v3.3' into 'release/v3.3'
ble_mesh: Add missing #ifdef __cplusplus (v3.3)

See merge request espressif/esp-idf!8615
2020-05-06 18:16:20 +08:00
Island
4ac84bca8b Merge branch 'bugfix/ble_mesh_compile_error_o2_v3.3' into 'release/v3.3'
ble_mesh: Fix compile error when -O2 (performance) is chosen (v3.3)

See merge request espressif/esp-idf!8618
2020-05-06 18:15:28 +08:00
Island
5a53e67c7e Merge branch 'bugfix/ble_mesh_provisioner_check_key_v3.3' into 'release/v3.3'
ble_mesh: Check if appkey exist before deleting it (v3.3)

See merge request espressif/esp-idf!8619
2020-05-06 18:09:32 +08:00
Island
6ca0c6830b Merge branch 'bugfix/ble_mesh_node_reset_erase_v3.3' into 'release/v3.3'
ble_mesh: Fix node not erase info completely (v3.3)

See merge request espressif/esp-idf!8624
2020-05-06 18:06:36 +08:00
David Čermák
722043f734 Merge branch 'feature/config_mqtt_task_prio_v3.3' into 'release/v3.3'
esp_mqtt: configure task priority, esp_mqtt_abort_connection race condition, clenaup logs and docs (v3.3)

See merge request espressif/esp-idf!8477
2020-05-06 16:18:51 +08:00
lly
745aecb03d ble_mesh: Fix node not erase info completely
Previously only mesh node info is supported to be stored
in flash. So when trying to reset the node, we only need
to judge if the BLE_MESH_VALID flag is set.
Currently we support storing both node & Provisioner info
in flash, when trying to erase the node info from flash,
the BLE_MESH_NODE flag will be checked. So we need to set
bt_mesh.flags to 0 when all the erase operations are done.
2020-05-06 11:45:02 +08:00
lly
e36d1d2f8a ble_mesh: Check if appkey exist before deleting it 2020-05-06 11:37:03 +08:00
lly
1432daf4c6 ble_mesh: Add length check for some mesh operations 2020-05-06 11:33:41 +08:00
lly
6e7d43dd89 ble_mesh: Fix compile error when -O2 (performance) is chosen 2020-05-06 11:33:08 +08:00
lly
3b9e0657d8 ble_mesh: Add missing #ifdef __cplusplus 2020-05-06 11:19:05 +08:00
Mahavir Jain
511dc5516d Merge branch 'bugfix/wifi_prov_not_stopping_v3.3' into 'release/v3.3'
wifi_provisioning: Catch the Wi-Fi events even after Connection errors (v3.3)

See merge request espressif/esp-idf!8609
2020-05-06 11:18:27 +08:00
Island
53a0b3f951 Merge branch 'feat/ble_mesh_ble_adv_simultaneously_v3.3' into 'release/v3.3'
ble_mesh: Support BLE advertising simultaneously (v3.3)

See merge request espressif/esp-idf!8486
2020-05-06 11:14:52 +08:00
Island
b0aeff4797 Merge branch 'bugfix/ble_mesh_rpl_list_size_v3.3' into 'release/v3.3'
ble_mesh: Associate replay protection list size with nodes count (v3.3)

See merge request espressif/esp-idf!8497
2020-05-06 11:14:42 +08:00
Island
ff6c18faf2 Merge branch 'bugfix/ble_mesh_use_sdkconfig_ci_v3.3' into 'release/v3.3'
ble_mesh: Add bluedroid and nimble example configurations (v3.3)

See merge request espressif/esp-idf!8500
2020-05-06 11:14:08 +08:00
Island
b33b6c4f2a Merge branch 'doc/ble_mesh_fixes_v3.3' into 'release/v3.3'
doc: Fix some ble mesh description (v3.3)

See merge request espressif/esp-idf!8504
2020-05-06 11:12:46 +08:00
Island
93a13dfd10 Merge branch 'feat/ble_mesh_sensor_model_example_v3.3' into 'release/v3.3'
ble_mesh: Add ble mesh sensor model examples (v3.3)

See merge request espressif/esp-idf!8509
2020-05-06 11:11:36 +08:00
Island
551af6c4f3 Merge branch 'bugfix/ble_mesh_time_scene_wrong_name_v3.3' into 'release/v3.3'
ble_mesh: Fix time scene wrong macro name (v3.3)

See merge request espressif/esp-idf!8512
2020-05-06 11:10:38 +08:00
Piyush Shah
f66fbb75e2 wifi_provisioning: Catch the Wi-Fi events even after Connection errors
It was observed that after sending credentials, if the first
Wi-Fi conection attempt fails, the Wi-Fi provisioning managager
ignores subsequent Wi-Fi events. So, even if the device eventually
connects to the AP, the provisioning stays on indefinitely.

Changing a check so that subsequent events are also captured and
provisioning finishes successfully.
2020-05-05 22:10:25 +05:30
David Cermak
dea0a75547 mqtt: clenaup logs and docs, esp_mqtt_abort_connection race condition
esp_mqtt_abort_connection: Fixed an issue which could result in a race condition and subsequent crash

esp_mqtt: Change an error print to use ESP_LOGE instead of ESP_LOGI
Move Sending MQTT connect message log from Info to Debug level
docs: Makes clear that publish API could block
Change the message printed after MQTT connection failure
2020-05-04 08:06:59 +02:00
Simon Brélivet
5ede2678aa esp_mqtt: add option to configure mqtt task priority.
Merges https://github.com/espressif/esp-idf/pull/4947
2020-05-04 08:06:59 +02:00
Krzysztof Budzynski
0c41fc73b5 Merge branch 'doc/openocd_security_features_v3.3' into 'release/v3.3'
doc: Add caveats about using JTAG debugging with hardware security features (v3.3)

See merge request espressif/esp-idf!8465
2020-05-04 03:07:40 +08:00
lly
a2dbe4c452 ble_mesh: Fix client local parameters not initialized 2020-04-30 11:47:12 +00:00
lly
eedaf45f43 ble_mesh: Continue node info restore even if failure happens
During BLE Mesh Provisioner initialization, the stack will restore
the nodes information if settings storage is enabled.
Previously when a failure happens (e.g. found the same uuid) during
the restore procedure, the information of the following nodes will
not be restored and error will be directly returned.
But this will introduce some problem with user experience, because
some newly provisioned nodes information will not be restored and
Provisioner will not be able to control those nodes.
So we change the operation here, when a failure happens during the
restore procedure, Provisioner will only ignore the information of
the current node and continue restoring other nodes information.
2020-04-30 11:47:12 +00:00
lly
eabf436a23 ble_mesh: Remove some redundant functions 2020-04-30 11:47:12 +00:00
lly
63ab37d721 ble_mesh: Notify unprovisioned device beacon to application layer
With this change, if a Provisioner has provisioned the maximum
number of nodes, it can still report the unprovisioned device
beacon from other nodes to the application layer. And this will
be more reasonable compared with the previous implementation.
Previously when the node array of Provisioner is full, no beacon
from unprovisioned devices will be reported, only some warning
logs will be given.
2020-04-30 11:47:12 +00:00
lly
77cf16e337 ble_mesh: Check if assigned node address is duplicated
Previously only check the node address when it is assigned by the
application layer. Here we also check the address when the address
is allocated internally. And this will be useful when some mesh
internal tests are performed.
2020-04-30 11:47:12 +00:00
lly
80feb4e70a ble_mesh: Update next alloc address when node info is added 2020-04-30 11:47:12 +00:00
lly
9cb7faf4bd ble_mesh: Fix Provisioner provisioning deadlock 2020-04-30 11:47:12 +00:00
lly
fecfd754d9 ble_mesh: Remove BLE_MESH_MAX_STORED_NODES option
Previously the BLE_MESH_MAX_STORED_NODES option is added for
internal mesh test, which will be a little confusing for the
users to understand.
Here we remove this option, instead the BLE_MESH_MAX_PROV_NODES
will be used for all the cases. For mesh internal test, when
the test function is called to add some nodes info, the info
will be stored in the array of provisioned nodes directly.
2020-04-30 11:47:12 +00:00
lly
dbc44ccc7e ble_mesh: Associate replay protection list size with nodes count
The replay protection list of Provisioner should be at least equal
to the number of nodes with the precondition that each node contains
only one element.
The help information of replay protection list is updated, and the
maximum number of nodes for Provisioner is adjusted based on the
replay protection list size.
2020-04-30 11:47:12 +00:00
lly
6e45c091e3 doc: Fix some ble mesh description 2020-04-30 11:39:07 +00:00
lly
6417f498d2 ble_mesh: Add ble mesh sensor model examples 2020-04-30 11:32:53 +00:00
lly
d77da91ffb ble_mesh: Add some common macros for sensor model 2020-04-30 11:32:53 +00:00
lly
13817a190c ble_mesh: Allow empty sensor series column value 2020-04-30 11:32:53 +00:00
lly
4e858153a8 ble_mesh: Check if same sensor (settings) property id exists 2020-04-30 11:32:53 +00:00
lly
ca95b54ce4 ble_mesh: Allow empty sensor settings exist 2020-04-30 11:32:53 +00:00
lly
0e89d5874f ble_mesh: Add bluedroid and nimble example configurations 2020-04-30 08:42:43 +00:00
lly
9b1b2f9b5d ble_mesh: Support BLE advertising simultaneously 2020-04-30 08:23:24 +00:00
Angus Gratton
093e40b14d Merge branch 'bugfix/heap_psram_fill_v3.3' into 'release/v3.3'
heap: Only fill new heaps with FREE_FILL_PATTERN if Comprehensive poisoning is on (v3.3)

See merge request espressif/esp-idf!8492
2020-04-30 13:45:07 +08:00
Angus Gratton
f19ecd5b88 Merge branch 'bugfix/make_to_cmake_msys_py3_v3.3' into 'release/v3.3'
tools: Make Unicode from subprocess result in the CMake convert script (v3.3)

See merge request espressif/esp-idf!8545
2020-04-29 13:44:34 +08:00
Angus Gratton
2086c993d8 Merge branch 'bugfix/fix_spi_flash_clock_config_error_v3.3' into 'release/v3.3'
flash: fix spi flash clock config error (backport v3.3)

See merge request espressif/esp-idf!8514
2020-04-29 13:22:03 +08:00
Roland Dobai
b4bddbb22f tools: Make Unicode from subprocess result in the CMake convert script
Fixes an issue with Python 3 in MSYS where it fails while trying to join
paths where one part is Unicode (default string on Python3) and the
second part are bytes (returned by the subprocess call).

Closes https://github.com/espressif/esp-idf/issues/5189
2020-04-28 15:22:44 +02:00
morris
67131b7d78 timer_group: fix intr_enable
timer group interrupt enable is controled by level_int_ena instead of int_ena

Closes https://github.com/espressif/esp-idf/issues/5103
2020-04-28 12:39:54 +08:00
dowster
6a448bd030 Fix typo with sigmadelta.h #ifdef 2020-04-28 12:37:29 +08:00
Jiang Jiang Jian
b6599abb1f Merge branch 'bugfix/can_not_get_IP_address_from_China_mobile_v3.3' into 'release/v3.3'
wifi: fix the bug that ESP32 can't get IP address from China Mobile router (v3.3)

See merge request espressif/esp-idf!8400
2020-04-28 11:36:58 +08:00
chenjianqiang
de6e8ccea7 flash: fix spi flash clock config error
Closes https://github.com/espressif/esp-idf/issues/5099
2020-04-27 17:34:15 +08:00
lly
caeb040857 ble_mesh: Fix time scene wrong macro name 2020-04-27 16:27:52 +08:00
Angus Gratton
bd6bbcdbd0 Merge branch 'bugfix/idf_version_v3.3' into 'release/v3.3'
idf: Bump ESP-IDF version to v3.3.2

See merge request espressif/esp-idf!8488
2020-04-27 15:16:56 +08:00
Angus Gratton
543aa45f76 heap: Only fill new heaps with FREE_FILL_PATTERN if Comprehensive poisoning is on
Significantly speeds up heap initialization at startup when default "Light" heap
poisoning is enabled.

Tip via reddit user LinkeSeitentasche https://www.reddit.com/r/esp32/comments/fnj51a/a_guide_to_improving_esp32_boot_speed/
2020-04-27 16:34:43 +10:00
Angus Gratton
ad5e4236b4 idf: Bump ESP-IDF version to v3.3.2
Feature was merged after v3.3.2 release.
2020-04-27 15:45:47 +10:00
Island
e8c034c24d Merge branch 'bugfix/ble_mesh_add_test_function_v3.3' into 'release/v3.3'
ble_mesh: Add ble mesh white list test function (v3.3)

See merge request espressif/esp-idf!8160
2020-04-27 11:38:48 +08:00
Island
2c3c348659 Merge branch 'feat/ble_mesh_vnd_model_example_v3.3' into 'release/v3.3'
Feat/ble mesh vnd model example (v3.3)

See merge request espressif/esp-idf!8003
2020-04-27 11:35:45 +08:00
lly
012b810d29 ble_mesh: Add ble mesh white list test function
Using the ble mesh white list test functions, a node can choose to
only receive mesh messages from a specific node and relay the
messages for it. Messages from other nodes will be ignored.
2020-04-26 06:44:45 +00:00
Angus Gratton
12c7aa9b57 Merge branch 'fix/ci_example_test_prov_v3.3' into 'release/v3.3'
CI: Fix prov example test exception handle (v3.3)

See merge request espressif/esp-idf!8441
2020-04-24 16:13:29 +08:00
Angus Gratton
b2fb688eaf Merge branch 'bugfix/ci_unterminated_sdkconfig_defaults_v3.3' into 'release/v3.3'
CI: Add EOL to sdkconfig.defaults before adding sdkconfig.ci (v3.3)

See merge request espressif/esp-idf!8458
2020-04-24 16:12:06 +08:00
Angus Gratton
6744abaeac doc: Add warnings about using JTAG debugging with hardware security features
This is related to the following issues but is not a fix, just documentation of a workaround until we can
improve the support:
https://github.com/espressif/esp-idf/issues/4878
https://github.com/espressif/esp-idf/issues/4734
2020-04-24 15:34:39 +10:00
Roland Dobai
bdb8c05b25 CI: Add EOL to sdkconfig.defaults before adding sdkconfig.ci 2020-04-23 16:54:46 +02:00
Angus Gratton
92c9c7269b Merge branch 'bugfix/ci_partition_table_detection_v3.3' into 'release/v3.3'
CI: Fix partition table detection if "partition" is in the project name (v3.3)

See merge request espressif/esp-idf!8433
2020-04-23 11:38:00 +08:00
Shivani Tipnis
37bcd4e0ba CI: Fix prov example test cryptography package version exception handling 2020-04-23 00:48:05 +05:30
Roland Dobai
c97a0a855f CI: Fix partition table detection if "partition" is in the project name 2020-04-22 10:26:14 +02:00
Jiang Jiang Jian
957e88d12f Merge branch 'bugfix/dns_lookup_failed' into 'release/v3.3'
lw-ip:bugfix for dns lookup failed

See merge request espressif/esp-idf!8308
2020-04-21 11:27:16 +08:00
Jiang Jiang Jian
47b891c25b Merge branch 'optimization/TCPv6_connect_for_v3.3' into 'release/v3.3'
lw-ip:optimization TCPv6 connect for v3.3(backport v3.3)

See merge request espressif/esp-idf!8022
2020-04-21 11:26:28 +08:00
zhangyanjiao
6f85135471 wifi: fix the bug that ESP32 can't get IP address from China Mobile router 2020-04-20 10:56:08 +08:00
lly
6a9c1ed48c ble_mesh: Add ESP BLE Mesh vendor models example 2020-04-17 11:59:52 +00:00
lly
842f7da7d4 ble_mesh: Rename ble_mesh_vendor_models to common_vendor_models 2020-04-17 11:59:52 +00:00
Jiang Jiang Jian
f3f88e241b Merge branch 'bugfix/btdm_backports_v3.3_0328' into 'release/v3.3'
Bugfix/btdm backports v3.3 0328

See merge request espressif/esp-idf!8153
2020-04-16 21:08:10 +08:00
Angus Gratton
249da85fd9 Merge branch 'bufgix/esp_ota_get_app_elf_sha256_v3.3' into 'release/v3.3'
app_update: Fix case when elf file SHA256 should be printed by panic handler while cache is disabled (v3.3)

See merge request espressif/esp-idf!8368
2020-04-16 14:31:31 +08:00
Angus Gratton
a0b1f1bb07 Merge branch 'bugfix/efuse_get_coding_scheme_and_ut_v3.3' into 'release/v3.3'
efuse: Fix get_coding_scheme() using ESP_EARLY_LOG* instead of ESP_LOG* (v3.3)

See merge request espressif/esp-idf!8362
2020-04-16 14:29:54 +08:00
Angus Gratton
c6f78f3071 Merge branch 'feature/add_rtc_xtal_cal_retry_option_v3.3' into 'release/v3.3'
esp32: Add a Kconfig option - Number of attempts to repeat 32k XTAL calibration (v3.3)

See merge request espressif/esp-idf!7933
2020-04-16 14:24:01 +08:00
Marius Vikhammer
9f2056dad4 app_update: fix test failure for get_app_elf_sha256 test
Commit fc03161f updated esp_ota_get_app_elf_sha256 to store and return
X number of bytes of the hash, but the test case still expected 64 bytes.

Updated test case to use CONFIG value for expected length.
2020-04-15 21:49:32 +08:00
KonstantinKondrashov
2705b76371 app_update: Fix case when elf file SHA256 should be printed by panic handler while cache is disabled
Closes: IDF-1342
2020-04-15 21:07:02 +08:00
KonstantinKondrashov
383cd73e38 efuse: Fix get_coding_scheme() when CONFIG_SECURE_FLASH_ENC_ENABLED and LOG_LEVEL is Debug
Closes: https://github.com/espressif/esp-idf/issues/4862
2020-04-15 20:24:41 +08:00
KonstantinKondrashov
a5f9a0cbe4 esp32: Add a Kconfig option- Number of attempts to repeat 32k XTAL calibration
Closes: IDF-1479
2020-04-15 16:52:23 +08:00
Jiang Jiang Jian
2ebad4639e Merge branch 'bugfix/psram_single_bit_error_v3.3' into 'release/v3.3'
psram: support psram 2T mode to fix single bit error (backport v3.3)

See merge request espressif/esp-idf!7011
2020-04-15 13:28:22 +08:00
Jiang Jiang Jian
a656caed7a Merge branch 'nimble/fix_ble_hs_reset_v3.3' into 'release/v3.3'
NimBLE: Reset master and slave states on host reset and fix build failure (backport v3.3)

See merge request espressif/esp-idf!8219
2020-04-15 13:28:04 +08:00
Jiang Jiang Jian
2aba47f8dd Merge branch 'bugfix/backport_some_wifi_bugs_0326_v3.3' into 'release/v3.3'
esp32: backport some WiFi fixes (backport v3.3)

See merge request espressif/esp-idf!8186
2020-04-15 13:07:01 +08:00
chenjianqiang
22c0334ad9 psram: support psram 2T mode to fix single bit error
1. add enable PSRAM 2T mode function
2. abort when himem and 2T mode are enabled meanwhile
3. set SPIRAM_2T_MODE as "n" by default, enable it when needed
2020-04-13 15:25:13 +08:00
xueyunfei
6cdb27a361 bugfix for dns lookup failed 2020-04-10 11:07:54 +08:00
Angus Gratton
ec0605db4c Merge branch 'feature/idf_version_header_v3.3' into 'release/v3.3'
esp_common: add version definitions in code and build system (backport v3.3)

See merge request espressif/esp-idf!8233
2020-04-08 15:08:03 +08:00
Angus Gratton
cde76fece9 Merge branch 'bugfix/efuse_write_config_v3.3' into 'release/v3.3'
efuse: set timing configuration before writing (backport v3.3)

See merge request espressif/esp-idf!8231
2020-04-08 15:06:30 +08:00
Prasad Alatkar
aad04405fc NimBLE: Reset master and slave states on host reset and fix build failure (backport v3.3) 2020-04-07 10:52:01 +05:30
Mahavir Jain
8c5a0a0a57 Merge branch 'feature/upgrade_mbedtls_to_v3.3' into 'release/v3.3'
mbedtls: upgrade to release v2.16.5 (v3.3)

See merge request espressif/esp-idf!7988
2020-04-07 12:10:07 +08:00
Mahavir Jain
04d46d5d61 Merge branch 'bugfix/size_calculation_in_ota_v3.3' into 'release/v3.3'
Fix size calculation to erase partition range for OTA image (v3.3)

See merge request espressif/esp-idf!8268
2020-04-06 18:04:22 +08:00
Shubham Kulkarni
6f39fea03d esp_ota_ops.c: Fix size calculation to erase partition range for OTA image
Closes https://github.com/espressif/esp-idf/issues/4953
2020-04-06 13:40:12 +05:30
Ivan Grokhotkov
ca6b009c26 esp_common: add version definitions in code and build system
Closes https://github.com/espressif/esp-idf/issues/4679
2020-04-03 01:24:33 +02:00
Ivan Grokhotkov
dd5190868a efuse: set timing configuration before writing 2020-04-03 00:51:36 +02:00
David Čermák
1ba3bf2976 Merge branch 'feature/websocket_client_v3.3' into 'release/v3.3'
Feature/websocket client v3.3

See merge request espressif/esp-idf!8040
2020-04-02 20:28:24 +08:00
Marius Vikhammer
b56012783c tcp_transport/ws_client: websockets now correctly handle messages longer than buffer
transport_ws can now be read multiple times in a row to read frames larger than the buffer.

Added reporting of total payload length and offset to the user in websocket_client.

Added local example test for long messages.

Closes IDF-1083
2020-04-02 07:30:12 +00:00
Marius Vikhammer
d6ef9d73bb websocket: backport of websocket client to v3.3
Backports the websocket client and example to ESP-IDF release 3.3.
2020-04-02 07:30:12 +00:00
Jiang Jiang Jian
a71e85fb63 Merge branch 'bugfix/btdm_dont_dequeue_the_command_queue_v3.3' into 'release/v3.3'
component/bt: fix don't dequeue the command queue after process the read_by_type_req(backport v3.3)

See merge request espressif/esp-idf!8183
2020-04-02 12:08:40 +08:00
liu zhifu
a0d61eca20 esp32: backport some WiFi fixes to v3.3
Backport following Wifi fixes:

1. Optimize WiFi sleep in WiFi/BT coexist mode
   I> If any data TX/RX in WiFi slice, force wakeup next TBTT
   II> Increase active timeout to coex TBTT to avoid sleep in WiFi slice

2. Fix esp_wifi_stop() crash
   esp_wifi_stop() crashes if it's called when WiFi is not initialized.

3. Fix WiFi log print level

4. Return fails if AP's configuring AP channel is out of range

5. esp_wifi_sta_get_ap_info() returns actual values of group ciphers
2020-04-02 10:27:11 +08:00
Mahavir Jain
530b35b222 mbedtls: upgrade to release v2.16.5
For detailed release notes please refer to:
https://tls.mbed.org/tech-updates/releases/mbedtls-2.16.5-and-2.7.14-released

Closes: IDFGH-2638
Closes: https://github.com/espressif/esp-idf/issues/4716
2020-04-01 13:46:09 +00:00
Sagar Bijwe
5723e717e5 wpa_supplicant: Fix SAE test-case failure on mbedtls version udpate
Problem:
mbedtls_ctr_drbg_context was initialized in crypto_ec_point_mul. This
was okay in releases before 2.16.4 as entropy_len used to get set to
MBEDTLS_CTR_DRBG_ENTROPY_LEN in function mbedtls_ctr_drbg_seed. The
function is now changed to set the length to
MBEDTLS_CTR_DRBG_ENTROPY_LEN if previous length is 0 and hence the bug.

Solution:
Initialize mbedtls_ctr_drbg_context in crypto_ec_point_mul.
2020-04-01 13:46:09 +00:00
Angus Gratton
23c4d052ef Merge branch 'bugfix/kconfiglib_open_encoding_v3.3' into 'release/v3.3'
tools: Avoid Unicode error in kconfiglib while opening files (v3.3)

See merge request espressif/esp-idf!8178
2020-04-01 15:15:12 +08:00
Angus Gratton
ba9ef572c0 Merge branch 'backport/malloc_zero_return_null_v3.3' into 'release/v3.3'
backport/malloc_zero_return_null_v3.3

See merge request espressif/esp-idf!8144
2020-04-01 14:42:50 +08:00
Mahavir Jain
08af2023c5 Merge branch 'fix/wifi_provisioning_uuid_v3.3' into 'release/v3.3'
Wifi_provisioning: Change service_uuid to non standard 128 bit UUID and add retries in test script (backport v3.3)

See merge request espressif/esp-idf!8164
2020-04-01 13:04:47 +08:00
xiewenxiang
23474dc737 component/bt: fix don't dequeue the command queue after process the read_by_type_req(backport v3.3) 2020-03-31 16:45:57 +08:00
Roland Dobai
e0364cbde1 tools: Avoid Unicode error in kconfiglib while opening files
This fix is for IDF v4.0 and earlier versions. The upstream kconfiglib
included since IDF v4.1 doesn't have this issue.

Closes https://github.com/espressif/esp-idf/issues/4977
2020-03-31 08:30:35 +02:00
Prasad Alatkar
3a5c7700a7 Wifi_provisioning_mgr_test: Allow three attempts to connect to AP before concluding provisioning failure(v3.3) 2020-03-30 11:20:53 +05:30
Prasad Alatkar
296ab7c80e Wifi_provisioning_ble: Change service_uuid to non standard 128 bit UUID (v3.3)
- Modifies UUIDs in scheme_ble, manager example and esp_prov tool to custom 128
  bit UUID
2020-03-30 11:20:30 +05:30
baohongde
0ac0a3126f components/coex: Fix wakeup delay with DFS 2020-03-28 21:15:21 +08:00
baohongde
41fe01cc99 components/bt: Fix assert when create conntion cancel 2020-03-28 21:08:52 +08:00
Felipe Neves
48e78e6e07 multi_heap: ensure that malloc(0) return NULL pointer in any poisoning configuration 2020-03-27 14:35:50 -03:00
Angus Gratton
6c9c253ed1 Merge branch 'bugfix/esp_event_bugfixes_v3.3' into 'release/v3.3'
esp_event-related fixes (v3.3)

See merge request espressif/esp-idf!8073
2020-03-26 16:20:10 +08:00
Jiang Jiang Jian
c44a9f9a4e Merge branch 'bugfix/send_ok_when_sta_disconnect_for_v3.3' into 'release/v3.3'
lw-ip:bugfix for TCPv6 send ok when sta disconnect for 3.3

See merge request espressif/esp-idf!8016
2020-03-25 11:15:52 +08:00
Jiang Jiang Jian
6feb88f69b Merge branch 'bugfix/Add_lwip_assert_control_v3.3' into 'release/v3.3'
lw-ip: Add lw-ip assert control (backport v3.3)

See merge request espressif/esp-idf!8028
2020-03-23 15:07:40 +08:00
Renz Bagaporo
07830df4d3 examples: split source files for one of the ulp examples 2020-03-23 13:12:49 +08:00
Renz Christian Bagaporo
d497c4babd ldgen: fix build issue on make when build dir is a symlink
Fixes an issue where build fails if the build directory is a symlink.
The issue is caused by the rule target and the final executable dependency
not matching.

Closes https://github.com/espressif/esp-idf/issues/3626
2020-03-23 13:12:49 +08:00
Renz Christian Bagaporo
2d28fd2563 cmake: fix build failure when git repo is initialized but no first commit
Closes https://github.com/espressif/esp-idf/issues/3920
2020-03-23 13:12:49 +08:00
Renz Bagaporo
1592f338a6 ci: add test for partition_table target 2020-03-23 13:12:49 +08:00
Renz Christian Bagaporo
0ee287cd32 partition_table: output partition table info for partition_table target 2020-03-23 13:12:49 +08:00
Renz Christian Bagaporo
84227aeac0 esp_event: remove extra line from source file 2020-03-22 22:34:38 +08:00
Renz Christian Bagaporo
2e3a949f3a esp_event: test that handlers can unregister themselves 2020-03-22 22:34:30 +08:00
Renz Christian Bagaporo
0890ce9115 esp_event: iterate loop nodes safely as well 2020-03-22 22:34:21 +08:00
Xentec
9b16cb75f8 esp_event: fix crash when unregistering a handler instance in itself
When a handler instance is the last one in the list und unregisters
itself, the handler iterator will be invalidated by entering free'd
memory. Same applies for event base and id, if they become empty.

Merges https://github.com/espressif/esp-idf/pull/4139
2020-03-22 22:34:07 +08:00
Rusty Eddy
9c0cf3c28a Added semi-colon to esp_event_loop_create(...)
Title sums it up.
2020-03-22 22:32:46 +08:00
He Yin Ling
42891432c5 Merge branch 'bugfix/modify_ble_mesh_command_for_v3.3' into 'release/v3.3'
ble mesh: update ble mesh console example(backport v3.3)

See merge request espressif/esp-idf!8044
2020-03-22 18:35:41 +08:00
Chen Sheng
9fc2212e16 ble mesh: update ble mesh console example(backport v3.3) 2020-03-22 18:35:39 +08:00
Mahavir Jain
5284b0aa4f Merge branch 'bugfix/newlib_putchar_locking_v3.3' into 'release/v3.3'
newlib: don't define non-thread-safe versions of getc, putc (v3.3)

See merge request espressif/esp-idf!8029
2020-03-20 16:56:19 +08:00
Ivan Grokhotkov
f6763a9d84 newlib: don't define non-thread-safe versions of getc, putc
getc, getchar, putc, putchar were defined both as functions and as
macros. The macro versions are not thread safe, and should not be used
in multithreaded applications.

Upstream fix: b0f271d1db
2020-03-19 12:44:20 +01:00
xiehang
3d821dc821 LWIP: Add lwip assert control 2020-03-19 19:15:24 +08:00
xueyunfei
1cb4cd5ec6 optimization TCPv6 connect 2020-03-19 11:43:44 +08:00
xueyunfei
649a6afeb9 bugfix for TCPv6 send ok when sta disconnect 2020-03-18 17:58:07 +08:00
Jiang Jiang Jian
9e70825d1e Merge branch 'bugfix/sntp_init_can_run_before_net_connection_v3.3' into 'release/v3.3'
lw_ip: Add to sys_arch_protect() a check that the mutex is created before use if not then creates it (v3.3)

See merge request espressif/esp-idf!7758
2020-03-18 12:07:08 +08:00
Island
151b6d9bef Merge branch 'bugfix/allow_adv_stop_again_in_host' into 'release/v3.3'
Fix allow to send stop adv hci cmd when host adv state is disable

See merge request espressif/esp-idf!7993
2020-03-17 23:52:04 +08:00
Island
c4308384d6 Merge branch 'bugfix/ble_mesh_nimble_adapt_deinit_v3.3' into 'release/v3.3'
ble_mesh: Fix ble mesh nimble host deinit (v3.3)

See merge request espressif/esp-idf!7998
2020-03-17 15:54:52 +08:00
lly
cc07e9d203 ble_mesh: Fix ble mesh nimble host deinit 2020-03-17 14:42:46 +08:00
gengyuchao
ab175f8845 fix allow to send stop adv hci cmd when host adv state is disable 2020-03-16 21:37:07 +08:00
Jiang Jiang Jian
206a844e4a Merge branch 'bugfix/fix_scan_get_rssi_err_v3.3' into 'release/v3.3'
esp_wifi: Fix scan get rssi err (backport v3.3)

See merge request espressif/esp-idf!7963
2020-03-16 20:56:30 +08:00
Jiang Jiang Jian
bf568f2eb4 Merge branch 'bugfix/ble_mesh_miscellaneous_fix_v3.3' into 'release/v3.3'
Bugfix/ble mesh miscellaneous fix (v3.3)

See merge request espressif/esp-idf!7971
2020-03-16 13:27:35 +08:00
Jiang Jiang Jian
36cddd0bae Merge branch 'bugfix/ble_mesh_update_3.3' into 'release/v3.3'
Bugfix/ble mesh update 3.3

See merge request espressif/esp-idf!7801
2020-03-16 13:26:44 +08:00
Jiang Jiang Jian
13d4ab5afb Merge branch 'nimble/misc_host_flow_ctrl_changes_v3.3' into 'release/v3.3'
NimBLE: Misc fixes in NimBLE host (backport v3.3)

See merge request espressif/esp-idf!7960
2020-03-16 13:26:37 +08:00
Prasad Alatkar
4fb4c01c53 NimBLE: Add Host based privacy (RPA) feature support (v3.3)
- This feature removes dependency on controller to use privacy (RPA)
2020-03-15 21:43:01 +05:30
Prasad Alatkar
237f7eb92a NimBLE: Fix check for static random address & add MSYS_1 in menuconfig (v3.3) 2020-03-15 21:43:01 +05:30
Hrishikesh Dhayagude
5ca8851be8 NimBLE: Use dynamic buffers instead of static memory (v3.3)
The NimBLE host buffers that consume a significant amount of memory are
now allocated dynamically.
The advantage is that, the memory can be reclaimed in cases where BLE
is turned off and not required for the current boot cycle
2020-03-15 21:43:01 +05:30
Prasad Alatkar
b6c88b683f NimBLE: Misc changes in host flow control, ble_gap_unpair, ble_hs_hci_rx_evt & example (v3.3)
- Add menuconfig option for NimBLE host flow control
- Include changes in `blecent` example from upstream PR!702
- add ble_hs_lock in ble_gap_unpair Upstream PR!584
- ble_hs_hci_rx_evt, upstream PR!738
2020-03-15 21:43:01 +05:30
lly
a8763e6517 ble_mesh: Move dev_role to the end of model_pub 2020-03-13 19:53:26 +08:00
lly
de022501b7 ble_mesh: Use the right netkey during iv update 2020-03-13 19:53:23 +08:00
lly
0d6dd36af9 ble_mesh: Use the right net_idx & app_idx for publish 2020-03-13 19:53:19 +08:00
lly
68dba56ac8 ble_mesh: Check buf->ref before unref the buffer 2020-03-13 19:53:16 +08:00
lly
9f32f4b405 ble_mesh: Fix mesh memory use-after-free issue 2020-03-13 19:53:12 +08:00
lly
c19a01d100 ble_mesh: Add ble mesh deinit in btc task 2020-03-13 19:53:08 +08:00
lly
2ae6eedb30 ble_mesh: Free beacon timer when deinit mesh 2020-03-13 19:53:02 +08:00
lly
e73ad2c391 ble_mesh: Use lock for mesh timer operations 2020-03-13 19:52:50 +08:00
xiehang
6de264be1e esp_wifi: Fix scan get rssi err
Remove software modify rssi
2020-03-13 19:41:11 +08:00
Jiang Jiang Jian
766eace598 Merge branch 'bugfix/backport_some_wifi_bugs_0310_v3.3' into 'release/v3.3'
Backport some wifi bugs 0310 (backport v3.3)

See merge request espressif/esp-idf!7935
2020-03-13 19:38:01 +08:00
Mahavir Jain
1bd55a9af2 Merge branch 'bugfix/unicore_config_prevent_ipc_code_v3.3' into 'release/v3.3'
ipc: prevent code getting pulled in for unicore configuration (v3.3)

See merge request espressif/esp-idf!7945
2020-03-12 23:18:40 +08:00
Mahavir Jain
6babdfc0b7 ipc: prevent code getting pulled in for unicore configuration 2020-03-12 16:28:00 +05:30
KonstantinKondrashov
7013d2d7c5 lwip: Add to sys_arch_protect() a check that the mutex is created before use if not then creates it
Closes: https://github.com/espressif/esp-idf/issues/944
Closes: https://github.com/espressif/esp-idf/issues/3931
Closes: WIFI-1019
2020-03-11 19:23:24 +08:00
Mahavir Jain
2d7be5c35d Merge branch 'bugfix/ota_with_redirection_v3.3' into 'release/v3.3'
esp_https_ota in sync with master (v3.3)

See merge request espressif/esp-idf!7749
2020-03-11 14:44:54 +08:00
xiehang
c9e7a04a9e Update wifi lib
1. Add wifi stop check at wifi deinit entry.
2. Add TX packets size check.
3. Reduce wifi bin size.
4. Fix the bug for setting channel when wifi in NULL mode.
5. Place the Vendor Specific element at the end according to the protocol.
6. Coex adjust scheme when bt is in connnected status.
2020-03-10 20:01:39 +08:00
Shubham Kulkarni
5def4ad7fe esp_https_ota.c: Add errno check for WiFi disconnection while performing OTA 2020-03-09 13:21:21 +05:30
Shubham Kulkarni
3cceacc931 OTA: Add fix in case of URL redirection
Test case for URL Redirection and Chunked server is added
2020-03-09 13:21:21 +05:30
Shubham Kulkarni
9df632482c OTA: Fixed OTA with chunked servers
If esp_http_client_read returns 0, errno check is performed if complete data is not received.
2020-03-09 13:21:21 +05:30
Angus Gratton
46c8f40a83 Merge branch 'bugfix/fix_extra_component_dirs_ordering_v3.3' into 'release/v3.3'
cmake: fix extra component dirs ordering (v3.3)

See merge request espressif/esp-idf!7730
2020-03-09 13:55:04 +08:00
Jiang Jiang Jian
6f9a7264ce Merge branch 'bugfix/bt_interrupt_disable_timing_error_v3.3' into 'release/v3.3'
(backport v3.3) btController: events scheduling error in case of wifi and bluetooth.

See merge request espressif/esp-idf!7889
2020-03-06 11:34:11 +08:00
Chinmay Chhajed
72fb22ed51 This MR is intended to fix Bluetooth event scheduling when WiFi is also enabled.
The global interrupts will be disabled before taking current
time for scheduling further bluetooth events. Earlier disabling
interrupts was taking some time because of which WiFi events were
interrupting in current bluetooth scheduling.

Also fixes ble crash issue triggered by ble event irq miss (0x20000).
2020-03-05 18:58:28 +05:30
Jakob Hasse
58cf509495 NVS: Changed all new to new (nothrow) 2020-03-04 15:26:34 +08:00
Angus Gratton
cc34d5a5b0 Merge branch 'bugfix/phy_partition_address_v3.3' into 'release/v3.3'
cmake: Fix bug where PHY partition offset incorrectly set (v3.1)

See merge request espressif/esp-idf!7837
2020-03-04 07:35:52 +08:00
Angus Gratton
1eaccfae4a cmake: Fix bug where PHY partition offset incorrectly set 2020-03-02 23:27:51 +00:00
Jiang Jiang Jian
ade22b2ae7 Merge branch 'bugfix/fix_wifi_stop_leads_to_memory_leak_v3.3' into 'release/v3.3'
esp32: fix the bug that WiFi stop leads to memory leak (backport v3.3)

See merge request espressif/esp-idf!7797
2020-02-28 20:40:28 +08:00
lly
0e2c77b185 ble_mesh: Calc incomplete timeout based on msg info 2020-02-27 15:47:26 +08:00
lly
91ad0f9f4a ble_mesh: Start the timer when starting to send the client message 2020-02-27 15:47:12 +08:00
lly
70eadc0b05 ble_mesh: No timeout for client message to non-unicast address 2020-02-27 15:46:54 +08:00
lly
49fc8c86b3 ble_mesh: Unify client application and lower transport layer timeout 2020-02-27 15:46:19 +08:00
lly
04a6ac3cf5 ble_mesh: Allow maximum 377 octets payload 2020-02-27 15:46:03 +08:00
lly
9fa5c14d58 ble_mesh: Reset transport info when node is removed 2020-02-27 15:45:46 +08:00
lly
cc19e1da9b ble_mesh: Provisioner ignores msg from removed node 2020-02-27 15:45:15 +08:00
liu zhifu
96bb4c6e78 esp32: fix the bug that WiFi stop leads to memory leak 2020-02-27 14:28:39 +08:00
Ivan Grokhotkov
f3c3605fc2 Merge branch 'feature/idf_docker_updates_v3.3' into 'release/v3.3'
tools/docker: install CMake version provided in tools.json (backport v3.3)

See merge request espressif/esp-idf!7483
2020-02-26 17:45:54 +08:00
Michael (XIAO Xufeng)
b3d5fe849d Merge branch 'feat/mcpwm_hal_fixes_v3.3' into 'release/v3.3'
mcpwm: add HAL layer support (fix part, backport v3.3)

See merge request espressif/esp-idf!7744
2020-02-24 09:11:10 +08:00
Jiang Jiang Jian
d0d0c979bc Merge branch 'bugfix/transport_connection_active_v3.3' into 'release/v3.3'
fix(transport): Fix a bug of the connection whether be active or not (v3.3)

See merge request espressif/esp-idf!7736
2020-02-22 16:01:13 +08:00
Jiang Jiang Jian
12aa90e6a2 Merge branch 'feature/dev_security_restore_backport_v3p3' into 'release/v3.3'
feature/dev_security_restore_backport_v3p3(backport release/v3.3)

See merge request espressif/esp-idf!7739
2020-02-22 16:00:54 +08:00
Jiang Jiang Jian
ccb52dea65 Merge branch 'bugfix/mesh_ie_issues_3.3' into 'release/v3.3'
Bugfix/mesh ie issues (backport 3.3)

See merge request espressif/esp-idf!7322
2020-02-22 12:15:16 +08:00
Michael (XIAO Xufeng)
c9edf16376 mcpwm: decrease test time
cherry-pick 538540ce
2020-02-21 22:39:12 +08:00
michael
919dbdd170 mcpwm: fix the fault handling and capture issues
1. The fault signal 3 for unit 2 is corrected to the right value

2. Now `mcpwm_fault_set_oneshot_mode` will clear the status before, no
need to reset the peripheral.

3. The capture feature relies on the prescaler, but it's only
initialized in the mcpwm_init funciton, which is used to initialize a
PWM channel. This means, the capture may not work correctly if no PWM
channel is enabled.

   Now the prescaler is also updated when `mcpwm_capture_enable` is
called.
2020-02-21 22:39:11 +08:00
michael
3c6f992cf0 mcpwm: enable some unit tests again 2020-02-21 22:39:03 +08:00
June
2548168277 backport mr !6031 - fix security info restore bug 2020-02-21 20:17:17 +08:00
Anton Maklakov
4b763f361d idf_tools.py: fix downloading for tools which have "on_request" options for some platforms.
'install' and 'download' options can be used for 'required' or 'all' tools
2020-02-21 11:34:04 +01:00
Ivan Grokhotkov
faf86f72fb tools/docker: install CMake version provided in tools.json
Closes https://github.com/espressif/esp-idf/issues/4644
Closes IDFGH-2559
2020-02-21 11:34:04 +01:00
chenyudong
a3c4b04675 mesh: fix mesh ie issues
Fix an error of mesh deinit lock.
Fix mesh send returns TIMEOUT.
Increase root window close time to 120s.
Clear ie.child when the child connected or fully associated.
Update rc_rssi when roots direct/forward.
ix assoc in mesh ie wrong.
Mesh packets use AC_VI instead of AC_BE.
2020-02-21 18:29:01 +08:00
Jiang Jiang Jian
a55cd0e7f3 Merge branch 'optimization/get_dns_server_and_add_dns_enable_ipv6_dns_retrieval' into 'release/v3.3'
lw-ip:optimization get dns server and add dns enable ipv6 dns retrieval

See merge request espressif/esp-idf!7643
2020-02-21 18:20:52 +08:00
Jiang Jiang Jian
7ab0a59bb3 Merge branch 'bugfix/host_and_example_bugfix_backport_to_v3.3' into 'release/v3.3'
Bugfix/host and example bugfix backport to v3.3

See merge request espressif/esp-idf!7723
2020-02-21 18:15:48 +08:00
Jiang Jiang Jian
bc77899fb2 Merge branch 'bugfix/ci_confserver_timeout_again_v3.3' into 'release/v3.3'
ci: Adjust more 'spawn' settings in test_confserver (backport v3.3)

See merge request espressif/esp-idf!5322
2020-02-21 18:09:17 +08:00
Liu Han
67be0ae585 fix(transport): Fix a bug of the connection whether be active or not by timeout option when the select function return a correct value. 2020-02-21 11:01:15 +01:00
Liu Han
8246bfa8fb fix(transport): Fix a bug of the connection whether be active or not. 2020-02-21 11:00:43 +01:00
Jiang Jiang Jian
7d1c44fb7e Merge branch 'bugfix/btdm_role_switch_v3.3' into 'release/v3.3'
Fix bugs about role switch

See merge request espressif/esp-idf!7721
2020-02-21 17:49:46 +08:00
Jiang Jiang Jian
56140d11ce Merge branch 'bugfix/mqtt_submodule_ref_update_v3.3' into 'release/v3.3'
mqtt: update submodule to point to latest commit (backport v3.3)

See merge request espressif/esp-idf!7287
2020-02-21 17:24:37 +08:00
Jiang Jiang Jian
93f151f6d4 Merge branch 'bugfix/mbedtls_esp_bignum_v3.3' into 'release/v3.3'
mbedtls: esp bignum fix for 4096 keys (v3.3)

See merge request espressif/esp-idf!7706
2020-02-21 17:17:39 +08:00
Jiang Jiang Jian
89355c2ec0 Merge branch 'bugfix/fix_some_typo_in_v3.3' into 'release/v3.3'
Fix some typo in idf backport v3.3

See merge request espressif/esp-idf!7725
2020-02-21 17:16:55 +08:00
Jiang Jiang Jian
8737c444d6 Merge branch 'bugfix/add_option_to_ipv6_stateless_address_configuration_v3.3' into 'release/v3.3'
lw-ip: Add option to ipv6 stateless address configuration (backport v3.3)

See merge request espressif/esp-idf!7694
2020-02-21 14:56:23 +08:00
Jiang Jiang Jian
d386a22f1f Merge branch 'bugfix/nimble_apps_conn_handle_v3.3' into 'release/v3.3'
examples/bluetooth/nimble: Correct the connection handle in update and enc_change event (v3.3)

See merge request espressif/esp-idf!7703
2020-02-21 14:49:30 +08:00
Jiang Jiang Jian
bc0d116b7a Merge branch 'feature/wifi_redo_scan_example_v3.3' into 'release/v3.3'
esp_wifi: Additional code snippets in esp_wifi_scan_example (backport v3.3)

See merge request espressif/esp-idf!7502
2020-02-21 14:48:57 +08:00
Hrudaynath Dhabe
e3dadfafb8 esp_wifi: Additional code snippets in esp_wifi_scan_example (backport v3.3) 2020-02-21 14:48:56 +08:00
xueyunfei
681dba4afd optimization get dns server and add dns enable ipv6 dns retrieval 2020-02-20 14:06:07 +00:00
Mahavir Jain
32387506fb Merge branch 'bugfix/esp_log_timestamp_v3.3' into 'release/v3.3'
Use proper API to get Tick Count is esp_log_timestamp (v3.3)

See merge request espressif/esp-idf!7720
2020-02-20 20:13:23 +08:00
gengyuchao
94255c421d Fix some typo in idf release v3.3 2020-02-20 20:05:10 +08:00
gengyuchao
b6e9a15e81 Component/bt :
Add handling of osi memory calloc failure.
Add length check for snprintf in osi config.
2020-02-20 19:39:03 +08:00
Mahavir Jain
3359e063a3 Merge branch 'fix/run_esptool_absolute_path_v3.3' into 'release/v3.3'
project_include.cmake: Make esptool_py_custom_target callable from other directories (v3.3)

See merge request espressif/esp-idf!7711
2020-02-20 19:38:32 +08:00
gengyuchao
dcc4943b3d example/ble_hid_device_demo fix the wrong mask value according to HID protocol 2020-02-20 19:19:33 +08:00
gengyuchao
53664c80ff component/bt: Fix the issue with pointer type conversion in gattc. Unified att(db_sizedb_size) count pointer type in bta and btc, change pointer type in bta from int to uint16_t. 2020-02-20 19:16:01 +08:00
baohongde
74b964ed67 Fix bugs about role switch
Jitter in FHS
Jitter in first PULL
Receive EDR packet fail after role switch
2020-02-20 19:11:45 +08:00
Shubham Kulkarni
110620a80c log: Check for ISR context and use proper API to get Tick Count 2020-02-20 16:02:16 +05:30
gengyuchao
e454d4d8e8 Bulfi: Check if ble is connected before sending a message via ble. Fix the wrong wifi storage mode from WIFI_STORAGE_RAM to default WIFI_STORAGE_FLASH. 2020-02-20 18:11:55 +08:00
gengyuchao
6241139685 example/ble_throughput:
Fixed the throughput wasting memory and packet loss issues.
Fixed the throughput crash bug because of using the Mutex.
2020-02-20 18:05:23 +08:00
gengyuchao
4375e60a6e bugfix: ble add missing gatt descriptors 2020-02-20 17:54:45 +08:00
Jiang Jiang Jian
26383e95fd Merge branch 'feature/esp32_5p0_backport_v3p3' into 'release/v3.3'
backport esp325p0 new features and code optimize to v3.3

See merge request espressif/esp-idf!7564
2020-02-20 17:38:23 +08:00
David Cermak
fe5b7b549c mbedtls: fix hw accelerated big-num mul if operand and result overlap
this issue is mainly exposed when using larger (4096) client key in TLS mutual auth,
since it uses multiplications > 2048 when mbedtls_mpi_mul_mpi is used in recursion,
which works only if both operands point to different location than result since
mpi_mult_mpi_overlong() called mbedtls_mpi_grow() to reallocate buffers used in previous
pointer arithmetics and thus corrupting it. Fixed by growing the mpi buffer before
calling mpi_mult_mpi_overlong()
2020-02-20 10:05:48 +01:00
David Cermak
12d639e5b2 mbedtls: added mpi multiplication test for large numbers 2020-02-20 10:05:48 +01:00
Hrishikesh Dhayagude
e14c55c3ad examples/bluetooth/nimble: Correct the connection handle in update and enc_change event 2020-02-20 14:02:33 +05:30
Amit Sheth
03b3e5eff2 project_include.cmake: Make esptool_py_custom_target callable from other directories (backport v3.3) 2020-02-20 13:11:52 +05:30
Renz Christian Bagaporo
9d0e3501c5 cmake: fix extra component dirs ordering 2020-02-20 12:31:23 +05:00
Jiang Jiang Jian
c1bf7057d3 Merge branch 'bugfix/fix_sniffer_bug_caused_by_mode_switch_v3.3' into 'release/v3.3'
FIx sniffer bug caused by mode switch (backport v3.3)

See merge request espressif/esp-idf!7685
2020-02-20 14:58:33 +08:00
Jiang Jiang Jian
365092fb57 Merge branch 'bugfix/coex_a2dp_stuck_after_creating_another_connection_v3.3' into 'release/v3.3'
components/coex: Fix a2dp stuck after creating another connection

See merge request espressif/esp-idf!7663
2020-02-20 14:16:53 +08:00
xiehang
cee1bc9f8e lw-ip: Add option to ipv6 stateless address configuration 2020-02-20 14:06:26 +08:00
Michael (XIAO Xufeng)
18e5d35722 Merge branch 'bugfix/add_missing_ledc_set_pin_declaration_v3.3' into 'release/v3.3'
Bugfix:  Add missing ledc_set_pin declaration in led.h (v3.3)

See merge request espressif/esp-idf!7370
2020-02-20 13:53:13 +08:00
Anton Maklakov
013b8ab34c ci: Adjust more 'spawn' settings in test_confserver 2020-02-20 04:29:57 +00:00
Jiang Jiang Jian
fb2d0de8f9 Merge branch 'bugfix/enable_ipv6_address_autoconfig_v3.3' into 'release/v3.3'
lw-ip: Enable IPv6 stateless address autoconfiguration (backport v3.3)

See merge request espressif/esp-idf!7657
2020-02-20 11:46:23 +08:00
xiehang
a853c84db2 esp_wifi: Small refactor for ic_set_vif 2020-02-19 21:54:04 +08:00
Jiang Jiang Jian
3aa0922221 Merge branch 'bugfix/controller_initializer_order' into 'release/v3.3'
fix initializer order for BT_CONTROLLER_INIT_CONFIG_DEFAULT

See merge request espressif/esp-idf!7623
2020-02-19 17:09:17 +08:00
Jiang Jiang Jian
e0b29aca15 Merge branch 'bugfix/fix_airkiss_bug_v3.3' into 'release/v3.3'
fix the bug for Airkiss (backport v3.3)

See merge request espressif/esp-idf!7666
2020-02-19 16:40:22 +08:00
Michael (XIAO Xufeng)
b1a9e364bb Merge branch 'bugfix/i2s_timergroup_some_issues_v3.3' into 'release/v3.3'
bugfix(driver): fix i2s and timergroup some issues(backport v3.3)

See merge request espressif/esp-idf!7172
2020-02-19 11:19:10 +08:00
zhangyanjiao
2dfadc9657 fix the bug for Airkiss can't get the ip of the cellphone 2020-02-19 10:19:26 +08:00
Angus Gratton
5323c159c1 Merge branch 'bugfix/kconfig_cmake_escape_v3.3' into 'release/v3.3'
confgen.py: Escape special characters for cmake (v3.3)

See merge request espressif/esp-idf!7647
2020-02-19 08:01:38 +08:00
Angus Gratton
09e2a82970 Merge branch 'doc/partition_table_app_test_v3.3' into 'release/v3.3'
partition table: Update documentation about "test" partition type (v3.3)

See merge request espressif/esp-idf!7631
2020-02-19 08:00:49 +08:00
Jiang Jiang Jian
2d2ccaacd8 Merge branch 'bugfix/unified_prov_bluedroid_v3.3' into 'release/v3.3'
Unified Provisioning - BLE: Fix characteristics read response issue (backport v3.3)

See merge request espressif/esp-idf!7649
2020-02-18 20:57:51 +08:00
Jiang Jiang Jian
a4bbcbcf98 Merge branch 'bugfix/ble_mesh_fix_compile_error_with_cpp_3.3' into 'release/v3.3'
ble_mesh: Fix compile error with c++ files (v3.3)

See merge request espressif/esp-idf!7585
2020-02-18 20:44:31 +08:00
baohongde
7592ec77f5 components/coex: Fix a2dp stuck after creating another connection 2020-02-18 20:22:48 +08:00
xiehang
2f1d050133 lw-ip: Enable IPv6 stateless address autoconfiguration 2020-02-18 19:28:22 +08:00
Jiang Jiang Jian
9b1c1f21f9 Merge branch 'bugfix/strncpy_issue_in_wifi_example_v3.3' into 'release/v3.3'
replace strncpy with strlcpy in wifi examples for safety's sake (v3.3)

See merge request espressif/esp-idf!7634
2020-02-18 19:06:45 +08:00
Hrishikesh Dhayagude
a1e0268f40 Unified Provisioning - BLE: Fix characteristics read response issue
Fix the issue when number of bytes to be read is an exact multiple of MTU-1
2020-02-18 15:06:44 +05:30
Roland Dobai
9c1d75cc5b confgen.py: Escape special characters for cmake
Closes https://github.com/espressif/esp-idf/issues/4751
2020-02-18 09:56:05 +01:00
June
eec53257dc backport esp32 5p0 new features to v3p3 2020-02-18 15:21:07 +08:00
suda-morris
a476228c8c replace strncpy with strlcpy in wifi examples for safety's sake 2020-02-18 10:41:33 +08:00
Angus Gratton
f8113d89e7 partition table: Update documentation about "test" partition type
Reported from forum: https://esp32.com/viewtopic.php?f=13&t=10777&p=44164#p44164
2020-02-18 11:02:23 +11:00
Angus Gratton
6648127362 Merge branch 'bugfix/doc_sphinxcontrib_dep_v3.3' into 'release/v3.3'
Docs: Fix sphinxcontrib dependencies (v3.3)

See merge request espressif/esp-idf!7611
2020-02-17 15:07:55 +08:00
Jiang Jiang Jian
817efe8aa2 Merge branch 'bugfix/add_hostname_option_to_dhcp_request_on_reboot' into 'release/v3.3'
lw-ip:add hostname option to dhcp request on reboot

See merge request espressif/esp-idf!7383
2020-02-15 14:13:27 +08:00
xueyunfei
a0eb61e8a8 add hostname option to dhcp request on reboot 2020-02-14 22:53:38 +08:00
Jiang Jiang Jian
4f41c77665 Merge branch 'bugfix/LWIP_header_missing_C++_guards' into 'release/v3.3'
lw-ip:add lw-ip header missing_C++ guards

See merge request espressif/esp-idf!7411
2020-02-14 22:44:27 +08:00
Jiang Jiang Jian
fdceac415b Merge branch 'feature/add_ETHARP_SUPPORT_VLAN' into 'release/v3.3'
lw-ip:add feature ETHARP SUPPORT VLAN

See merge request espressif/esp-idf!7399
2020-02-14 19:48:09 +08:00
xueyunfei
5599d05f87 add lwip header missing_C++ guards 2020-02-14 18:50:24 +08:00
Jiang Jiang Jian
f41e536f06 Merge branch 'fixbug/disable_TCP_QUEUE_OOSEQ_compile_fail' into 'release/v3.3'
lw-ip:fixbug disable TCP_QUEUE OOSEQ compile fail

See merge request espressif/esp-idf!7382
2020-02-14 17:56:08 +08:00
xueyunfei
4f0ee78558 add feature ETHARP SUPPORT VLAN 2020-02-14 17:44:05 +08:00
Roland Dobai
d12048bcea Docs: Fix sphinxcontrib dependencies 2020-02-14 10:40:07 +01:00
Jiang Jiang Jian
fcc9db267d Merge branch 'bugfix/crash_of_dhcp_server_reconfiguration' into 'release/v3.3'
lw-ip:fixed rare crash of DHCP Server during WIFI AP network reconfiguration and...

See merge request espressif/esp-idf!7412
2020-02-14 16:49:48 +08:00
Jiang Jiang Jian
9b67208b14 Merge branch 'hfp_a2dp_iphone_3.3' into 'release/v3.3'
components bt/: Disable sniff mode during (e)SCO connection for HFP. [backport 3.3]

See merge request espressif/esp-idf!7250
2020-02-14 16:48:06 +08:00
Jiang Jiang Jian
91f0fcc3b3 Merge branch 'feat/nimble_esp_ble_mesh_v3.3' into 'release/v3.3'
Add support of NimBLE host in ESP-BLE-Mesh (backport v3.3)

See merge request espressif/esp-idf!7510
2020-02-14 16:43:05 +08:00
Jiang Jiang Jian
f88a04aa3e Merge branch 'bugfix/wifi_clear_phy_status_when_cpu_start_v3.3' into 'release/v3.3'
soc: clear PHY status when cpu start (backport v3.3)

See merge request espressif/esp-idf!7589
2020-02-14 11:34:45 +08:00
Hrishikesh Dhayagude
cf6f1e8246 Add support of NimBLE host in ESP-BLE-Mesh - v3.3 2020-02-13 12:33:23 +05:30
Xia Xiaotian
79445f4234 soc: clear PHY status when cpu start 2020-02-13 14:20:30 +08:00
Jiang Jiang Jian
bdc586bb52 Merge branch 'bugfix/fix_double_recycle_bar_crash_issue_v3.3' into 'release/v3.3'
esp32: fix the crash caused by double free BAR buffer (backport v3.3)

See merge request espressif/esp-idf!7567
2020-02-13 12:02:46 +08:00
lly
46b1608f44 ble_mesh: Fix compile error with c++ files 2020-02-13 09:58:56 +08:00
liu zhifu
2118af0163 esp32: fix the crash caused by double free BAR buffer 2020-02-12 19:54:38 +08:00
Ivan Grokhotkov
0dec21cfda Merge branch 'bugfix/idf_tools_virtualenv_v3.3' into 'release/v3.3'
idf_tools.py: fix install-python-env failure with virtualenv 20.0.0 (backport v3.3)

See merge request espressif/esp-idf!7554
2020-02-12 17:32:21 +08:00
Jiang Jiang Jian
2eb4374a5b Merge branch 'bugfix/coex_schm_rebased_v3.3' into 'release/v3.3'
components/esp_wifi: improve coexistence performance according to specific WiFi/BT/BLE scienario (Backport v3.3)

See merge request espressif/esp-idf!7410
2020-02-12 17:07:18 +08:00
Xia Xiaotian
a41443184e components/esp_wifi: improve coexistence performance according to specific WiFi/BT/BLE scienario
1. Improve WiFi throughput in some Classic BT scienarios(idle, inquire scan,
       connected, sniff, a2dp pause, etc).

    2. Support WiFi + Classic BT + BLE mesh coexistence scienario.

    3. Improve WiFi scan and connect succeed ratio in coexistence scienario.

    4. Do not support to choose software coexistence preference anymore for it is
       determined according to coexistence scienario automatically.

components/lwip: increase TCP send buffer and receive window limitation when TCP window scale is enabled

components/ble_mesh: Fix some bugs about ble mesh

    1. fix send acl pkt after ble have sent terminate ind modify min adv interval to 10ms.
2020-02-12 16:13:28 +08:00
Jiang Jiang Jian
8c3cefca81 Merge branch 'bugfix/panic_cache_err_dig_reset_v3.3' into 'release/v3.3'
esp32: panic: do digital reset if cache error interrupt is set (backport v3.3)

See merge request espressif/esp-idf!7485
2020-02-12 15:30:59 +08:00
Ivan Grokhotkov
ec222a2dff idf_tools.py: fix install-python-env failure with virtualenv 20.0.0
--no-site-packages is the default behavior since virtualenv 1.7
(released in Nov 2011). This option was removed in virtualenv 20.0.
2020-02-11 09:47:38 +01:00
Angus Gratton
72e7978f89 Merge branch 'bugfix/part_gen_subtype_fix_v3.3' into 'release/v3.3'
partition_table: Fix subtype in gen_esp32part.py (v3.3)

See merge request espressif/esp-idf!7537
2020-02-11 12:06:33 +08:00
Marius Vikhammer
e9894d6efc mqtt: update submodule to point to latest commit.
Adds bugfixes for:
 - Too early publishing
 - Potential mutex memory leak
 - CI related issues.
 - Wait for entire connack message
 - Event loop not getting cleaned up

Adds support for ALPN, configurable reconnect time, QEMU CI tests and password
protected client key.

MQTT MR: esp-mqtt/merge_requests/46
Closes IDF-1162
Closes https://github.com/espressif/esp-mqtt/issues/137

MQTT MR: esp-mqtt/merge_requests/47
Closes IDF-1126

MQTT MR: esp-mqtt/merge_requests/48
Closes IDFGH-2197
Closes https://github.com/espressif/esp-idf/issues/4349
Closes https://github.com/espressif/esp-mqtt/issues/140

MQTT MR: esp-mqtt/merge_requests/48
Closes IDFGH-2235
Closes https://github.com/espressif/esp-idf/issues/4384

MQTT MR: esp-mqtt/merge_requests/49
Closes https://github.com/espressif/esp-idf/issues/4433
Closes IDFGH-2293

MQTT MR: esp-mqtt/merge_requests/50
Closes FCS-254

MQTT MR: esp-mqtt/merge_requests/53
Closes FCS-267
2020-02-10 07:57:08 +00:00
boarchuz
8c72cc5749 Fix subtype in PartitionTable.find_by_type
Fix ptype->subtype

Closes https://github.com/espressif/esp-idf/pull/4723
2020-02-10 08:37:45 +01:00
Angus Gratton
a590348af2 Merge branch 'bugfix/ble_mesh_kconfig_ascii_v3.3' into 'release/v3.3'
bugfix: bt Kconfig included a UTF-8 comma

See merge request espressif/esp-idf!7523
2020-02-10 06:47:19 +08:00
El Jeffo
79dff0ef12 fix initializer order for BT_CONTROLLER_INIT_CONFIG_DEFAULT 2020-02-07 18:59:03 +08:00
Angus Gratton
aafe7f73f5 Merge branch 'bugfix/doc_nwdiag_v3.3' into 'release/v3.3'
docs: Fix nwdiag dependency for documentation build (v3.3)

See merge request espressif/esp-idf!7517
2020-02-07 06:20:06 +08:00
Angus Gratton
fd348b7bd8 bugfix: bt Kconfig included a UTF-8 comma
Displays incorrectly on Python 3, but can crash Python 3 if the system default encoding is not utf-8
2020-02-07 09:10:56 +11:00
Roland Dobai
350f23c9bd docs: Fix nwdiag dependency for documentation build 2020-02-06 17:52:19 +01:00
Angus Gratton
91b9310714 Merge branch 'bugfix/esp_timer_stucks_into_esp_timer_impl_set_alarm_v3.3' into 'release/v3.3'
esp_timer/esp32: Fix esp_timer_impl_set_alarm() when CPU and APB freqs are changed (v3.3)

See merge request espressif/esp-idf!7441
2020-02-06 14:33:21 +08:00
Angus Gratton
2da1db9726 Merge branch 'bugfix/wps_config_init_v3.3' into 'release/v3.3'
WPS_CONFIG_INIT_DEFAULT(type) error

See merge request espressif/esp-idf!7312
2020-02-06 14:06:27 +08:00
KonstantinKondrashov
2718fdbd95 esp_timer/esp32: Fix case when alarm_reg > counter_reg but FRC_TIMER_INT_STATUS is not set
Closes: WIFI-1576
Closes: https://github.com/espressif/esp-idf/issues/2954
2020-02-05 10:43:19 +00:00
Hrishikesh Dhayagude
a03b9c7465 Add NimBLE files in ESP-BLE-Mesh again
Revert "ble_mesh: Remove NimBLE implementation for ESP-BLE-MESH"

This reverts commit 925f93614c.
2020-02-05 13:37:54 +05:30
Jiang Jiang Jian
f972606763 Merge branch 'feat/ble_mesh_for_idf3.3' into 'release/v3.3'
ble_mesh: Add ESP BLE Mesh implementation (v3.3)

See merge request espressif/esp-idf!7274
2020-02-04 11:42:35 +08:00
lly
925f93614c ble_mesh: Remove NimBLE implementation for ESP-BLE-MESH 2020-02-03 12:04:00 +08:00
lly
b19671e0d4 ble_mesh: Add ESP BLE Mesh implementation
1. BLE Mesh Core

    * Provisioning: Node Role
        * PB-ADV and PB-GATT
        * Authentication OOB

    * Provisioning: Provisioner Role
        * PB-ADV and PB-GATT
        * Authentication OOB

    * Networking
        * Relay
        * Segmentation and Reassembly
        * Key Refresh
        * IV Update

    * Proxy Support

    * Multiple Client Models Run Simultaneously
        * Support multiple client models send packets to different nodes simultaneously
        * No blocking between client model and server

    * NVS Storage
        * Store BLE Mesh node related information in flash
        * Store BLE Mesh Provisioner related information in flash

2. BLE Mesh Models

    * Foundation Models
        * Configuration Server Model
        * Configuration Client Model
        * Health Server Model
        * Health Client Model

    * Generic
        * Generic OnOff Server
        * Generic OnOff Client
        * Generic Level Server
        * Generic Level Client
        * Generic Default Transition Time Server
        * Generic Default Transition Time Client
        * Generic Power OnOff Server
        * Generic Power OnOff Setup Server
        * Generic Power OnOff Client
        * Generic Power Level Server
        * Generic Power Level Setup Server
        * Generic Power Level Client
        * Generic Battery Server
        * Generic Battery Client
        * Generic Location Server
        * Generic Location Setup Server
        * Generic Location Client
        * Generic Admin Property Server
        * Generic Manufacturer Property Server
        * Generic User Property Server
        * Generic Client Property Server
        * Generic Property Client

    * Sensor Server Model
        * Sensor Server
        * Sensor Setup Server
        * Sensor Client

    * Time and Scenes
        * Time Server
        * Time Setup Server
        * Time Client
        * Scene Server
        * Scene Setup Server
        * Scene Client
        * Scheduler Server
        * Scheduler Setup Server
        * Scheduler Client

    * Lighting
        * Light Lightness Server
        * Light Lightness Setup Server
        * Light Lightness Client
        * Light CTL Server
        * Light CTL Setup Server
        * Light CTL Client
        * Light CTL Temperature Server
        * Light HSL Server
        * Light HSL Setup Server
        * Light HSL Client
        * Light HSL Hue Server
        * Light HSL Saturation Server
        * Light xyL Server
        * Light xyL Setup Server
        * Light xyL Client
        * Light LC Server
        * Light LC Setup Server
        * Light LC Client

3. BLE Mesh Applications

    * BLE Mesh Node
        * OnOff Client Example
        * OnOff Server Example

    * BLE Mesh Provisioner
        * Example

    * Fast Provisioning
        * Vendor Fast Prov Server Model
        * Vendor Fast Prov Client Model
        * Examples

    * Wi-Fi & BLE Mesh Coexistence
        * Example

    * BLE Mesh Console Commands
        * Examples
2020-02-03 12:03:36 +08:00
Angus Gratton
c38bf3534e Merge branch 'bugfix/idf_monitor_usbser_sys_v3.3' into 'release/v3.3'
tools: work around usbser.sys bug in IDF monitor (v3.3)

See merge request espressif/esp-idf!7471
2020-01-31 15:57:54 +08:00
Hrudaynath Dhabe
46bfd878da Fix wps config for support with gnu++11 as well as c99. 2020-01-31 05:56:00 +00:00
Angus Gratton
1de51a2cbe Merge branch 'bugfix/esp_ptr_executable_single_core_v3.3' into 'release/v3.3'
soc: Fix esp_ptr_executable() for single core ESP32 config & cache memory (v3.3)

See merge request espressif/esp-idf!7465
2020-01-31 12:59:42 +08:00
Ivan Grokhotkov
f6e1a12b34 esp32: panic: do digital reset if cache error interrupt is set
Even if frame->exccause != PANIC_RSN_CACHEERR, it is possible that
the cache error interrupt status is set. For example, this may happen
due to an invalid cache access in the panic handler itself.
Check cache error interrupt status instead of frame->exccause to
decide whether to do CPU reset or digital reset.

Also remove unnecessary esp_dport_access_int_pause from
esp_cache_err_get_cpuid, since the panic handler already calls
esp_dport_access_int_abort on entry.
2020-01-30 12:31:00 +01:00
Rosa Elena Veiga Otero
b81ae0873a tools: work around usbser.sys bug in idf_monitor
implemented workaround in idf_monitor for known usbser.sys bug which
causes changes in RTS signal to only be sent if DTR signal also changes.
Works by forcing a dummy change in DTR signal (re-assigning its current
value, as it has previously been done in the flashing tool)

Closes https://github.com/espressif/esp-idf/pull/4676
2020-01-30 08:39:05 +01:00
Angus Gratton
07387fbd29 soc: Fix esp_ptr_executable() for single core ESP32 config & cache memory
In single core mode, APP CPU cache region is added to the available range.
2020-01-29 10:04:01 +11:00
Ivan Grokhotkov
3386cb5400 Merge branch 'bugfix/fix_ota_timeout_issues_v3.3' into 'release/v3.3'
Change Socket timeout to avoid connection error (v3.3)

See merge request espressif/esp-idf!7451
2020-01-27 17:09:36 +08:00
Shubham Kulkarni
556f194b94 OTA example: Change OTA example timeout in sdkconfig.ci for CI testing 2020-01-24 18:37:46 +05:30
Angus Gratton
b19d054407 Merge branch 'bugfix/ci_deploy_tags_v3.3' into 'release/v3.3'
ci: fix tags for internal deploy jobs (backport v3.3)

See merge request espressif/esp-idf!7294
2020-01-24 13:43:45 +08:00
Angus Gratton
f8151b2bfe Merge branch 'bugfix/esp_tls_blocking_timeout_v3.3' into 'release/v3.3'
esp-tls: add timeout for blocking connection (v3.3)

See merge request espressif/esp-idf!7397
2020-01-22 11:44:01 +08:00
Ivan Grokhotkov
d3cc7c0daf Merge branch 'bugfix/esp_log_from_critical_v3.3' into 'release/v3.3'
intr_alloc: don't call ESP_LOG from a critical section (backport v3.3)

See merge request espressif/esp-idf!7160
2020-01-22 00:14:32 +08:00
Ivan Grokhotkov
552eb63ec4 Merge branch 'bugfix/fix_phy_init_data_bin_generation' into 'release/v3.3'
esp32: fix generation of phy_init_data.bin

See merge request espressif/esp-idf!7258
2020-01-21 17:04:18 +08:00
xueyunfei
a025eeaf5b fixbug disable TCP_QUEUE OOSEQ compile fail 2020-01-21 16:06:18 +08:00
Alex Winter
faf23c095c Fixed rare crash of DHCP Server during WIFI AP network reconfiguration and DHCP restart due to missed callback
Signed-off-by: xueyunfei <xueyunfei@espressif.com>
2020-01-21 14:19:36 +08:00
Angus Gratton
5e9746bffa Merge branch 'bugfix/advanced_https_ota_example_v3.3' into 'release/v3.3'
esp_https_ota in sync with v4.x (backport v3.3)

See merge request espressif/esp-idf!7161
2020-01-21 14:09:12 +08:00
Jiang Jiang Jian
8be372a1fd Merge branch 'bugfix/wa_dport_and_intr_v3.3' into 'release/v3.3'
esp32: Fix for DPORT (v3.3)

See merge request espressif/esp-idf!7350
2020-01-21 10:53:15 +08:00
Jiang Jiang Jian
006f2c0b3a Merge branch 'bugfix/backport_some_wifi_bugs_0107_v3.3' into 'release/v3.3'
backport some Wi-Fi bugs 0107 (backport v3.3)

See merge request espressif/esp-idf!7240
2020-01-20 16:08:58 +08:00
David Cermak
3ab801e27e esp_tls: fail connection if esp_tls_conn_new() timeouts 2020-01-20 07:32:17 +01:00
Jiang Jiang Jian
613ba4c015 Merge branch 'bugfix/btdm_backports_v3.3_0114' into 'release/v3.3'
components/bt: backport release/v3.3

See merge request espressif/esp-idf!7358
2020-01-19 11:48:56 +08:00
Mahavir Jain
f4a1a186a6 Merge branch 'nimble/example_update_doc_v3.3' into 'release/v3.3'
NimBLE: Update the documentation link in the examples (v3.3)

See merge request espressif/esp-idf!7366
2020-01-17 11:12:09 +08:00
Paul Abbott
9c3d2b4f70 Bugfix(LEDC): Add missing ledc_set_pin declaration in led.h 2020-01-17 10:26:15 +08:00
Hrishikesh Dhayagude
b4383d609f NimBLE: Update the documentation link in the examples 2020-01-16 17:13:21 +05:30
baohongde
30779731ea components/bt: backport release/v3.3
Fix A2DP stuck when BLE's interval is too small
Bugfix that bluetooth controller may not be able to enter sleep after end of wake up request
Fix LMP sniff req timeout
2020-01-16 15:47:31 +08:00
KonstantinKondrashov
106f165899 esp32: Add UT for DPORT 2020-01-16 14:33:56 +08:00
KonstantinKondrashov
68791163b2 esp32: Fix esp_dport_access_reg_read 2020-01-16 14:33:56 +08:00
Jiang Jiang Jian
53752db908 Merge branch 'bugfix/btdm_fix_multi_open_evt_and_clear_blufi_prepare_write_len_v3.3' into 'release/v3.3'
component/bt: fix multi open evt and clear blufi prepare write len(backport v3.3)

See merge request espressif/esp-idf!7325
2020-01-16 11:48:39 +08:00
Ivan Grokhotkov
a8b974f245 intr_alloc: don't call ESP_LOG from a critical section
Calling ESP_LOG from a critical section leads to abort() in 4.1, and
may also randomly abort() in earlier versions.

Closes FCS-268
2020-01-15 04:15:57 +00:00
Renz Christian Bagaporo
8b44275fbf esp32: fix generation of phy_init_data.bin
Closes https://github.com/espressif/esp-idf/issues/4567
2020-01-15 03:39:00 +00:00
Ivan Grokhotkov
367c3c09cc Merge branch 'bugfix/ci_submodule_checkout_v3.3' into 'release/v3.3'
ci: Clean submodules after fetching sources

See merge request espressif/esp-idf!7321
2020-01-15 10:25:28 +08:00
Angus Gratton
2b6021cc31 ci: Clean submodules after fetching sources
Assuming no submodule dirs contain artifacts that we can't clean
2020-01-15 11:12:34 +10:00
zhiweijian
5187d64c34 component/bt: fix blufi prepare write buf len invalid 2020-01-14 17:45:40 +08:00
zhiweijian
927c4afa5b Component/bt: Fix GATTC trigger open event multiple times 2020-01-14 17:41:45 +08:00
Shubham Kulkarni
a63b5d155f Bugfix for failing OTA example
example_test.py is added to test advanced_https_ota_example and native ota_example.

Closes https://github.com/espressif/esp-idf/issues/4394
2020-01-13 17:39:01 +05:30
xiehang
da656f0345 lwip: Drop packets larger than MTU 2020-01-13 15:11:06 +08:00
zhangyanjiao
431080faa1 fix the bugs for espnow and bandwidth 2020-01-13 15:10:09 +08:00
ronghulin
78d7e214d6 esp32: fix a WiFi RX bug
Support WiFi/BT MAC register writting when the WiFi/BT common clock is disabled.
2020-01-13 15:09:52 +08:00
Jiang Jiang Jian
64df5e111e Merge branch 'bugfix/udp_random_port' into 'release/v3.3'
lw-ip:Bugfix for add random udp port

See merge request espressif/esp-idf!7133
2020-01-13 11:46:09 +08:00
Anton Maklakov
852c79c76d ci: fix tags for internal deploy jobs 2020-01-10 18:31:02 +07:00
xueyunfei
92242d5d13 bugfix for add random udp port 2020-01-09 18:01:00 +08:00
Angus Gratton
e28c5127c2 Merge branch 'bugfix/mdns_send_sdptr_answer_v3.3' into 'release/v3.3'
mdns: respond to discovery with the proper pseudo name _services._dns-sd._udp (v3.3)

See merge request espressif/esp-idf!7243
2020-01-09 13:01:26 +08:00
Jiang Jiang Jian
9a44c290f6 Merge branch 'bugfix/btdm_avrc_category_v3.3' into 'release/v3.3'
components/bt: Choose AVRC category according to A2DP role

See merge request espressif/esp-idf!7177
2020-01-09 11:35:02 +08:00
weitianhua
e284ff818b hfp a2dp iphone 3.3 2020-01-08 19:37:51 +08:00
David Cermak
6ace6fbd85 mdns: respond to discovery with the proper pseudo name _services._dns-sd._udp
Closes https://github.com/espressif/esp-idf/issues/4369
Closes IDFGH-2219
2020-01-08 10:22:10 +01:00
Jiang Jiang Jian
c5e37c7073 Merge branch 'bugfix/fix_performance_issues_new_v3.3' into 'release/v3.3'
esp32: fix WiFi performance issue (backport v3.3)

See merge request espressif/esp-idf!7224
2020-01-08 14:45:44 +08:00
liu zhifu
531416d95f esp32: fix WiFi performance issue 2020-01-06 21:07:53 +08:00
baohongde
611c0c3897 components/bt: Choose AVRC category according to A2DP role 2019-12-31 15:31:54 +08:00
Angus Gratton
2befd5c9ee Merge branch 'feature/wifi_prov_ext_httpd_v3.3' into 'release/v3.3'
wifi_provisioning_softap: Allow applications to start webserver externally (v3.3)

See merge request espressif/esp-idf!7164
2019-12-31 15:01:18 +08:00
Angus Gratton
99c4aee0ac Merge branch 'bugfix/ci_test_idf_monitor_3.3' into 'release/v3.3'
CI: Adjust the test parameters of IDF Monitor (backport v3.3)

See merge request espressif/esp-idf!7166
2019-12-31 14:54:33 +08:00
xiongyu
ae94784d4c bugfix(driver): fix i2s and timergroup some issues
* fix i2s and timergroup dev array used by isr crash issue

* Closes IDFGH-2432

* Closes https://github.com/espressif/esp-idf/issues/4545

* fix i2s adc data inv issue

* Closes IDFGH-2444

* Closes https://github.com/espressif/esp-idf/issues/4557
2019-12-31 14:48:44 +08:00
Mahavir Jain
3063679f5a esp_http_client: fix issue where http parser was not invoking message_complete callback
https://github.com/espressif/esp-idf/issues/2625
https://github.com/espressif/esp-idf/issues/4209
2019-12-31 11:14:18 +05:30
Shubham Kulkarni
f335bfdea7 Merge branch 'bugfix/CMake_esp_https_ota_dependencies' into master
components/esp_https_ota: Changes in public requirement list for CMake and esp_ota_ops.h is included in esp_https_ota.c

bootloader_support is added in public requirements of CMake

bootloader_common.h is included in esp_https_ota.h

Closes https://github.com/espressif/esp-idf/issues/4198

Closes IDFGH-2066
2019-12-31 11:14:18 +05:30
Hrudaynath Dhabe
2b44bc47df esp_https_ota: Added error checking functionalities.
Current implimentation of esp_http_ota does not perform any error-checking in the data writing phase calls `esp_ota_get_next_update_partition()` irrespetive of the received state of the image. A few additional error checking mechanism have now been added inside the esp_https_ota which returns the control in case an invalid header is received and a wrapper to the function `esp_http_client_is_complete_data_received()` of `esp_http_client` has been added.
2019-12-31 11:14:18 +05:30
Hrudaynath Dhabe
012ff5775b esp_http_client: Add support to check the binary length of the recieved stream and compare it with the size mentioned in the header.
While downloading OTA firmware, if their is a Origin Respnse Timeout or the binary is only partially downloaded, OTA failure is observed. Checking binary size can also be helpful for simple http client applications.

Closes https://github.com/espressif/esp-idf/issues/3004
2019-12-31 11:14:18 +05:30
Mahavir Jain
b2a1de4d62 Merge branch 'nimble/update_doc_link_v3.3' into 'release/v3.3'
NimBLE: Update the link to NimBLE upstream documentation (v3.3)

See merge request espressif/esp-idf!7168
2019-12-31 13:42:59 +08:00
Hrishikesh Dhayagude
4712d675f7 NimBLE: Update the link to NimBLE upstream documentation 2019-12-30 19:20:06 +05:30
Roland Dobai
4cde39ee42 CI: Adjust the test parameters of IDF Monitor 2019-12-30 14:37:33 +01:00
Piyush Shah
36f0728254 wifi_provisioning_softap: Allow applications to start webserver externally
If an application wants to use webserver, instead of creating another
webserver instance, the wifi provisioning manager can re-use the same.
The webserver handle can be passed using this new API.

Signed-off-by: Piyush Shah <piyush@espressif.com>
2019-12-30 17:34:30 +05:30
Angus Gratton
37aac8314e Merge branch 'bugfix/msys2_environment_update_v3.3' into 'release/v3.3'
doc: Update MSYS2 pre-compiled environment zip

See merge request espressif/esp-idf!7079
2019-12-30 11:36:10 +08:00
Angus Gratton
a4f872c181 doc: Update MSYS2 pre-compiled environment zip
Required to get working MSYS2 Python cryptography package

Closes https://github.com/espressif/esp-idf/issues/4457
2019-12-30 13:44:37 +11:00
Jiang Jiang Jian
45329c2fdc Merge branch 'bugfix/btdm_revert_changes_of_security_mask_v3.3' into 'release/v3.3'
components/bt: Revert changes of security mask

See merge request espressif/esp-idf!7120
2019-12-29 14:12:50 +08:00
baohongde
09b8979987 components/bt: Revert changes of security mask 2019-12-25 20:13:35 +08:00
Mahavir Jain
9945c2fdcd Merge branch 'bugfix/touchpad_interrupt_v3.3' into 'release/v3.3'
Change critical section API for touch pad interrupt (backport v3.3)

See merge request espressif/esp-idf!7107
2019-12-25 14:09:04 +08:00
Shubham Kulkarni
afb8064a29 esp32/rtc_module: Fixed critical section API
Application used to abort as portENTER_CRITICAL is used in ISR.
portENTER_CRITICAL is changed to portENTER_CRITICAL_SAFE in touch_pad_clear_status()

https://github.com/aws/amazon-freertos/issues/1651
2019-12-24 18:00:19 +05:30
Jiang Jiang Jian
1a657c255c Merge branch 'bugfix/btdm_disable_some_secrity_mask_v3.3' into 'release/v3.3'
components/bt: Disable some unsupported security mask

See merge request espressif/esp-idf!6726
2019-12-22 21:37:00 +08:00
Jiang Jiang Jian
c5d79efcc5 Merge branch 'bugfix/wps_workaround_for_Telstra_AP_v3.3' into 'release/v3.3'
wps: Relax the check on older config methods in case of WPS2.0 (backport v3.3)

See merge request espressif/esp-idf!5988
2019-12-22 19:21:18 +08:00
baohongde
83184631a4 components/bt: Disable some unsupported security mask 2019-12-22 08:56:18 +00:00
Angus Gratton
c3571e97cb Merge branch 'bugfix/config_assert_thread_safety_backport_v3.3' into 'release/v3.3'
freertos: Fix configASSERT thread safety (backport v3.3)

See merge request espressif/esp-idf!6660
2019-12-20 13:26:30 +08:00
Angus Gratton
e395d14c59 Merge branch 'bugfix/update_can_target_test_backport_v3.3' into 'release/v3.3'
CAN: Reenable example tests (backport v3.3)

See merge request espressif/esp-idf!6735
2019-12-20 13:03:20 +08:00
Jiang Jiang Jian
54c1882b99 Merge branch 'bugfix/put_more_rx_code_to_iram_v3.3' into 'release/v3.3'
wifi: Put some rx code to iram (backportv3.3)

See merge request espressif/esp-idf!6647
2019-12-18 16:39:48 +08:00
Darian Leung
0cf891785e CAN: Reenable example tests
This commit updates the CAN example tests and updates the job
and environment labels in the target-test.yml
2019-12-18 15:39:25 +08:00
Mahavir Jain
1d70441bdc freertos: modify configASSERTs around scheduler state check
Regression introduced in commit 79e74e5d5f

It is possible that some FreeRTOS APIs are invoked prior to
scheduler start condition (e.g. flash initialization in unicore mode).
In that condition these asserts should not trigger (scheduler state being yet to be started),
hence changes per this fix.
2019-12-18 06:49:59 +00:00
Darian Leung
2c96976b13 freertos: Fix configASSERT thread safety
This commit fixes thread safety issues with configASSERT() calls
regarding the value of uxSchedulerSuspended. A false negative
occurs if a context switch to the opposite core occurs in between
the getting the core ID and the assesment.

Closes https://github.com/espressif/esp-idf/issues/4230
2019-12-18 06:49:59 +00:00
Jiang Jiang Jian
a109f7de57 Merge branch 'bugfix/btdm_fix_doc_and_host_bug_backport_v3.3' into 'release/v3.3'
Bugfix/btdm fix doc and host bug backport v3.3

See merge request espressif/esp-idf!6955
2019-12-18 14:19:14 +08:00
Geng Yu Chao
db8bcc60f9 Bugfix/btdm fix doc and host bug backport v3.3 2019-12-18 14:19:13 +08:00
Angus Gratton
62f9b975ac Merge branch 'bugfix/doc_fix_debian_requirements_v3.3' into 'release/v3.3'
Docs: Update Debian & Ubuntu install prerequisites (v3.3)

See merge request espressif/esp-idf!7037
2019-12-18 07:35:27 +08:00
Roland Dobai
71b29fac71 Docs: Update Debian & Ubuntu install prerequisites
Latest versions of apt-get don't install as much packages by default
as older ones. This fix adds some missing packages discovered for an OS
derived from the latest stable Debian. These packages exist for older
Debian derivatives as well (tested with Ubuntu 16.04 LTS).

Closes https://github.com/espressif/esp-idf/issues/4480
2019-12-17 13:58:51 +01:00
xiehang
b764454e52 esp_wifi:Put some rx code to iram 2019-12-17 12:55:47 +00:00
Jiang Jiang Jian
de9fd03b3e Merge branch 'bufgix/esp_timer_set_alarm_v3.3' into 'release/v3.3'
esp_timer: Fix set_alarm. Case when timestamp < now_time (v3.3)

See merge request espressif/esp-idf!6997
2019-12-16 19:40:52 +08:00
Jiang Jiang Jian
97dba89daf Merge branch 'bugfix/btdm_avrc_metadata_length_error_v3.3' into 'release/v3.3'
components/bt: Fix AVRC metadata length error

See merge request espressif/esp-idf!6884
2019-12-16 14:07:20 +08:00
Angus Gratton
88cf7ed87e Merge branch 'bugfix/wifi_internal_memory_v3.3' into 'release/v3.3'
wifi: Include DMA reserved pool when allocating internal-only memory (v3.3)

See merge request espressif/esp-idf!6628
2019-12-16 13:39:43 +08:00
Jiang Jiang Jian
82f1be5e5a Merge branch 'bugfix/hfp_client_indication_v3.3' into 'release/v3.3'
component/bt: Fix bugs in HFP feature v3.3

See merge request espressif/esp-idf!6852
2019-12-16 11:32:10 +08:00
Jiang Jiang Jian
ce9ec29737 Merge branch 'bugfix/http_client_buffer_overflow_v3.3' into 'release/v3.3'
Fix HTTP client buffer overflow (v3.3)

See merge request espressif/esp-idf!6667
2019-12-16 11:31:55 +08:00
Jiang Jiang Jian
7b73cf613c Merge branch 'component_bt/osi_fixed_queue_v3.3' into 'release/v3.3'
component_bt/: Fix_pointer_type_fixed_queue v3.3

See merge request espressif/esp-idf!6847
2019-12-16 11:31:24 +08:00
Jiang Jiang Jian
a980a1780a Merge branch 'bugfix/fix_the_bug_in_espnow_example_v3.3' into 'release/v3.3'
espnow: fix the bug for calling esp_wifi_set_channel (backport v3.3)

See merge request espressif/esp-idf!6693
2019-12-16 11:30:56 +08:00
Angus Gratton
762a9fe83f Merge branch 'bugfix/hide_unsupported_cmake_features_v3.3' into 'release/v3.3'
security: Hide Secure Boot & Flash Encryption config items when using CMake

See merge request espressif/esp-idf!6899
2019-12-16 11:17:49 +08:00
KonstantinKondrashov
d071cd11c8 esp_timer: Add Test case when set_alarm needs set timer < now_time 2019-12-14 04:38:30 +08:00
Mahavir Jain
659ccfa999 Merge branch 'bugfix/set_mconf_idf_build_dir_v3.3' into 'release/v3.3'
cmake: set build dir for mconf-idf (v3.3)

See merge request espressif/esp-idf!7007
2019-12-13 20:06:45 +08:00
Shubham Kulkarni
781bd398dc cmake: set build dir for mconf-idf
Fixes an issue where if idf_build_process is called in a CMake
    subdirectory, menuconfig looks for the mconf-idf binary in the wrong
    place (in the subdirectory build dir instead of root binary dir).
2019-12-13 16:10:01 +05:30
Angus Gratton
876ac4e963 bt: Include DMA reserved pool when allocating internal-only memory
Fix for root cause of https://github.com/espressif/esp-idf/issues/3592
2019-12-12 23:09:59 +00:00
Angus Gratton
6231961683 wifi: Include DMA reserved pool when allocating internal-only memory
Fix for root cause of https://github.com/espressif/esp-idf/issues/3592
2019-12-12 23:09:59 +00:00
KonstantinKondrashov
32ec2750e0 esp_timer: Fix set_alarm. Case when timestamp < now_time
arg1 = MAX(int64_t arg1, uint64_t arg2) gave the wrong result, if arg1 < 0, it was presented as a larger value.
And ALARM_REG = (uin32_t)arg1. This leads to an infinite loop.
Fixed: both args are int64_t.

Closes: WIFI-1511
2019-12-12 14:43:44 +08:00
Angus Gratton
a0c14f46ba Merge branch 'ci/artifact_expiry' into 'release/v3.3'
ci: Minimum 4 days for artifact expiry (v3.3)

See merge request espressif/esp-idf!6982
2019-12-12 14:29:50 +08:00
Angus Gratton
9926a12943 ci: Minimum 4 days for artifact expiry 2019-12-11 18:15:23 +11:00
Ivan Grokhotkov
143d26aa49 Merge branch 'bugfix/doc_package_versions_v3.3' into 'release/v3.3'
doc: Limit sphinxcontrib versions to <2.0.0 as we use Sphinx 1.8.5 (v3.3)

See merge request espressif/esp-idf!6975
2019-12-11 14:23:07 +08:00
Angus Gratton
e1eabe6f6a doc: Limit sphinxcontrib versions to <2.0.0 as we use Sphinx 1.8.5 2019-12-11 14:40:41 +11:00
Angus Gratton
0407ab426e Merge branch 'bugfix/update_libexpat_v3.3' into 'release/v3.3'
expat: Update library from 2.2.5 to 2.2.9 (v3.3)

See merge request espressif/esp-idf!6922
2019-12-09 13:21:10 +08:00
Roland Dobai
bcbc4a9599 expat: Update library from 2.2.5 to 2.2.9 2019-12-05 09:21:29 +01:00
Jiang Jiang Jian
50737018cc Merge branch 'bugfix/coex_fix_wifi_scan_and_connect_bugs_v3.3' into 'release/v3.3'
esp_wifi: fix WiFi scan and connect bugs when coexist with Bluetooth (backport v3.3)

See merge request espressif/esp-idf!6707
2019-12-04 14:57:09 +08:00
Xia Xiaotian
19913cec43 esp_wifi: fix WiFi scan and connect bugs when coexist with Bluetooth
1. Fix WiFi scan leads to poor performance of Bluetooth.
    2. Improve WiFi connect success ratio when coexist with Bluetooth.
    3. Check if WiFi is still connected when CSA or beacon timeout happen.
    4. add coex pre init
2019-12-04 04:19:58 +00:00
Jiang Jiang Jian
bf80d8211e Merge branch 'bugfix/phy_critical_v3.3' into 'release/v3.3'
fix bug that phy_enter_critical cannot effect on dual-core

See merge request espressif/esp-idf!6866
2019-12-04 11:27:28 +08:00
Angus Gratton
46a7409965 security: Hide Secure Boot & Flash Encryption config items when using CMake
These features are not supported in the CMake build system preview, but previously
had to read the notice in the CMake Getting Started guide to know this.

Related to https://github.com/espressif/esp-idf/issues/4419
2019-12-04 11:00:06 +11:00
Mahavir Jain
7d26cf16cc Merge branch 'NimBLE/fix_send_after_controller_ready_v3.3' into 'release/v3.3'
NimBLE: Fix erroneous behaviour of NPL when controller not ready to receive (v3.3)

See merge request espressif/esp-idf!6806
2019-12-03 02:17:35 +08:00
Prasad Alatkar
86c4d8737e NimBLE: Fix erroneous behaviour of NPL when controller not ready to receive (v3.3) 2019-12-03 02:17:34 +08:00
weitianhua
3ceae811be adaptation for nano-format 2019-11-29 17:55:22 +08:00
weitianhua
8977e92b4c component_bt/:bugfix_hfp_client_indication_define_and_cnum_error 2019-11-29 16:22:34 +08:00
baohongde
42b2524776 components/bt: Fix AVRC metadata length error 2019-11-29 15:56:51 +08:00
Tian Hao
8ffe0ff357 fix bug that phy_enter_critical cannot effect on dual-core
Sometimes, libphy.a call phy_enter_critical() to protect accessing critical sections, such like
operating on I2C, but it may not effect when both the CPU core call it. It may cause accessing
I2C blocking and cannot recover by esp_restart(), until do HW reboot.
2019-11-28 17:12:07 +08:00
Jiang Jiang Jian
faf96bd108 Merge branch 'bugfix/btdm_run_out_of_frame_element_v3.3' into 'release/v3.3'
components/bt: Fix assert due to no free element form

See merge request espressif/esp-idf!6701
2019-11-27 22:22:33 +08:00
weitianhua
97b43b4054 component_bt/: Fix pointer type in fixed_queue 2019-11-27 16:09:44 +08:00
Angus Gratton
8225cc75df Merge branch 'bugfix/i2s-bootloader-random-disable_v3.3' into 'release/v3.3'
bugfix(bootloader): fix bug about i2s bootloader_random_disable for release/v3.3

See merge request espressif/esp-idf!6601
2019-11-26 14:37:53 +08:00
Jiang Jiang Jian
0d6cae963b Merge branch 'bugfix/fix_timer_deleted_and_run_broken_callback_v3.3' into 'release/v3.3'
esp_timer: fix the bug that when timeout of timer happens try to run callback(v3.3)

See merge request espressif/esp-idf!6768
2019-11-25 11:05:38 +08:00
Angus Gratton
3a94beeb5b Merge branch 'feature/add_env_tag_for_32khz_xtal_uts_v3.3' into 'release/v3.3'
soc(esp32&esp32s2beta): Add test_env for 32kHz XTAL unit tests (v3.3)

See merge request espressif/esp-idf!6604
2019-11-21 19:58:24 +08:00
Mahavir Jain
29f6537faf Merge branch 'bugfix/warning_fix_latest_freertos_v3.3' into 'release/v3.3'
Fixed warnings for components driver, esp32 and mbedtls (v3.3)

See merge request espressif/esp-idf!6760
2019-11-21 13:20:42 +08:00
Ivan Grokhotkov
160f435e4d Merge branch 'feature/ci_try_to_checkout_correct_branch_for_other_projects_v3.3' into 'release/v3.3'
CI: try to use the correct branch of other projects used in CI (backport v3.3)

See merge request espressif/esp-idf!5593
2019-11-20 22:28:24 +08:00
KonstantinKondrashov
51d2d9041c soc/esp32: Add test_env for 32kHz XTAL unit tests 2019-11-20 15:49:13 +08:00
Jack
5a6ac7f32f esp_timer: fix the bug that when timeout of timer happens try to run callback, and high priority task delete the timer and break the callback 2019-11-20 04:17:41 +00:00
David Cermak
40d5f61c4d http_client: added comments to http header generation function 2019-11-19 14:07:38 +00:00
David Cermak
b7a9f5e115 http_client: possible buffer overflow fixed when determining last header item to be written
closes IDF-694
2019-11-19 14:07:38 +00:00
Shubham Kulkarni
0f3f7d984a Fixed warnings for components driver, esp32 and mbedtls 2019-11-19 15:04:01 +05:30
Angus Gratton
efdddbb253 Merge branch 'fix/ci_ut_psram_wroverb_v3.3' into 'release/v3.3'
ci: fix one ut issue when using Wrover-B module with newer ver of PSRAM (backport v3.3)

See merge request espressif/esp-idf!6594
2019-11-19 12:07:23 +08:00
He Yin Ling
ce9c7e4f79 CI: try to use the correct branch of other projects used in CI:
1. revision defined in bot message
2. branch name (or tag name) of current IDF
3. CI_MERGE_REQUEST_TARGET_BRANCH_NAME
4. branch name parsed from `git describe`
5. default branch
2019-11-19 12:06:27 +08:00
Angus Gratton
66c0699411 Merge branch 'bugfix/mqtt_example_url_update_v3.3' into 'release/v3.3'
MQTT: update default broker URL for examples (backport v3.3)

See merge request espressif/esp-idf!6411
2019-11-19 11:28:07 +08:00
Angus Gratton
646c851824 Merge branch 'feature/idf_tools_v3.3' into 'release/v3.3'
tools, ci: backport idf_tools.py and IDF Docker image

See merge request espressif/esp-idf!6412
2019-11-19 08:29:15 +08:00
Jiang Jiang Jian
51a49a861a Merge branch 'bugfix/btdm_assert_deinit_a2dp_while_playing_v3.3' into 'release/v3.3'
components/bt: Fix assert when deinit A2DP while playing music

See merge request espressif/esp-idf!6535
2019-11-14 20:12:31 +08:00
Michael (XIAO Xufeng)
9b34085053 ci: fix one ut issue when using Wrover-B module with newer ver of PSRAM
The workaround for PSRAM that will occupy an SPI bus is enabled only when:

1. used on 32MBit ver 0 PSRAM.
2. work at 80MHz.

The test used to only check 32MBit by the config option, but for PSRAM
on Wrover-B module seems to use a newer version of 32MBit PSRAM.  So it
expects the workaround to be enabled, but actually not.

This commit split the unit test into two parts:

1. check all SPI buses are available, for all configs except psram_hspi
and psram_vspi, run on regular runners (including Wrover and Wrover-B).
a hidden option is enabled so that the compiler knows it's not building
psram_hspi or psram_vspi.

2. check the specified bus are acquired, for config psram_hspi and
psram_vspi. This only run on special runner (legacy Wrover module).
2019-11-14 08:35:05 +00:00
baohongde
0f7dc2ec02 components/bt: Fix assert due to no free element form 2019-11-14 15:51:39 +08:00
Jiang Jiang Jian
2e341f003a Merge branch 'bugfix/fix_dhcp_timeout_issue_3.3' into 'release/v3.3'
lw-ip: fix DHCP timeout truncation bug(backport v3.3)

See merge request espressif/esp-idf!6319
2019-11-14 13:27:21 +08:00
zhangyanjiao
c375ddc823 espnow: fix the bug for calling esp_wifi_set_channel(), this function only can be called after Wi-Fi started and sniffer enabled. 2019-11-13 17:42:34 +08:00
ronghulin
92c8fd24bb lwip: fix DHCP timeout truncation bug 2019-11-12 13:06:55 +08:00
Angus Gratton
2aa255c875 Merge branch 'bugfix/can_critical_section_compliance_backport_v3.3' into 'release/v3.3'
CAN: Fix critical section compliance (backport v3.3)

See merge request espressif/esp-idf!6567
2019-11-08 16:52:33 +08:00
Ivan Grokhotkov
5a3af62f44 tools/docker: use correct branch and commit of IDF when building 2019-11-06 18:01:24 +01:00
Chen Zheng Wei
bc1d87a846 bugfix(i2s_bootloader_random_disable): fix bug about i2s bootloader_random_disable for release/v3.3
bootloader_random_disable disables the ADC incorrectly, causing the ADC to sometimes fail to work. Fix this bug
2019-11-05 16:58:56 +08:00
Nachiket Kukade
d65086d8ab wps: Relax the check on older config methods in case of WPS2.0 (backport v3.3)
Some APs incorrectly advertize newer WPS2.0 config method bits
without setting bits for the corresponding older methods. This
results in failures during 8-way handshake. Add a workaround to
relax this check so that WPS handshake can proceed.
2019-11-04 07:05:36 +00:00
Ivan Grokhotkov
71d0d08c4e tools, ci: backport idf_tools.py and IDF Docker image 2019-11-03 03:25:39 +01:00
Darian Leung
0caa96584c CAN: Fix critical section compliance
This commit makes the CAN driver ISR use the ISR version
of critical section.
2019-11-01 12:05:12 +08:00
Marius Vikhammer
5d4cd1269b MQTT: update default broker URL for examples
The MQTT broker URL used as default in the examples has ceased operation. All examples and documention have been updated to point to the new domain mqtt.eclipse.org.
This also required an update of the python example test scripts to use TLS 1.2
2019-10-31 11:51:14 +00:00
Ivan Grokhotkov
6e1eb21bae Merge branch 'doc/support_policy_v3.3' into 'release/v3.3'
docs: Add ESP-IDF support period policy (v3.3)

See merge request espressif/esp-idf!6529
2019-10-31 15:47:29 +08:00
Jiang Jiang Jian
0d1c490a7c Merge branch 'bugfix/coex_fix_some_bugs_v3.3' into 'release/v3.3'
Coexist: fix some coexist bugs (backportv3.3)

See merge request espressif/esp-idf!6435
2019-10-30 16:39:20 +08:00
Jiang Jiang Jian
dbd2cd2f7a Merge branch 'bugfix/jump_time_54_sec_v3.3' into 'release/v3.3'
esp_timer: Fix time jumps back ~ 54sec (v3.3)

See merge request espressif/esp-idf!6468
2019-10-30 16:25:35 +08:00
Angus Gratton
34b14ddf5b Merge branch 'bugfix/remove_mbedtls_would_block_v33' into 'release/v3.3'
Remove check for would_block in mbedtls (Backport v3.3)

See merge request espressif/esp-idf!6398
2019-10-30 11:58:09 +08:00
Xia Xiaotian
9592346090 Coexist: fix some coexist bugs
1. Fix high beacon and broadcast packets loss ratio of WiFi to make
   MDNS test pass.
2. Improve stability of WiFi performance with a little
   sacrifice of throughput.
3. Improve BLE advertising and connection performance with dynamic
   priority. It sacrifices a little WiFi throughput, but achieves balance
   between WiFi and Bluetooth.
4. fix bug bb reset lock flag to avoid bb reset lock unhandle
5. fix bug wifi reset mac cause task watch dog timeout
6. fix bug wifi reset mac position
2019-10-29 17:18:12 +00:00
KonstantinKondrashov
696d6867b4 esp_timer: Fix System time jumps back ~54secs
Closes: https://github.com/espressif/esp-idf/issues/2513
2019-10-29 17:17:26 +00:00
KonstantinKondrashov
f52b877199 esp32: Add UTs to check the System time does not jump back 2019-10-29 17:17:26 +00:00
Ivan Grokhotkov
a179125fd3 esp_timer: handle esp_timer_delete in timer task
Closes https://github.com/espressif/esp-idf/issues/3458
2019-10-29 17:17:26 +00:00
Jiang Jiang Jian
1dd8411e04 Merge branch 'bugfix/coex_semaphore_take_in_isr_lock_v3.3' into 'release/v3.3'
fix bug that semaphore may schedule out in ISR locking (v3.3)

See merge request espressif/esp-idf!6427
2019-10-30 00:49:42 +08:00
Jiang Jiang Jian
e6a71fe29c Merge branch 'bugfix/btdm_disable_bt_gatt_v3.3' into 'release/v3.3'
components/bt: Disable BR/EDR GATT

See merge request espressif/esp-idf!6506
2019-10-30 00:48:14 +08:00
Jiang Jiang Jian
efe8490623 Merge branch 'bugfix/mdns_invalid_hostname_queries_v3.3' into 'release/v3.3'
mdns: fix crash for hostname queries (bacport v3.3)

See merge request espressif/esp-idf!6502
2019-10-30 00:27:19 +08:00
Jiang Jiang Jian
a29f30b5d3 Merge branch 'bugfix/btdm_a2dp_sink_media_suspend_cmd_unack_for_v3.3' into 'release/v3.3'
bugfix/btdm_a2dp_sink_media_suspend_cmd_unack_for_v3.3(backport v3.3)

See merge request espressif/esp-idf!5939
2019-10-30 00:26:28 +08:00
baohongde
c570e253fe components/bt: Fix assert when deinit A2DP while playing music 2019-10-29 20:04:15 +08:00
Marius Vikhammer
7b7f597cb4 mdns: fix crash for hostname queries
Receiving TXT, PTR, SDPTR and SRV record type queries would crash the application if the hostname
 was used as instance name.

Closes https://github.com/espressif/esp-idf/issues/4224
2019-10-29 10:49:45 +00:00
wangmengyang
3a5249aea9 bugfix that call of esp_a2d_media_ctrl(ESP_A2D_MEDIA_CTRL_SUSPEND) will not get an ACK from callback on A2DP sink 2019-10-29 10:14:19 +00:00
baohongde
28c19e623f components/bt: Disable BR/EDR GATT 2019-10-29 10:10:52 +00:00
Tian Hao
cabe66195c fix bug that semaphore may schedule out in Critical Section
1. Since BLE full-scan feature for BLE mesh change the controller code cause this problem,
it cause coex semaphore take in "interrupt disable", then it may cause task schedule
and cause crash in freertos
2. Fix newlib lock ISR context and critical section check
3. Fix bt controller ISR context and critical section check
2019-10-29 14:43:00 +08:00
Jiang Jiang Jian
f0855c85ad Merge branch 'bugfix/can_reset_mode_entry_backport_v3.3' into 'release/v3.3'
Bugfix/can reset mode entry backport v3.3

See merge request espressif/esp-idf!6513
2019-10-29 14:41:52 +08:00
Angus Gratton
569334267f Merge branch 'feature/can_support_low_bit_rates_backport_v3.3' into 'release/v3.3'
can: Add support for lower bit rates (backport v3.3.1)

See merge request espressif/esp-idf!6391
2019-10-29 14:36:19 +08:00
Angus Gratton
9911823658 docs: Add ESP-IDF support period policy 2019-10-29 16:36:08 +11:00
Jiang Jiang Jian
b90f32bffb Merge branch 'bugfix/multi_heap_printf_backport_v3.3' into 'release/v3.3'
heap: Fix printf usage in heap poisoning (backport v3.3)

See merge request espressif/esp-idf!6091
2019-10-29 12:07:30 +08:00
Angus Gratton
20db198401 ci: Temporarily ignore CAN example test failures
Due to internal CI issue.
2019-10-28 14:54:21 +08:00
Darian Leung
bf877941c4 can: Fix reset mode entry and exit calls
This commit fixes multiple bugs caused by incorrect calls to
can_enter_reset_mode() and can_exit_reset_mode. Example test
scripts also updated to match new runners.
2019-10-28 14:47:32 +08:00
Darian Leung
f9a51fc784 can: Add support for lower bit rates
This commit adds support for lower bit rates in the CAN Driver for
ESP32 Rev 2 or later chips.
2019-10-28 13:10:00 +08:00
Jiang Jiang Jian
aa09462685 Merge branch 'bugfix/msys2_toolchain_path_note_v3.3' into 'release/v3.3'
docs: update windows msys2 installer notes to unzip all-in-one toolchain to path without spaces (v3.3)

See merge request espressif/esp-idf!6457
2019-10-25 11:41:09 +08:00
Jiang Jiang Jian
365c336a98 Merge branch 'feature/esptool_v2.8_v3.3' into 'release/v3.3'
esptool: Bump to v2.8 release (v3.3)

See merge request espressif/esp-idf!6461
2019-10-25 11:37:08 +08:00
Angus Gratton
95c768165f Merge branch 'bugfix/select_with_sdmmc_mount_v3.3' into 'release/v3.3'
VFS: Fix bug which occurs when driver is installed during a select() call (v3.3)

See merge request espressif/esp-idf!6430
2019-10-24 11:28:14 +08:00
Angus Gratton
12f2ae47c6 Merge branch 'bugfix/mqtt_disconnect_crash_3.3' into 'release/v3.3'
mqtt: referenced esp-mqtt master to close disconnection issues (Backport 3.3)

See merge request espressif/esp-idf!5883
2019-10-24 10:47:27 +08:00
Angus Gratton
fc6b44f500 esptool: Bump to v2.8 release 2019-10-23 09:08:34 +11:00
David Cermak
0042aaafa1 docs: update windows msys2 installer notes to unzip all-in-one toolchain to path without spaces (v3.3) 2019-10-22 21:18:10 +02:00
Darian Leung
adcf95dc9f heap: Fix printf usage in heap poisoning
This commit fixes the bug where printf() is used in
verify_allocated_region() when ets_printf() should be used.
2019-10-22 12:01:24 +00:00
Roland Dobai
e5ee10e89f VFS: Fix bug which occurs when driver is installed during a select() call
Closes https://github.com/espressif/esp-idf/issues/3554
2019-10-22 10:15:21 +02:00
Angus Gratton
c9f1cb2f4c Merge branch 'bugfix/ticks_to_wait_for_uart_and_i2c_v3.3' into 'release/v3.3'
driver: Fix ticks_to_wait for uart and i2c (v3.3)

See merge request espressif/esp-idf!5247
2019-10-22 13:18:24 +08:00
David Cermak
a0c8de077b mqtt: updated to latest version to include latest fixes, support for global CA store, extended error structure to receive mqtt specific errors. updated idf ssl example to use this error struct
backport of 640eac84fa
2019-10-21 12:56:18 +00:00
David Cermak
9e62340897 mqtt: referenced esp-mqtt master to fix disconnect issues
and updates doxygen macros to have mqtt docs correctly documented

Backport of 6289a26596
2019-10-21 12:56:18 +00:00
Jiang Jiang Jian
f451efd1d0 Merge branch 'bugfix/vfs_fat_sdmmc_mount_v3.3' into 'release/v3.3'
Fix memory leak upon failure of esp_vfs_fat_sdmmc_mount() (v3.3)

See merge request espressif/esp-idf!6394
2019-10-21 20:15:52 +08:00
Jiang Jiang Jian
f490eda68c Merge branch 'bugfix/can_driver_assertions_v3.3' into 'release/v3.3'
drivers/can: fix skipped function calls when assertions disabled (backport v3.3)

See merge request espressif/esp-idf!6406
2019-10-21 20:12:54 +08:00
Konstantin Kondrashov
f2dfb0cf70 driver: Add uart and i2c UTs to check ticks_to_wait in some functions 2019-10-21 07:32:25 +00:00
Konstantin Kondrashov
03aef3c087 i2c: Fix ticks_to_wait when 0 or time expired
Closes: https://github.com/espressif/esp-idf/issues/3301

Closes: IDFGH-964
2019-10-21 07:32:25 +00:00
Angus Gratton
9a6526554d Merge branch 'bugfix/ut_pre_read_DPORT_and_hi_interrupt' into 'release/v3.3'
esp32: Fix UT - Check pre-read workaround DPORT and Hi-interrupt

See merge request espressif/esp-idf!6240
2019-10-21 15:10:14 +08:00
Roland Dobai
8d4e1c0616 Fix memory leak upon failure of esp_vfs_fat_sdmmc_mount()
Closes https://github.com/espressif/esp-idf/issues/4165
2019-10-21 08:22:12 +02:00
Jiang Jiang Jian
4e27cbb89f Merge branch 'feature/esp_https_ota_improvements' into 'release/v3.3'
esp_https_ota: component refactoring, bugfixes and feature additions (backport v3.3)

See merge request espressif/esp-idf!6047
2019-10-21 10:40:37 +08:00
Jiang Jiang Jian
b51f89d827 Merge branch 'bugfix/freemodbus_fix_read_coils_event_v3_3' into 'release/v3.3'
freemodbus: fix incorrectly set coils read event backport v3.3

See merge request espressif/esp-idf!4793
2019-10-21 10:38:39 +08:00
Mahavir Jain
e30c7a9b27 Merge branch 'bugfix/spi_flash_read_changes_for_less_than_16_bytes_v3.3' into 'release/v3.3'
Bugfix/spi flash read changes for less than 16 bytes v3.3(backport v3.3)

See merge request espressif/esp-idf!6248
2019-10-19 15:01:48 +08:00
Ajita Chavan
622842a983 flash_ops: fix spi_flash_read with source buffer not from internal memory and size < 16
Closes https://github.com/espressif/esp-idf/issues/4010
2019-10-19 15:01:46 +08:00
Jiang Jiang Jian
2bcb02795e Merge branch 'Bugfix/IPV6_multicast_adress_error' into 'release/v3.3'
fix ipv6 bug that input the wrong broadcast address to return OK

See merge request espressif/esp-idf!6205
2019-10-18 18:37:25 +08:00
Ivan Grokhotkov
fd22441494 drivers/can: fix skipped function calls when assertions disabled
When CONFIG_FREERTOS_ASSERT_DISABLE is set, the function calls wrapped
inside the assertion macros would be removed from the code.

Closes https://github.com/espressif/esp-idf/issues/4143
2019-10-18 11:27:27 +02:00
Kedar Sovani
8f048ffddc Remove check for would_block in mbedtls
Basically, in the portability layer, it is checked if the socket is
NON-block, and if not, then even the EAGAIN and EWOULDBLOCK errors are
diverted to a RECV error. This causes a problem for sockets with
receive timeouts set. When such a timeout is set, the condition for
NON_BLOCK isn't met and hence a hard error is returned.

Searching for EAGAIN and EWOULDBLOCK in lwip returns only 3 results
(accept, recvfrom, close) and all of them look to be genuine cases for
EWOULDBLOCK. So removing this check to make receive timeout with TLS
work.
2019-10-18 14:21:35 +05:30
Jiang Jiang Jian
3e3ce3da81 Merge branch 'bugfix/backport_some_wifi_fixes_1009_v3.3' into 'release/v3.3'
esp32: fix some WiFi bugs 1009 (backport v3.3)

See merge request espressif/esp-idf!6298
2019-10-18 14:25:13 +08:00
Angus Gratton
0a0f2caa1d Merge branch 'bugfix/reset_periph_modules_v3.3' into 'release/v3.3'
driver: Add a reset before enabling if a module is off (v3.3)

See merge request espressif/esp-idf!6016
2019-10-18 13:35:09 +08:00
Angus Gratton
2441858835 Merge branch 'feature/nimble_backport_idf-v3.3' into 'release/v3.3'
NimBLE: Port NimBLE stack to IDF Release v3.3 (Backport v3.3)

See merge request espressif/esp-idf!6179
2019-10-18 13:23:25 +08:00
Prasad Alatkar
3545b58986 NimBLE: Port NimBLE stack to IDF Release v3.3 (Backport v3.3)
Includes all the latest NimBLE stack changes from idf-v4.0 with few idf-v3.3
specific modifications.
- Addition of nimble component as submodule (`nimble-1.1.0-idf-v3.3`), contains
  IDF v3.3 specific minor changes.
- Example applications are identical to idf-v4.0
- Modification in `bt/Kconfig` to accommodate NimBLE as a BT host.
2019-10-18 13:23:24 +08:00
Angus Gratton
9f10f684d3 Merge branch 'feature/handle_icy_uris_v33' into 'release/v3.3'
Modified http_parser to handle ICY uris (Backport v3.3)

See merge request espressif/esp-idf!6325
2019-10-17 13:58:05 +08:00
Angus Gratton
5d750fb8ce Merge branch 'bugfix/ut_adjtime_v3.3' into 'release/v3.3'
newlib: Fix UT - test time adjustment happens linearly (v3.3)

See merge request espressif/esp-idf!6349
2019-10-16 20:54:06 +08:00
Ivan Grokhotkov
6f8f39a2e5 Merge branch 'docs/update_bootloader_chip_revision_print_v3.3' into 'release/v3.3'
bootloader_support: fix logging prints around chip revision (v3.3)

See merge request espressif/esp-idf!6337
2019-10-16 16:07:35 +08:00
xueyunfei
6c60d3ef29 fix ipv6 bug that input the wrong broadcast address to return OK 2019-10-15 09:40:57 +00:00
Angus Gratton
ecaf8a7a61 Merge branch 'feature/sntp_cb_function_v3.3' into 'release/v3.3'
sntp: Add some modes for time synchronization (backport v3.3)

See merge request espressif/esp-idf!6190
2019-10-15 14:11:43 +08:00
Jiang Jiang Jian
7ef60d2c2b Merge branch 'bugfix/alt_exit_idf_monitor_v3.3' into 'release/v3.3'
idf_monitor: Exit with CTRL+X in menu (v3.3)

See merge request espressif/esp-idf!6291
2019-10-14 21:50:31 +08:00
Jiang Jiang Jian
e524b4b1fd Merge branch 'feature/add_psram_workaround_option_3.3' into 'release/v3.3'
make psram workaround depend on chip revison (v3.3)

See merge request espressif/esp-idf!6303
2019-10-14 21:45:07 +08:00
Kerry Jones
40cce58a52 lwip/sntp: Added extern "C"
so that sntp_set_time_sync_notification_cb can be used from c++

Signed-off-by: Konstantin Kondrashov <konstantin@espressif.com>

Merges: https://github.com/espressif/esp-idf/pull/3700
2019-10-14 07:09:28 +00:00
Konstantin Kondrashov
c50d44e66e sntp/lwip: Add SNTP_UPDATE_DELAY option in Kconfig
Closes: https://github.com/espressif/esp-idf/issues/2277
Closes: IDFGH-337
2019-10-14 07:09:28 +00:00
Konstantin Kondrashov
07a3eca372 sntp/lwip: Add some modes for time synchronization
Closes: IDF-236
Closes: https://github.com/espressif/esp-idf/pull/1668
Closes: https://github.com/espressif/esp-idf/pull/4103
2019-10-14 07:09:28 +00:00
Angus Gratton
626684578a Merge branch 'bugfix/kconfig_autoconf_generate_v3.3' into 'release/v3.3'
Kconfig: Load properly auto.conf before writing the results to build/include

See merge request espressif/esp-idf!6315
2019-10-14 14:58:14 +08:00
KonstantinKondrashov
5ba3b8c587 newlib: Fix UT - test time adjustment happens linearly 2019-10-14 14:52:24 +08:00
Angus Gratton
c286416762 Merge branch 'bugfix/read_binary_image_header_via_cache_in_cpu_start_v3.3' into 'release/v3.3'
esp32: cpu_start: read binary image header via cache (backport v3.3)

See merge request espressif/esp-idf!6076
2019-10-14 11:31:19 +08:00
Mahavir Jain
fd1c127d34 Merge branch 'bugfix/set_url_discards_username_password_v3.3' into 'release/v3.3'
fixes : set_url discards username and password (v3.3)

See merge request espressif/esp-idf!6334
2019-10-14 00:52:22 +08:00
Mahavir Jain
b5aa65c136 bootloader_support: fix logging prints around chip revision 2019-10-13 11:58:29 +05:30
ganeshlandge
61486620c7 fixes : set_url discards username and password 2019-10-12 10:50:27 +05:30
liu zhifu
396f477972 esp32: fix some WiFi bugs
Fix following WiFi bugs:
1. Fix the bug that wpa2 enterprise sta can connect open AP
2. Fix TKIP/CCMP PN replay attack detection bug
3. Increase buffer number type from uint8_t to uint16_t to support more than 255 buffers
4. Avoid recalculating PMK if esp_wifi_set_config() is not called
5. Fix the bug that scan done leads to crash because of uint8 overflow
6. Fix 5.5M signal test bug
2019-10-12 10:38:44 +08:00
Konstantin Kondrashov
2165154c04 rmt/driver: Add module reset before enabling 2019-10-11 19:13:44 +08:00
Konstantin Kondrashov
46e918cfa1 pcnt/driver: Add module reset before enabling 2019-10-11 19:13:44 +08:00
Konstantin Kondrashov
051d2fbdd5 sdmmc_host/driver: Add module reset before enabling 2019-10-11 19:13:44 +08:00
Konstantin Kondrashov
41f91d3ef6 i2s/driver: Add module reset before enabling 2019-10-11 19:13:44 +08:00
Konstantin Kondrashov
ffce53449b can/driver: Add module reset before enabling 2019-10-11 19:13:44 +08:00
Konstantin Kondrashov
7314f44b13 uart/driver: Add module reset before enabling
This commit prevents infinite restarts caused due to an interrupt flag
was left uncleared.

Closes: https://github.com/espressif/esp-idf/issues/1981

Closes: IDF-188
2019-10-11 19:13:44 +08:00
Vikram Dattu
4936110591 Modified http_parser to handle ICY uris.
ICY URIs e.g `http://uk1.internet-radio.com/proxy/vombat?mp=/;` need to
be handled differently.

For basic use case, these URIs are similar to HTTP with exception that they reply with `ICY 200` etc in place of `HTTP/1.1 200`.

In http_parser, we now also parse ICY URIs to be able to handle these similar to HTTP.

Signed-off-by: Vikram Dattu <vikram.dattu@espressif.com>
2019-10-11 16:26:42 +05:30
Angus Gratton
af9472bb7a Merge branch 'bugfix/add_kconfig_help_for_eth_gpio0_output_mode' into 'release/v3.3'
ethernet: add kconfig help for GPIO0 output mode

See merge request espressif/esp-idf!6114
2019-10-11 12:57:54 +08:00
Mahavir Jain
d190c53ec8 Merge branch 'power_management/i2s+i2c-v3.3' into 'release/v3.3'
Power management/i2s+i2 (Backport v3.3)

See merge request espressif/esp-idf!6002
2019-10-11 11:30:39 +08:00
Roland Dobai
26c6583bab Kconfig: Load properly auto.conf before writing the results to build/include
Partial revertion of 6cd6423092. The split
directory structure is still removed but auto.conf is properly loaded.
2019-10-10 15:41:14 +02:00
suda-morris
b3720f80c7 make psram workaround depend on chip revison
Since ESP32 revision 3, the PSRAM workaround is not needed.
2019-10-10 11:38:14 +08:00
Angus Gratton
8147d48ec8 Merge branch 'feature/add_chip_revision_to_image_header_v3.3' into 'release/v3.3'
Add chip revision into image header (v3.3)

See merge request espressif/esp-idf!6128
2019-10-10 11:24:00 +08:00
Angus Gratton
8466b8d6d3 Merge branch 'bugfix/event_minor_leak_v3.3' into 'release/v3.3'
esp_event: fix minor memory leak when overwriting already registered handler (v3.3)

See merge request espressif/esp-idf!5132
2019-10-10 11:05:41 +08:00
Angus Gratton
6e47143dc5 Merge branch 'bugfix/malloc_warnings_event_loop_3.3' into 'release/v3.3'
esp_event: fix possible malloc free issues found by static analyzer (Backport 3.3)

See merge request espressif/esp-idf!5884
2019-10-10 11:04:00 +08:00
Angus Gratton
10c882764e Merge branch 'bugfix/gnu_make_windows_paths_v3.3' into 'release/v3.3'
build: In GNU Make, use "cygpath -m" to avoid backslashes (v3.3)

See merge request espressif/esp-idf!6158
2019-10-10 07:26:42 +08:00
aleks
4559434d5a freemodbus: fix incorrectly set coils read event
incorrect set of the MB_EVENT_COILS_WR event is changed while read coils in mbcontroller.c file
added read/write handling for appropriate registers in freemodbus.c example file

Closes https://github.com/espressif/esp-idf/issues/3289
2019-10-09 17:49:00 +02:00
Jitin George
25f837a148 esp-tls: Add support to add CN from config and validate PEM buffers 2019-10-09 14:02:48 +00:00
Jitin George
53e295a616 example/simple_ota_example: Fix python formatting and KConfig 2019-10-09 14:02:48 +00:00
Jitin George
156ffa412e example/simple_ota_example: Add support for skipping OTA server certificate CN field 2019-10-09 14:02:48 +00:00
Jitin George
7726102bfb esp_http_client: Add support to disable validation of certificate's CN field 2019-10-09 14:02:48 +00:00
Jitin George
8c74a4a989 tcp_transport: Add API to allow skipping of certificate CN validation 2019-10-09 14:02:48 +00:00
Jitin George
48bd2152d0 example/simple_ota_example: Add example test 2019-10-09 14:02:48 +00:00
Gregory Eslinger
7db01c954e esp_https_ota: Removed unnecessary free()
Closes https://github.com/espressif/esp-idf/issues/3504

Merges https://github.com/espressif/esp-idf/pull/3513

Signed-off-by: Jitin George <jitin@espressif.com>
2019-10-09 14:02:48 +00:00
Jitin George
d90868b42e examples/system/ota/advanced_https_ota: Add example for newly introduced APIs in esp_https_ota component 2019-10-09 14:02:48 +00:00
Jitin George
7d60a78b31 esp_https_ota: Add support for URL redirection, basic auth and more control with new APIs
Bugfixes:
- Fix http url redirection issue
- Fix basic/digest auth issue with http url

Features:
- Add support for adding custom http header
- Add support for reading firmware image header
- Add support for monitoring upgrade status
  - This requires breaking down esp_https_ota API such that it allows finer application level control
  - For simpler use-cases previous API is still supported

Closes https://github.com/espressif/esp-idf/issues/3218
Closes https://github.com/espressif/esp-idf/issues/2921
2019-10-09 14:02:48 +00:00
Jitin George
23a8cbb247 esp_http_client: Add API for adding authorization info
There was existing support for adding authorization info in esp_http_client
but it was functional only while using `esp_http_client_perform` API. This commit just moves
existing authorization addition logic into publicly exposed API.
2019-10-09 14:02:48 +00:00
Sachin Parekh
f3fd849da1 PM: I2S and I2C added in the Power Management docs
Signed-off-by: Sachin Parekh <sachin.parekh@espressif.com>
2019-10-09 11:37:33 +00:00
Sachin Parekh
7a2bd81870 I2S: Enable Power Management locks
Acquires PM_APB_FREQ_MAX lock when carrying any transaction on I2S if
Power Management Framework is enabled.

Signed-off-by: Sachin Parekh <sachin.parekh@espressif.com>
2019-10-09 11:37:33 +00:00
Sachin Parekh
2b6f7697b9 I2C: Enable Power Management locks
Acquires PM_APB_FREQ_MAX lock when carrying any transaction on I2C if
Power Management Framework is enabled.

Signed-off-by: Sachin Parekh <sachin.parekh@espressif.com>
2019-10-09 11:37:33 +00:00
Per-Olov Jernberg
610b5579a7 idf_monitor: Exit with CTRL+X in menu
Currently, the only way of exiting the idf_monitor program is to hit the CTRL+] button, if your keyboard doesn't have that key unless you hit another modifier key, it's not super trivial to exit.

This change adds the option to exit with CTRL+T (for menu) then hitting X (or CTRL+X) for exiting.

Closes https://github.com/espressif/esp-idf/pull/4167
Closes https://github.com/espressif/esp-idf/issues/4129
2019-10-09 10:44:54 +02:00
Jiang Jiang Jian
15a9d4f4d3 Merge branch 'bugfix/fix_several_wifi_bugs_0930_v3.3' into 'release/v3.3'
fix several wifi bugs 0930 (backport v3.3)

See merge request espressif/esp-idf!6233
2019-10-09 16:16:13 +08:00
Mahavir Jain
65e9af5114 Merge branch 'bugfix/esp_tls_add_header_in_esp_tls_h_v3.3' into 'release/v3.3'
ESP32/esp_tls: include esp_err.h in esp_tls.h (v3.3)

See merge request espressif/esp-idf!6265
2019-10-09 14:29:26 +08:00
chenjianqiang
579cbd8229 esp32: cpu_start: read binary image header via cache
When flash encryption is enabled, reading via cache also decrypts the
data, whereas spi_flash_read does not.
2019-10-09 06:25:26 +00:00
Angus Gratton
2b84f3e6c4 Merge branch 'bugfix/check_for_new_cmakecache_vars_v3.3' into 'release/v3.3'
idf.py: Add check for new cmake cache values (backport v3.3)

See merge request espressif/esp-idf!5931
2019-10-09 13:54:29 +08:00
Angus Gratton
10732770d3 Merge branch 'bugfix/freertos_xTaskNotifyGive_v3.3' into 'release/v3.3'
freertos: remove semicolon in xTaskNotifyGive (v3.3)

See merge request espressif/esp-idf!6270
2019-10-09 13:37:17 +08:00
Angus Gratton
f2c10cb443 Merge branch 'feature/mqtt_improve_recv_3.3' into 'release/v3.3'
MQTT improved receive (backport 3.3)

See merge request espressif/esp-idf!5075
2019-10-08 14:28:52 +08:00
suda-morris
c67b02db52 freertos: remove semicolon in xTaskNotifyGive 2019-10-08 12:39:07 +08:00
suda-morris
dc4c16f475 ethernet: add kconfig help for GPIO0 output mode
1. add kconfig help for GPIO0 output mode
2. fix a bug when select gpio0 output mode and initialize psram
3. make default config to official development board
4. fix wrong LAN8720 register index
2019-10-08 02:41:40 +00:00
David Cermak
3f2bf11751 esp_event: fix possible malloc free issues found by static analyzer
(v3.3)

Backport of bd537083d9
2019-10-07 19:19:23 +00:00
David Cermak
b1f264be69 esp_event: fix minor memory leak when overwriting alredy registered handler 2019-10-07 19:15:59 +00:00
David Cermak
d14f2c5fca esp_event: extend register/unregister test case to cover overwriting existing handler works as expected 2019-10-07 19:15:59 +00:00
David Cermak
35898c704f tcp_transport: modified ws_read to read payload directly to the read buffer and separately from header bytes
Previous version read all data to the buffer including header which reduced maximum payload read. This version uses a local array to receive header and reads payload bytes to the buffer

cherry-picked from db121a56e1
2019-10-07 19:11:30 +00:00
Aditya Patwardhan
3564d6728c ESP32/esp-tls: include esp_err.h in esp_tls.h
Closes https://github.com/espressif/esp-idf/issues/4100
2019-10-07 17:48:05 +05:30
KonstantinKondrashov
c5b1b57b09 esp32: Fix UT - Check pre-read workaround DPORT and Hi-interrupt 2019-09-30 19:04:38 +08:00
zhangyanjiao
fbd38ad19a modify WIFI_CONN_0101 case for wrong authmode of AP 2019-09-30 12:03:58 +08:00
zhangyanjiao
2d5ee438fa wifi:
1.Fix the bug that WiFi stop leads to task watchdog(526c6956)
2.Fix the WiFi init sequence bug
3.Fix smartconfig ipc crash
4.Put g_promis_buf to IRAM
5.esp_wifi_set_channel should return error when sniffer is not enabled
6.fix the bug when set WEP authmode or wrong authmode, there is no error return
7.fix the bug that STA parse authmode wrong when AP sets WPA_WPA2_PSK mode
8.fix the bug that wrong error code and wrong event when there is an auto AP in multi-ssid case
2019-09-30 12:02:46 +08:00
Jiang Jiang Jian
46b12a560a Merge branch 'bugfix/btdm_backports_v3.3_0903' into 'release/v3.3'
Bugfix/btdm backports v3.3 0903

See merge request espressif/esp-idf!5983
2019-09-29 16:19:22 +08:00
Jiang Jiang Jian
f19bc120f1 Merge branch 'feature/bluedroid_min_encr_key_size_backport_v3.3' into 'release/v3.3'
BT/Bluedroid : Add support to set min encryption key requirement (Backport v3.3)

See merge request espressif/esp-idf!6189
2019-09-29 16:06:28 +08:00
Prasad Alatkar
9c87165bc8 BT/Bluedroid : Add support to set min encryption key requirement (Backport v3.3)
- Backport(v3.3) of IDF MR!6122
- Modifies `smp_utils.c` to add check on encryption key size received from
  peer.
- Modifies `esp_ble_gap_set_security_param` API to add minimum encryption key
  size requirement.
2019-09-29 16:06:27 +08:00
suda-morris
6514820311 bootloader: shrink bin size
1. write a bootloader version of "getting chip revision" function.
2. reduce wordy log.
2019-09-29 11:27:17 +08:00
suda-morris
0af56e2815 Add chip revision into image header
Check chip id and chip revision before boot app image

Closes https://github.com/espressif/esp-idf/issues/4000
2019-09-27 10:24:39 +08:00
Jiang Jiang Jian
a06b88d7f6 Merge branch 'bugfix/backport_some_wifi_bugs_201907_v3.3' into 'release/v3.3'
Backport some wifi bugs 201907 v3.3 (backport v3.3)

See merge request espressif/esp-idf!5526
2019-09-25 19:21:17 +08:00
Jiang Jiang Jian
5e292d50ad Merge branch 'fix/add_parentheses_to_spi_swap_data_tx_3.3' into 'release/v3.3'
spi: Put argument of macro SPI_SWAP_DATA_TX/RX in parentheses (backport v3.3)

See merge request espressif/esp-idf!6108
2019-09-25 16:21:37 +08:00
Jiang Jiang Jian
321ecc94d3 Merge branch 'bugfix/btdm_a2dp_src_pkt_overflow_v3.3' into 'release/v3.3'
component/bt: fix some performance issues in A2DP source data flow control

See merge request espressif/esp-idf!5986
2019-09-25 11:14:25 +08:00
Jiang Jiang Jian
f0f30f9d0c Merge branch 'test/fix_mesh_test_case_3.3' into 'release/v3.3'
test: fix test case MESH_EST_2403 (backport 3.3)

See merge request espressif/esp-idf!5908
2019-09-23 21:41:22 +08:00
Jiang Jiang Jian
9ea662a4ba Merge branch 'bugfix/fix_the_for_smartconfig_send_broadcast_to_phone_v3.3' into 'release/v3.3'
fix the bug that ESP32 sends broadcast to phone after smartconfig is done(backport v3.3)

See merge request espressif/esp-idf!6073
2019-09-23 21:40:42 +08:00
baohongde
285925a43b components:bt: backports release/v3.3 0903
Remove xtensa/xruntime.h
Fix sending Lmp_feature_req_ext in a loop
Fix 2 bugs in r_ld_fm_sket_isr
fix data loss and send same pkt twice sometimes
fix adv data error in air sometimes
fix adv start/stop crash sometimes
Fix connect fail with some speakers
clear BT/BLE interruots after controller disable
add sco_data_path to be set in sdkconfig and do not reset the value upon HCI reset command
2019-09-23 18:02:28 +08:00
wangmengyang
9e51598ee7 component/bt: fix some performance issues in A2DP source data flow control
1. modify the limit of frames to send to avoid dropping packet on A2DP source due to TX data queue overflow
2. reduce the A2DP source data queue size in order to achieve faster control respnonse
2019-09-20 11:52:46 +00:00
Angus Gratton
5e321badd5 Merge branch 'bugfix/bootloader_factory_reset_with_wake_up_from_deep_sleep_v3.3' into 'release/v3.3'
bootloader: Blocking the Factory reset during wake up from deep sleep (v3.3)

See merge request espressif/esp-idf!6021
2019-09-20 19:22:45 +08:00
chenyudong
e943181f72 test: move wifi library check to esp32-wifi-lib ci 2019-09-20 17:50:23 +08:00
xiehang
2dc98f3be8 WiFi: Modify the wifi_country struct in VNC to keep it consistent with IDF.
1. Modfy wifi_country struct
2. Add md5 check esp_wifi_types.h
3. Add md5 check esp_wifi.h
2019-09-20 17:50:19 +08:00
liu zhifu
3badf6ebd9 mesh: fix the bug that esp_mesh_stop() doesn't return 2019-09-20 17:49:49 +08:00
liu zhifu
9a1b11c813 esp32: fix wifi stop bug
Fix the bug that WiFi stop causes esp_wifi_internal_reg_rxcb() fails.
2019-09-20 17:49:49 +08:00
liu zhifu
b933d851bf esp32: fix WPS/WPA2-Enterprise memory leak
Fix WPS and WPA2-Enterprise memory leak bug.
2019-09-20 17:49:49 +08:00
liu zhifu
204b58a34c esp32: fix smartconfig crash when no AP is found
Fix the bug that smartconfig crashes when no AP is found during smartconfig scan.
2019-09-20 17:49:49 +08:00
Angus Gratton
88c9506469 Merge branch 'bugfix/newlib_time_test_v3.3' into 'release/v3.3'
newlib: Fix UT - test time adjustment happens linearly (v3.3)

See merge request espressif/esp-idf!6117
2019-09-20 07:49:27 +08:00
Angus Gratton
202664bac0 build: In GNU Make, use "cygpath -m" to avoid backslashes
Fixes issues where backslashes in KCONFIG paths are later expanded as shell escape sequences.
2019-09-19 21:36:16 +10:00
Mahavir Jain
0500fa2344 Merge branch 'bugfix/cmake_config_variables_scope' into 'release/v3.3'
CMake: Fix variable scope issue

See merge request espressif/esp-idf!4967
2019-09-19 13:44:16 +08:00
KonstantinKondrashov
fefc65f885 newlib: Fix UT - test time adjustment happens linearly
Obtaining accurate and adjustable time occurs closer to each other.
2019-09-17 14:16:58 +08:00
Martin Thierer
d7e257d8ba spi: Put argument of macro SPI_SWAP_DATA_TX/RX in parentheses
Close https://github.com/espressif/esp-idf/pull/3996
2019-09-16 17:34:14 +08:00
KonstantinKondrashov
ca3df7de7f app_update: Fix UTs for FACTORY_RESET and APP_TEST 2019-09-14 09:52:58 +00:00
KonstantinKondrashov
8849d6acfa bootloader: Factory reset not for deep sleep
Closes: https://github.com/espressif/esp-idf/issues/3800

Closes: IDFGH-1536
2019-09-14 09:52:58 +00:00
Angus Gratton
e8e5410cef Merge branch 'bugfix/idf_py_fixes_v3.3' into 'release/v3.3'
idf.py fixes from GitHub (v3.3)

See merge request espressif/esp-idf!6001
2019-09-13 14:52:50 +08:00
Angus Gratton
cc68a512d2 Merge branch 'bugfix/use_local_kconfiglib_v3.3' into 'release/v3.3'
Use kconfiglib from $IDF_PATH/tools/kconfig_new (v3.3)

See merge request espressif/esp-idf!6080
2019-09-13 14:47:47 +08:00
Renz Christian Bagaporo
3a291da164 cmake: fix variable scope issues 2019-09-13 01:32:50 +00:00
Mahavir Jain
1173b4f51a Merge branch 'bugfix/http_header_parser_resolution_v3.3' into 'release/v3.3'
(backport v3.3) esp_http_server : Bugfix in parsing of empty header values

See merge request espressif/esp-idf!6038
2019-09-12 18:46:22 +08:00
chenyudong
f6d0a913de test: fix test case MESH_EST_2403 2019-09-12 02:50:17 +00:00
Jiang Jiang Jian
149171f119 Merge branch 'bugfix/lwip_prefer_allocate_memory_in_psram_v3.3' into 'release/v3.3'
l: Try to allocate some L memories in SPIRAM first. If failed, try to allocate in internal RAM then.(Backport v3.3)

See merge request espressif/esp-idf!5671
2019-09-12 10:39:14 +08:00
Roland Dobai
94091761c4 Use kconfiglib from $IDF_PATH/tools/kconfig_new 2019-09-11 14:39:01 +02:00
zhangyanjiao
262f3774e8 fix the bug that ESP32 sends broadcast to phone after smartconfig is done 2019-09-11 11:45:08 +08:00
Angus Gratton
30f93365b5 Merge branch 'bugfix/kconfig_no_split_headers_v3.3' into 'release/v3.3'
kconfig: Don't create "split" directory structures under build/include/config (v3.3)

See merge request espressif/esp-idf!6000
2019-09-11 07:54:09 +08:00
Xia Xiaotian
e0748cdaf2 lwip: Try to allocate some LWIP memories in SPIRAM first. If failed, try to allocate in internal RAM then. 2019-09-10 14:26:50 +08:00
Angus Gratton
6cd6423092 kconfig: Don't create "split" directory structures under build/include/config
Reported in https://github.com/espressif/esp-idf/issues/3299

If a config item contains a reserved filename in Windows like _CON_ then an invalid
directory is created.

We don't rely on this feature all, so disable it.
2019-09-10 05:52:29 +00:00
Chinmay
38b1c93764 esp_http_server : Bugfix in parsing of empty header values
This MR is intended to fix incorrect parsing of HTTP requests when empty header values are present.

The issue is was due to asymmetric behavior of `http_parser` library, which in case of:

    non-empty header values : invokes callbacks with the pointer to the start of a value
    empty header values : invokes callbacks with pointer to the start of next header or section

Since HTTP server relies on this pointer (along with length of the value) to locate the end of a value, and replace the line terminators (CRLFs) with null characters, the second case needed to be handled correctly.

Closes IDFGH-1539

Closes https://github.com/espressif/esp-idf/issues/3803
2019-09-09 08:21:13 +00:00
Jiang Jiang Jian
9f3f7009c0 Merge branch 'bugfix_kconfig_deps_missing_v3.3' into 'release/v3.3'
kconfig: Add -MP option so .d files include empty targets (v3.3)

See merge request espressif/esp-idf!5847
2019-09-08 23:17:29 +08:00
Jiang Jiang Jian
69d8fab619 Merge branch 'update/cjson_v1_7_12_v3.3' into 'release/v3.3'
Update cJSON to v1.7.12 (v3.3)

See merge request espressif/esp-idf!5851
2019-09-08 23:16:25 +08:00
Jiang Jiang Jian
cc50d88a89 Merge branch 'test/use_correct_config_for_nvs_compatible_case_v3.3' into 'release/v3.3'
test: fix nvs compatible case error (backport v3.3)

See merge request espressif/esp-idf!5894
2019-09-08 23:14:29 +08:00
Jiang Jiang Jian
4aea2dce15 Merge branch 'fix/sdio_slave_reset_infloop_leak_3.3' into 'release/v3.3'
sdio_slave: fix the send_flush infinite loop issue (backport v3.3)

See merge request espressif/esp-idf!5836
2019-09-08 23:13:41 +08:00
Jiang Jiang Jian
54c7379060 Merge branch 'feature/move_gettimeofday_in_clock_gettime_v3.3' into 'release/v3.3'
newlib: Move _gettimeofday_r call in clock_gettime (v3.3)

See merge request espressif/esp-idf!5717
2019-09-08 23:13:13 +08:00
Jiang Jiang Jian
b12c2646fa Merge branch 'bugfix/fix_wifi_stack_can_freeze_v3.3' into 'release/v3.3'
esp_wifi: ESP32_WIFI_RX_BA_WIN should be less than ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM (v3.3)

See merge request espressif/esp-idf!5617
2019-09-08 23:11:57 +08:00
Jiang Jiang Jian
39ac9cb44b Merge branch 'bugfix/btdm_fix_hci_enhance_conn_complete_evt_unpack_error_v3.3' into 'release/v3.3'
component/bt: fix unpack hci enhance connection complete event error(backport v3.3)

See merge request espressif/esp-idf!5281
2019-09-08 23:11:18 +08:00
Jiang Jiang Jian
64fbce50c2 Merge branch 'bugfix/pm_isr_exit_lock_v3.3' into 'release/v3.3'
pm: prevent interrupt nesting during esp_pm_impl_isr_hook (backport v3.3)

See merge request espressif/esp-idf!4970
2019-09-08 23:10:02 +08:00
Jiang Jiang Jian
d1e8b4473d Merge branch 'test/detect_exception_in_idf_dut_v3.3' into 'release/v3.3'
tiny-test-fw: support detect exception in IDFDUT (backport v3.3)

See merge request espressif/esp-idf!4542
2019-09-08 23:09:48 +08:00
Jiang Jiang Jian
38e2d3bec6 Merge branch 'bugfix/btdm_mem_leak_v3.3' into 'release/v3.3'
components/bt: Fix memory leak about rfcomm

See merge request espressif/esp-idf!5622
2019-09-08 23:09:24 +08:00
Angus Gratton
2192de7111 idf.py: Fix encoding issue with serial port names on Windows
Closes https://github.com/espressif/esp-idf/issues/3334
2019-09-05 15:09:38 +10:00
Angus Gratton
c7f4fb56d8 idf.py: Use mingw32-make for version check
Closes https://github.com/espressif/esp-idf/issues/3333
2019-09-05 15:09:38 +10:00
Angus Gratton
3201333f06 Merge branch 'bugfix/flash_encryption_disable_plaintext_v3.3' into 'release/v3.3'
flash encryption: Add config option to disable any plaintext reflashes (3.3)

See merge request espressif/esp-idf!5280
2019-09-05 08:00:39 +08:00
Angus Gratton
85a89db863 Merge branch 'bugfix/fix_i2s_channels_swapped_issue_v3.3' into 'release/v3.3'
Bugfix(i2s): fixed i2s left/right channels swapped issue for release/v3.3.

See merge request espressif/esp-idf!5899
2019-09-03 13:36:54 +08:00
Angus Gratton
21a8a9a170 Merge branch 'bugfix/dis_interrupts_up_to_6_level_for_dport_wa_v3.3' into 'release/v3.3'
esp32: Dis interrupts up to 5 lvl for DPORT (v3.3)

See merge request espressif/esp-idf!5713
2019-09-03 13:34:54 +08:00
wangmengyang
0ce9d2662d add missing source files to CMakeLists for HFP 2019-09-03 11:51:16 +08:00
Angus Gratton
d4e13c011e Merge branch 'bugfix/httpd_sess_close_v3.3' into 'release/v3.3'
httpd_sess_close: Check for session validity before closing (v3.3)

See merge request espressif/esp-idf!5743
2019-09-03 09:57:37 +08:00
Angus Gratton
f380d72825 Merge branch 'bugfix/add_flash_config_in_app_startup_v3.3' into 'release/v3.3'
bugfix(flash): add flash config in app startup (backport v3.3)

See merge request espressif/esp-idf!5928
2019-09-02 08:50:38 +08:00
Jiang Jiang Jian
6ccb4cf5b7 Merge branch 'bugfix/btdm_security_vulnerability_on_encryption_key_size_v3.3' into 'release/v3.3'
components/bt: set the minimum encryption key size to be 7 octects for BR/EDR link

See merge request espressif/esp-idf!5872
2019-08-30 19:09:02 +08:00
Angus Gratton
f8e24754d1 Merge branch 'bugfix/test_esp_efuse_table_on_host_v3.3' into 'release/v3.3'
CI: Fix path in the Efuse table test (v3.3)

See merge request espressif/esp-idf!5954
2019-08-30 16:28:07 +08:00
Mahavir Jain
86975b7e8f Merge branch 'bugfix/pr_3250_v3.3' into 'release/v3.3'
(backport v3.3) Fix: Lost username when setting new URL with a path.

See merge request espressif/esp-idf!5665
2019-08-29 18:40:15 +08:00
Roland Dobai
c2bb7d7cd6 Fix path in the Efuse table test 2019-08-29 09:53:17 +02:00
redchenjs
3451f3526f Bugfix(i2s): fixed i2s left/right channels swapped issue for release/v3.3.
The right channel data is in the high position, so the I2S_TX_MSB_RIGHT & I2S_RX_MSB_RIGHT bits should be set.
2019-08-28 19:24:17 +08:00
Roland Dobai
cc3ba7186f esp_http_client: fix CI issues & return value 2019-08-28 16:46:04 +05:30
Nguyễn Hồng Quân
7d28c02fd5 Fix: Lost username when setting new URL with a path.
Closes https://github.com/espressif/esp-idf/pull/3250
2019-08-28 14:54:59 +05:30
Piyush Shah
1aa2f36dec httpd_sess_close: Check for session validity before closing
If httpd_sess_trigger_close() gets called twice for the same socket,
the first httpd_sess_close() cb closes the correct socket, but the second
invocation closes the wrong socket which was just accepted and added to
the socket db. Checking for the lru counter will help identify this as the
counter is set only for requests actually served.
2019-08-28 09:03:55 +00:00
wangmengyang
3becdd7850 components/bt: set the minimum encryption key size to be 7 octects for BR/EDR link for preventing KNOB attack
This patch is to address the CVE-2019-9506 vulnerability.
2019-08-28 08:13:30 +00:00
Sergei Silnov
cfd7a5b84e idf.py: Add check for new cmake cache values 2019-08-27 18:37:25 +02:00
chenjianqiang
cf2062f1d7 bugfix(flash): add flash config in app startup
We fixed some flash bugs in bootloader, but for the users used the old
vrsion bootloader, they can not fix these bugs via OTA, the solution is
add these updates in app startup.

These updates include:
1. SPI flash gpio matrix and drive strength configuration
2. SPI flash clock configuration
3. SPI flash read dummy configuration
4. SPI flash cs timing configuration
5. Update flash id of g_rom_flashchip
2019-08-27 21:04:36 +08:00
He Yin Ling
a742bad8f3 test: fix nvs compatible case error:
nvs compatible test case uses new test env and app. update test config
file.
2019-08-27 02:49:44 +00:00
He Yin Ling
ef11260310 Merge branch 'bugfix/reduce_ci_config_file_size_v3.3' into 'release/v3.3'
CI: use parallel attribute in CI config file

See merge request espressif/esp-idf!5895
2019-08-27 10:47:42 +08:00
He Yin Ling
7b39d5e5c5 Apply suggestion to tools/ci/build_examples_cmake.sh 2019-08-26 11:00:46 +08:00
He Yin Ling
d5b0b36758 Apply suggestion to tools/ci/build_examples.sh 2019-08-26 11:00:33 +08:00
He Yin Ling
0a609be968 CI: use parallel attribute in CI config file 2019-08-26 10:46:39 +08:00
Konstantin Kondrashov
8fa409a0b5 esp32: Add UTs for DPORT and Hi-interrupt 2019-08-21 09:48:16 +00:00
Konstantin Kondrashov
2e9904556f esp32: Dis interrupts up to 5 lvl for DPORT
Disable interrupts for both DPORT workarounds up to 5 lvl.

Closes: https://esp32.com/viewtopic.php?f=2&t=10981&sid=d125cec233070ed4d2c5410bf5d3d74a
Closes: IDF-728
2019-08-21 09:48:16 +00:00
Angus Gratton
8e32eb78a4 Update cJSON to v1.7.12
Fixes potential DoS in cJSON_Minify, see https://github.com/DaveGamble/cJSON/issues/354
2019-08-21 18:55:32 +10:00
Angus Gratton
a3adc6c202 kconfig: Add -MP option so .d files include empty targets
Prevents make-level errors when switching IDF versions, as headers may be removed.

Similar to some mentioned here:
https://github.com/espressif/esp-idf/issues/712
2019-08-21 18:37:42 +10:00
Jiang Jiang Jian
148a269808 Merge branch 'bugfix/improve_spi_timing_for_flash_v3.3' into 'release/v3.3'
bugfix(flash): improve spi cs timing settings for flash (backport v3.3)

See merge request espressif/esp-idf!5514
2019-08-20 16:33:57 +08:00
Michael (XIAO Xufeng)
7b3bedbc10 sdio_slave: fix the send_flush infinite loop issue
Also add some helper functions.
2019-08-20 16:25:58 +08:00
Angus Gratton
5b11428f00 Merge branch 'bugfix/fix_flash_read_error_in_dio_mode_v3.3' into 'release/v3.3'
bugfix(flash): add spi dio address bitlen configure in psram init (backport v3.3)

See merge request espressif/esp-idf!5788
2019-08-19 13:03:54 +08:00
chenjianqiang
4cd7fd89f5 bugfix(flash): add spi dio address bitlen configure in psram init 2019-08-16 07:38:54 +00:00
Angus Gratton
ceb56a7a72 Merge branch 'feature/dport_eco_revision2_v3.3' into 'release/v3.3'
make dport workaround depend on chip revision (v3.3)

See merge request espressif/esp-idf!5766
2019-08-16 13:14:49 +08:00
Angus Gratton
ebfa74310c Merge branch 'bugfix/link_test_components_to_executable_directly' into 'release/v3.3'
cmake: link test components to executable directly

See merge request espressif/esp-idf!5739
2019-08-15 14:59:56 +08:00
suda-morris
b482ba117d efuse: update the scheme of getting chip revision 2019-08-13 15:49:01 +08:00
Angus Gratton
07735424a2 Merge branch 'bugfix/xTaskIncrementTick_v3.3' into 'release/v3.3'
freertos: Fix xTaskIncrementTick for unwind the Tick for CPU1 (v3.3)

See merge request espressif/esp-idf!5034
2019-08-13 13:42:26 +08:00
Angus Gratton
f2f5a237c0 Merge branch 'bugfix/gpio_intr_enable_bug_v3.3' into 'release/v3.3'
bugfix(GPIO):  Fixed GPIO interrupt bug for v3.3

See merge request espressif/esp-idf!5650
2019-08-12 13:00:15 +08:00
Angus Gratton
3be1c70d46 Merge branch 'bugfix/cmake_extra_component_dirs_v3.3' into 'release/v3.3'
CI: additional CMake build system tests wrt EXTRA_COMPONENT_DIRS (v3.3)

See merge request espressif/esp-idf!5109
2019-08-12 12:44:19 +08:00
Angus Gratton
beb34b5390 Merge branch 'bugfix/hwcrypt_fault_inj_v3.3' into 'release/v3.3'
AES & SHA fault injection checks (backport v3.3)

See merge request espressif/esp-idf!5710
2019-08-11 14:04:36 +08:00
Angus Gratton
3991084777 sha: Add fault injection checks reading hash digest state
Vulnerability reported by LimitedResults under Espressif Bug Bounty Program.
2019-08-11 13:18:23 +10:00
Angus Gratton
088439c634 aes: Add fault injection checks when writing key to hardware
Vulnerability reported by LimitedResults under Espressif Bug Bounty Program.
2019-08-11 13:18:23 +10:00
Renz Christian Bagaporo
dbd05d8986 cmake: link test components to executable directly 2019-08-09 15:18:06 +08:00
raldone01
02068cf328 newlib: Move _gettimeofday_r call in clock_gettime
Signed-off-by: KonstantinKondrashov <konstantin@espressif.com>
Merges: https://github.com/espressif/esp-idf/pull/3789
2019-08-07 20:37:11 +08:00
Angus Gratton
7c5dd19c83 hwcrypto: Add AES fault injection check
Hardware AES-CBC performance changes:

Release config 11.0MB/sec -> 10.8MB/sec
Debug config 9.4MB/sec -> 9.8MB/sec

(Unrolling the loop to optimize the check improves
performance at -Og, even with the fault check.)
2019-08-07 16:04:59 +10:00
Angus Gratton
a6fb161309 Merge branch 'bugfix/sec_boot_ota_fail_v33' into 'release/v3.3'
Bugfix: ota fails with secure boot on for image size greater than 3.2MB (backport v3.3)

See merge request espressif/esp-idf!5581
2019-08-06 14:51:06 +08:00
kooho
0929dbbc9b bugfix(GPIO): Fixed the bug that GPIO enables interrupts on one core,
but registers interrupt service routines on another core for release/v3.3
2019-08-06 03:20:11 +00:00
Vikram Dattu
4c27f9ced8 Add mmu pages available check in non-secure image hash check path.
Made MMU pages available check in `esp_image_format.c`
This now makes it possible to map and process bootoader image as well in chunks when image doesn't fit completely into available free pages.

Signed-off-by: Vikram Dattu <vikram.dattu@espressif.com>
2019-08-05 05:34:11 +00:00
Vikram Dattu
b800dfe6f1 Changed log level for spi_master
There are lot of prints of `Allocate TX buffer for DMA`
Changed these from `ESP_LOGI` to `ESP_LOGD`

Signed-off-by: Vikram Dattu <vikram.dattu@espressif.com>
2019-08-05 05:34:11 +00:00
Vikram Dattu
caa1ef0cb6 Bugfix: ota fails with secure boot on for image size greater than 3.2MB
When an OTA image size is larger than 50 MMU pages (approx. 3.2 MB), secure_boot_generate fails while trying to map it into memory:

https://github.com/espressif/esp-idf/blob/master/components/bootloader_support/src/esp32/secure_boot.c#L72

Instead of trying to map the whole image, secure boot code should split the image into chunks and map them one by one, like it is done in esp_image_format.c:
https://github.com/espressif/esp-idf/blob/master/components/bootloader_support/src/esp_image_format.c#L371

Signed-off-by: Vikram Dattu <vikram.dattu@espressif.com>
2019-08-05 05:34:11 +00:00
Jiang Jiang Jian
97e7c14f4e Merge branch 'bugfix/btdm_sleep_twice_v3.3' into 'release/v3.3'
bugfix btdm sleep twice after wakeup request

See merge request espressif/esp-idf!5638
2019-08-04 15:51:36 +08:00
Angus Gratton
c157c696e7 Merge branch 'doc/resolve-pdf-building-issues_v3.3' into 'release/v3.3'
(backport v3.3) Replace gif images on EN and zh_CN index pages with identical png images for...

See merge request espressif/esp-idf!5655
2019-08-01 14:09:57 +08:00
Angus Gratton
d900cb5a35 Merge branch 'bugfix/libsodium_test_timeouts_v3.3' into 'release/v3.3'
test: Set timeout of libsodium ed25519_convert test to 60s (v3.3)

See merge request espressif/esp-idf!5554
2019-07-31 02:18:50 +08:00
Angus Gratton
e8a4e70c42 flash encryption: Add config option to disable any plaintext reflashes
Enabled by default when Secure Boot is on, so Flash Encryption protection
is always available in case of a Secure Boot bypass.
2019-07-30 08:35:30 +00:00
Kirill Chalov
4cb729283d Replace gif images on EN and zh_CN index pages with identical png images for successful building of PDFs on ReadTheDocs. 2019-07-30 15:36:58 +08:00
Angus Gratton
6a3e160aaf test: Set timeout of libsodium ed25519_convert test to 60s
Test takes 28s-29s to run in some configs, can fail in CI.
2019-07-30 07:19:54 +00:00
Angus Gratton
70ecb7ec94 Merge branch 'bugfix/docs_recover_some_build_time_v3.3' into 'release/v3.3'
docs: Remove building of zipped HTML docs from build process and consequently...

See merge request espressif/esp-idf!5639
2019-07-29 19:16:46 +08:00
krzychb
21e2c417e8 docs: Remove building of zipped HTML docs from build process and consequently from Downloads as many users don't use that. We are still providing PDF documentation for people who prefer viewing docs off-line. Removal of this build step is expected to save almost 10 minutes of build time and resolve issue of build failures because of hitting 40 min build time limit on Read The Docs. 2019-07-28 01:16:47 +02:00
Tian Hao
3ca82d5923 bugfix btdm sleep twice after wakeup request
This problem may cause HCI send command timeout.

When host call VHCI api to do btdm_wakeup_request, then controller
wakeup process will be handled in ISR and controller task context.
As host task priority is lower than controller task and ISR,
it will cause an incorrect behavior that before VHCI take the
rx_flow_on_semaphore, controller sleep again, then VHCI cannot take
the semaphore and has to wait the automatic wakeup.
2019-07-27 18:07:20 +08:00
Angus Gratton
7af04d857f Merge branch 'bugfix/fix_mcpwm_example_memory_bug_v3.3' into 'release/v3.3'
Bugfix(example):  Fixed MCPWM example bug for release/v3.3

See merge request espressif/esp-idf!5544
2019-07-27 17:27:41 +08:00
Mahavir Jain
e070e1886f Merge branch 'bugfix/esp_event_add_missing_include_v3.3' into 'release/v3.3'
esp_event: add missing header include (v3.3)

See merge request espressif/esp-idf!5632
2019-07-26 19:44:32 +08:00
Mahavir Jain
6da2bec1e8 esp_event: add missing header include
Required header was indirectly getting resolved through lwip includes,
apparently does not work if application is not using lwip networking stack.
2019-07-26 16:36:13 +05:30
Mahavir Jain
73345bae44 Merge branch 'bugfix/tcp_transport_http_client' into 'release/v3.3'
Minor bugfixes in esp_http_client and tcp_transport (backport v3.3)

See merge request espressif/esp-idf!5218
2019-07-25 19:43:27 +08:00
baohongde
b9f2531e8c components/bt: Fix memory leak about rfcomm 2019-07-25 16:51:40 +08:00
xiehang
b6e6a4f4b2 esp_wifi: ESP32_WIFI_RX_BA_WIN should be less than ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM 2019-07-25 14:37:20 +08:00
He Yin Ling
9420c5398f test: handle exception by unit test script:
unit test script will detect exception, we don't need to let test fail
when exception happened.
2019-07-23 09:44:28 +00:00
He Yin Ling
31c8be0738 tiny-test-fw: support translate backtrace in IDFDUT 2019-07-23 09:44:28 +00:00
He Yin Ling
cbc438c807 tiny-test-fw: support detect exception in IDFDUT 2019-07-23 09:44:28 +00:00
Jitin George
2d26163019 tcp_transport: Fix case sensitive header comparison
Closes https://github.com/espressif/esp-idf/issues/3106
2019-07-21 07:24:11 +00:00
Jitin George
ff2624f09c esp_http_client: Fix header sent event bug 2019-07-21 07:24:11 +00:00
Angus Gratton
11d141e87d Merge branch 'bugfix/app_update_tests_v3.3' into 'release/v3.3'
app_update: Add [timeout=90] for UTs (v3.3)

See merge request espressif/esp-idf!5564
2019-07-18 18:25:01 +08:00
Jiang Jiang Jian
91f29bef17 Merge branch 'bugfix/fix_the_watchdog_during_WiFi_scan_BLE_scan_v3.3' into 'release/v3.3'
fix the watchdog bug during WiFi scan and BLE scan(v3.3)

See merge request espressif/esp-idf!5506
2019-07-18 10:44:31 +08:00
KonstantinKondrashov
8ed62223cd app_update: Add [timeout=90] 2019-07-17 18:52:39 +08:00
Ivan Grokhotkov
de7a50dca0 Merge branch 'bugfix/i2s_apll_clock_fix_v3.3' into 'release/v3.3'
driver/i2s: fix apll_clock_rate for different sample rates (v3.3)

See merge request espressif/esp-idf!5448
2019-07-17 14:33:59 +08:00
Angus Gratton
a9eac4a124 Merge branch 'bugfix/spi_flash_mmap_stale_data_issue_v3.3' into 'release/v3.3'
spi_flash: fix stale read issue for memory mapped partition (v3.3)

See merge request espressif/esp-idf!5435
2019-07-17 14:26:33 +08:00
Jiang Jiang Jian
3e27184c38 Merge branch 'bugfix/fix_flash_read_error_in_dio_26MHz_mode_v3.3' into 'release/v3.3'
bugfix(flash): fix flash read error in DIO/26MHz mode (backport v3.3)

See merge request espressif/esp-idf!5532
2019-07-16 18:41:57 +08:00
Ramesh
5758b739f1 Fixed the bug that the malloc memory size is smaller than the actual required. 2019-07-16 15:09:23 +08:00
zhangyanjiao
2d7124e319 fix the watchdog bug during WiFi scan and BLE scan 2019-07-16 10:31:19 +08:00
chenjianqiang
232408981d bugfix(flash): improve spi cs timing settings for flash
cs setup time is recomemded to be 1.5T, and cs hold time is recommended to be 2.5T.
(cs_setup = 1, cs_setup_time = 0; cs_hold = 1, cs_hold_time = 1)
2019-07-15 14:45:35 +08:00
chenjianqiang
9821e533db bugfix(flash): fix flash read error in DIO/26MHz mode 2019-07-15 14:26:53 +08:00
Angus Gratton
6d8990f39b Merge branch 'bugfix/cmake_project_vars_not_set_by_redefinition_v3.3' into 'release/v3.3'
cmake: set variables set by project call (backport v3.3)

See merge request espressif/esp-idf!5487
2019-07-12 15:01:32 +08:00
Angus Gratton
83a9a4dc70 Merge branch 'bugfix/windows_detection_on_make_v3.3' into 'release/v3.3'
Windows detection on Makefiles cleanup (backport v3.3)

See merge request espressif/esp-idf!5490
2019-07-12 15:00:30 +08:00
Angus Gratton
630ffde6bb Merge branch 'bugfix/fix_uart_wait_done_bug_v3.3' into 'release/v3.3'
bugfix(UART): fixed two UART issues for release/v3.3

See merge request espressif/esp-idf!5481
2019-07-11 14:56:14 +08:00
Mahavir Jain
6af30250a8 spi_flash: add test case for stale read issue on memory mapped partition 2019-07-11 04:23:51 +00:00
Mahavir Jain
30d2f13358 spi_flash: fix stale read issue for memory mapped partition
On flash program operation (either erase or write), if corresponding address has
cache mapping present then cache is explicitly flushed (for both pro and app cpu)

Closes https://github.com/espressif/esp-idf/issues/2146
2019-07-11 04:23:51 +00:00
Renz Christian Bagaporo
d7569b5862 cmake: refactor finding components 2019-07-10 16:50:23 +08:00
Renz Christian Bagaporo
db9979701a ci: additional Cmake tests for EXTRA_COMPONENT_DIRS
Tests from
https://gitlab.espressif.cn:6688/idf/esp-idf/merge_requests/4253
2019-07-10 16:49:44 +08:00
Angus Gratton
dca5ed2263 Merge branch 'bugfix/supplicant_security_fixes_v3.3' into 'release/v3.3'
wpa_supplicant: Fix sprintf security bugs. (v3.3)

See merge request espressif/esp-idf!5464
2019-07-10 12:31:37 +08:00
Renz Christian Bagaporo
0ef3af367d ldgen,make: simplify os check 2019-07-10 12:04:56 +08:00
V.Dudnik
9afe47425b project_config_mk: fix if condition 2019-07-10 12:04:20 +08:00
Renz Christian Bagaporo
f5d33fa889 cmake: set variables set by project call
ESP-IDF overrides project() definition for user convenience. This
redefinition lacks setting the variables documented at
the project command documentation
https://cmake.org/cmake/help/v3.5/command/project.html in the parent
scope.

This commit sets those variables.

Closes https://github.com/espressif/esp-idf/issues/3611.
2019-07-10 11:51:17 +08:00
Jiang Jiang Jian
29cef5a9cc Merge branch 'bugfix/btdm_can_not_get_informations_of_song_v3.3' into 'release/v3.3'
components/bt: Fix iphone can't get song's informations

See merge request espressif/esp-idf!5472
2019-07-09 15:13:24 +08:00
kooho
40171d7307 bugfix(UART): fixed two UART issues:
1. uart_wait_tx_done works incorrect when sending a byte of data.
2. uart_set_rx_timeout sets an incorrect rx timeout value when ref_tick is enabled
2019-07-09 14:56:26 +08:00
baohongde
e64bae3a0c components/bt: Fix iphone can't get song's informations 2019-07-08 19:40:22 +08:00
Angus Gratton
a71fad46d4 Merge branch 'fix/update_curr_page_state_3.3' into 'release/v3.3'
nvs_util: Set previous page state to FULL before creating new page (v3.3)

See merge request espressif/esp-idf!5327
2019-07-08 15:19:56 +08:00
Angus Gratton
2c9acce0ff Merge branch 'bugfix/prov_examples_strlcpy_backport_v3.3' into 'release/v3.3'
Various bugfixes in Protocomm / Unified Provisioning (backport v3.3)

See merge request espressif/esp-idf!5369
2019-07-08 14:04:49 +08:00
Sagar Bijwe
8e58b31a69 wpa_supplicant: Fix sprintf security bugs.
Revert back to using os_snprintf instead of sprintf.

Closes WIFI-624
2019-07-08 10:39:20 +05:30
Angus Gratton
bf152907a4 Merge branch 'fix/nvs_util_keylen_3.3' into 'release/v3.3'
nvs_util: Add check for keylen in input csv (v3.3)

See merge request espressif/esp-idf!5395
2019-07-08 12:59:05 +08:00
Jiang Jiang Jian
47ca5d53df Merge branch 'feature/config_spi_pins_based_on_efuse_value_v3.3' into 'release/v3.3'
feat(psram): config SPI psram pins based on efuse value (backport v3.3)

See merge request espressif/esp-idf!5240
2019-07-08 11:52:24 +08:00
Anurag Kar
c1fe8ceb83 esp_prov : Minor refactoring in argument dependent logic
Other changes:
* Command line argument name and descriptions updated and formatted
* Some exception messages updated for clarity
* READMEs updated for tool and all provisioning examples
* Minor update in example test scripts due to change in esp_prov.get_transport() API
* Transport_Softap renamed to Transport_HTTP
* Transport_HTTP now forces connect on initialization
2019-07-07 12:45:06 +05:30
Jiang Jiang Jian
db38c37cf7 Merge branch 'mesh/bugfix_0628_v3.3' into 'release/v3.3'
mesh: bugfix (backport 3.3)

See merge request espressif/esp-idf!5438
2019-07-05 22:33:24 +08:00
Anurag Kar
71ce87c79e protocomm_ble : Bugfix for unbound memcpy on prepare write buffer
Closes https://github.com/espressif/esp-idf/issues/3633
2019-07-05 13:20:40 +00:00
Anurag Kar
611c300a92 Protocomm : Minor fixes
List of changes:
* protocomm_httpd : Reset session_id static variable on start and stop
* security1 : Typo in checking failed dynamic allocation
2019-07-05 13:20:40 +00:00
Anurag Kar
b7eb82d191 Provisioning Examples : Bugfix in copying Wi-Fi SSID and Passphrase 2019-07-05 13:20:40 +00:00
Anurag Kar
933674301f Wi-Fi Provisioning : Bugfix in copying SSID and Passphrase
These changes guarantee that the SSID and Passphrase received via protocomm are NULL terminated and size limited to their standard lengths.

List of changes:
* Corrected length of passphrase field in wifi_prov_config_set_data_t structure
* Performing length checks on SSID, passphrase and bssid, when populating wifi_prov_config_set_data_t structure with received credentials
2019-07-05 13:20:40 +00:00
Jiang Jiang Jian
3b2e231ae3 Merge branch 'bugfix/btdm_fix_rxwinsz_assert_in_wifi_ble_coex_v3.3' into 'release/v3.3'
component/bt: fix rxwinsz assert in ble and wifi coex(backport v3.3)

See merge request espressif/esp-idf!5447
2019-07-05 20:28:17 +08:00
Shivani Tipnis
881cd4310c nvs_util: Add check for keylen in input csv 2019-07-05 10:52:17 +00:00
Ajita Chavan
13e6e9f592 i2s: test case for variation in apll clock rate 2019-07-04 18:27:12 +05:30
redchenjs
cfc73a6de7 i2s: fix a bug when calculating i2s apll parameters
Closes https://github.com/espressif/esp-idf/issues/2634
Closes https://github.com/espressif/esp-idf/issues/3380
Fixes https://github.com/espressif/esp-idf/issues/3407
2019-07-04 18:24:37 +05:30
zhiweijian
62e359a4e1 component/bt: fix rxwinsz assert in ble and wifi coex 2019-07-04 20:12:04 +08:00
Angus Gratton
ab4024c84e Merge branch 'bugfix/improve_flash_dio_read_timing_v3.3' into 'release/v3.3'
bugfix(flash): fix flash dio read mode configuration error on SPI0 (backport v3.3)

See merge request espressif/esp-idf!5289
2019-07-04 13:07:07 +08:00
qiyuexia
f4ee20165e mesh: bugfix
1. resend eb which are pending in g_ic.tx_buf due to channel switch.
2. add lock for mgmg/xon/bcast to protect send from user flush.
3. softap: add check if secondary offset is correct when start softap.
4. softap: in inactive timer handler, add check if child bss is removed to avoid removing it again.
5. disable A-MPDU for non-root.
6. fix reusing a freed eb.
7. fix when node becomes root, it does not record assoc value to nvs.
8. discard unnecessary forwarded group packets.
9. fix toDS state is not updated in time.
10. fix s_sta_cnx_times is not cleared when deinit causes root sends ADD annoucement.
11. root: increase beacon timeout time from 6 seconds to 15 seconds to delay initiation of reconnection.
12. add esp_mesh_get_tsf_time to return TSF time.
13. send the whole routing table multi-times.
14. clear candidate settings if not receive candidate beacon within 8 seconds.
2019-07-03 14:35:57 +08:00
Mahavir Jain
e443467f37 Merge branch 'feature/prov_mgr_backport_v3.3' into 'release/v3.3'
Wi-Fi Provisioning Manager (backport v3.3)

See merge request idf/esp-idf!5371
2019-07-02 16:17:23 +08:00
chenjianqiang
a6f990ffb9 bugfix(flash): improve flash dio read timing
When flash work in DIO Mode, in order to ensure the fast read mode of flash
is a fixed value, we merged the mode bits into address part, and the fast
read mode value is 0 (the default value).
2019-07-02 14:25:27 +08:00
chenjianqiang
43561a40d2 bugfix(psram): make sure the psram_io struct is initialized and make unknown psram package version more obvious 2019-07-02 14:15:55 +08:00
chenjianqiang
55f5c2e08d feat(psram): config SPI psram pins based on efuse value 2019-07-02 14:15:55 +08:00
Angus Gratton
e4418f4f92 Merge branch 'feature/upgrade_mbedtls_to_v2.16.1_v3.3' into 'release/v3.3'
mbedtls: upgrade to v2.16.2 release (v3.3)

See merge request idf/esp-idf!5377
2019-07-02 08:42:50 +08:00
Mahavir Jain
968728bf95 Merge branch 'bugfix/httpd_open_fn_backport_v3.3' into 'release/v3.3'
HTTP Server : Close new session immediately if open_fn fails (Backport v3.3)

See merge request idf/esp-idf!5370
2019-07-01 15:11:50 +08:00
Shivani Tipnis
2073a6e738 nvs_util: Set previous page state to FULL before creating new page 2019-06-30 10:55:08 +00:00
Anurag Kar
95b72a96f8 HTTP Server : Close new session immediately if open_fn fails
open_fn() was introduced in the context of HTTPS server, as a configurable callback function that is called by the HTTP server, on every newly created socket. It is responsible of allocating resources for per session transport security.

Earlier, if open_fn were to fail, the newly created socket would be closed by the server but the corresponding entry, for the now invalid socket, will remain in the internal socket database until that invalid socket is detected due to error when calling select(). Because of this delayed closing of sockets, the HTTPS server would quickly face shortage of available sessions when a lot of SSL handshake errors are happening (this typically occurs when a browser finds that the server certificate is self signed). This changes in this MR fix this issue by clearing up the socket from internal database, right after open_fn fails.

Closes https://github.com/espressif/esp-idf/issues/3479
2019-06-28 10:11:26 +00:00
Anurag Kar
2617dee69f wifi_prov_mgr : Free memory allocated by cJSON_Print 2019-06-28 07:49:03 +00:00
Anurag Kar
f94db7bba7 wifi_provisioning : Added Wi-Fi Scan list feature to Provisioning Manager
List of changes in components/wifi_provisioning:
* Manager version is now v1.1
* .proto files and protocomm handler added for sending Wi-Fi scan command and receiving scan results
* Implemented handlers for wifi_scan protocomm endpoint
* Update manager context data structure to hold scan state and results
* scheme_softap now runs Wi-Fi in APSTA mode
* Wi-Fi is started in AP mode when provisioning is started. This is necessary for scan list to work
* Docs updates with information about new wifi_scan endpoint

List of changes in tools/esp_prov:
* Added functions for sending and receiving protobuf messages compatible with wifi_scan protocomm endpoint
* Added feature to display/refresh scan results and accept user selection at runtime
* New functions:
  * get_version() : only returns the protocol version string
  * has_capability() : check is a capability is present according to proto-ver response
* wifi_scan feature is provided only if the `wifi_scan` capability is present

Other changes:
* Replace recursive mutex with plain mutex
* assert on return value of mutex give / take calls
* replace all calls with macros ACQUIRE_LOCK and RELEASE_LOCK
* some checks added in scanning related private APIs
* free and nullify scanning context and state if service is stopped while ongoing scan
2019-06-28 07:49:03 +00:00
Anurag Kar
f7f02c9a43 esp_prov : Support new JSON format of version string while maintaining backward compatibility
Other changes:
* Version check only happens if command line argument is specified
* Minor bugfix in processing apply_config response
2019-06-28 07:49:03 +00:00
Anurag Kar
52f0b86965 Provisioning : Added Wi-Fi Provisioning Manager example and test script 2019-06-28 07:49:03 +00:00
Anurag Kar
12bbe0f39b wifi_provisioning : Docs updated with information about new provisioning manager 2019-06-28 07:49:03 +00:00
Anurag Kar
536b2d8a65 wifi_provisioning : Wi-Fi Provisioning Manager added 2019-06-28 07:49:03 +00:00
Angus Gratton
f5ab51c9b7 Merge branch 'bugfix/error_on_unknown_component' into 'release/v3.3'
cmake: error out when component is not found (v3.3)

See merge request idf/esp-idf!5299
2019-06-28 15:39:21 +08:00
Angus Gratton
8a5c712730 Merge branch 'bugfix/mbedtls_mpi_exp_mod_v3.3' into 'release/v3.3'
mbedtls: Fix mbedtls_mpi_exp_mod() set n and s values (v3.3)

See merge request idf/esp-idf!5354
2019-06-28 08:31:53 +08:00
Mahavir Jain
2287c28b41 mbedtls: upgrade to v2.16.2 release
For detailed release notes please refer to:
https://github.com/ARMmbed/mbedtls/releases/tag/mbedtls-2.16.2
2019-06-27 16:56:00 +05:30
Angus Gratton
129ac11c31 Merge branch 'refactor/power_management_v3.3' into 'release/v3.3'
power_management: Using port*_CRITICAL_ISR to be consistent with FreeRTOS (backport v3.3)

See merge request idf/esp-idf!5079
2019-06-26 14:33:19 +08:00
Konstantin Kondrashov
166918e802 mbedtls: Add UTs for modexp 2019-06-26 14:19:40 +08:00
Konstantin Kondrashov
4b028cca86 mbedtls: Fix Z->s in mbedtls_mpi_exp_mod()
Z->s should never be zero, only 1 or -1.
Added additional checks for X, Y and M args to correctly set Z->s.

Closes: https://github.com/espressif/esp-idf/issues/1681
Closes: https://github.com/espressif/esp-idf/issues/3603
Closes: IDFGH-1313
2019-06-26 14:19:40 +08:00
He Yin Ling
a9d266b921 Merge branch 'feature/add_nimble_ssc_backport_for_3.3' into 'release/v3.3'
test: modify test cases for bluedroid (backport v3.3)

See merge request idf/esp-idf!5212
2019-06-25 23:18:34 +08:00
Chen Sheng
dc9c2f3b60 test: modify test cases for bluedroid (backport v3.3) 2019-06-25 23:18:34 +08:00
Sachin Parekh
ae1389afd9 unit-test-app: freertos_compliance config added
Signed-off-by: Sachin Parekh <sachin.parekh@espressif.com>
2019-06-25 04:33:32 +00:00
Sachin Parekh
92f1d7ae39 ref_clock: port*_CRITICAL vanilla FreeRTOS compliance
Signed-off-by: Sachin Parekh <sachin.parekh@espressif.com>
2019-06-25 04:33:32 +00:00
Sachin Parekh
f73c972280 power_management: port*_CRITICAL vanilla FreeRTOS compliance
Signed-off-by: Sachin Parekh <sachin.parekh@espressif.com>
2019-06-25 04:33:32 +00:00
Sachin Parekh
378a5b159a intr_alloc: port*_CRITICAL vanilla FreeRTOS compliance
Signed-off-by: Sachin Parekh <sachin.parekh@espressif.com>
2019-06-25 04:33:32 +00:00
Sachin Parekh
2ef218059b crosscore_init: port*_CRITICAL vanilla FreeRTOS compliance
Signed-off-by: Sachin Parekh <sachin.parekh@espressif.com>
2019-06-25 04:33:32 +00:00
Sachin Parekh
28a8349fb8 timer: port*_CRITICAL vanilla FreeRTOS compliance
Signed-off-by: Sachin Parekh <sachin.parekh@espressif.com>
2019-06-25 04:33:32 +00:00
Sachin Parekh
4acc941c3d rtc_module: port*_CRITICAL vanilla FreeRTOS compliance
Signed-off-by: Sachin Parekh <sachin.parekh@espressif.com>
2019-06-25 04:33:32 +00:00
Sachin Parekh
4ae01f0c9d rmt: port*_CRITICAL vanilla FreeRTOS compliance
Signed-off-by: Sachin Parekh <sachin.parekh@espressif.com>
2019-06-25 04:33:32 +00:00
Sachin Parekh
2c4e0cf878 periph_ctrl: port*_CRITICAL vanilla FreeRTOS compliance
Signed-off-by: Sachin Parekh <sachin.parekh@espressif.com>
2019-06-25 04:33:32 +00:00
Sachin Parekh
4b739249c2 freertos: port*_CRITICAL_SAFE API added
port*_CRITICAL_SAFE API calls port*_CRITICAL or port*_CRITICAL_ISR
depending on the context (Non-ISR or ISR respectively).

FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE Kconfig option added

Signed-off-by: Sachin Parekh <sachin.parekh@espressif.com>
2019-06-25 04:33:32 +00:00
Angus Gratton
b3f4755ac2 Merge branch 'bugfix/docs_rtd_failure_on_missing_submodule_v3_3_bis' into 'release/v3.3'
docs: Remove space from RTD project configuration filename to be recognized by the RTD build system (v3.3)

See merge request idf/esp-idf!5311
2019-06-25 11:08:04 +08:00
zhiweijian
0e022b7db9 component/bt: fix unpack hci enhance connection complete event error 2019-06-24 03:23:59 +00:00
Angus Gratton
9185c370dc Merge branch 'bugfix/spi_concurrency_3.3' into 'release/v3.3'
spi: fix a possible concurrency issue (port to v3.3)

See merge request idf/esp-idf!5279
2019-06-21 13:21:44 +08:00
Krzysztof
b62182d75a docs: Remove space from RTD project configuration filename to be recognized by the RTD build system 2019-06-21 13:15:42 +08:00
He Yin Ling
890a341db4 Merge branch 'test/fix_some_error_wifi_cases_v3.3' into 'release/v3.3'
test: fix some wifi case issues (backport v3.3)

See merge request idf/esp-idf!5255
2019-06-20 22:10:32 +08:00
Angus Gratton
04815c2d27 Merge branch 'bugfix/pyparsing_v3.3' into 'release/v3.3'
Temporarily fix incompatibility with pyparsing 2.4.0 (v3.3)

See merge request idf/esp-idf!5197
2019-06-20 15:02:49 +08:00
Renz Christian Bagaporo
0af6d8ffe3 cmake: error out when component is not found
Closes https://github.com/espressif/esp-idf/issues/3637
2019-06-20 12:10:41 +08:00
Angus Gratton
43b2563f5a Merge branch 'bugfix/docs_rtd_failure_on_missing_submodule_v3_3' into 'release/v3.3'
docs: Add mqtt submodule to RTD build configuration. Now any submodule...

See merge request idf/esp-idf!5285
2019-06-20 08:07:31 +08:00
Krzysztof
16586524e9 docs: Add mqtt submodule to RTD build configuration. Now any submodule included in documentation build by Doxygen should be included in this file 2019-06-19 15:58:13 +08:00
Jiang Jiang Jian
f60acb2196 Merge branch 'feature/btdm_add_ble_link_timeout_config_v3.3' into 'release/v3.3'
Component/bt: add ble link timeout config in menuconfig(backport v3.3)

See merge request idf/esp-idf!4825
2019-06-19 14:47:31 +08:00
Michael (XIAO Xufeng)
1d2a9efa55 spi: fix a possible concurrency issue 2019-06-19 12:44:24 +08:00
Roland Dobai
5ab4a9da51 Temporarily fix incompatibility with pyparsing 2.4.0 2019-06-17 09:40:06 +00:00
Angus Gratton
b63be2e08e Merge branch 'bugfix/remove_secure_boot_test_mode_bp3.3' into 'release/v3.3'
remove secure boot test mode (Backport v3.3)

See merge request idf/esp-idf!5258
2019-06-17 10:34:12 +08:00
hemal.gujarathi
6cf4e14671 remove secure boot test mode 2019-06-14 14:37:02 +05:30
Angus Gratton
39f7d1ad0b Merge branch 'bugfix/spiflash_kconfig_v3.3' into 'release/v3.3'
spi_flash: Fix Kconfig indentation (v3.3)

See merge request idf/esp-idf!5232
2019-06-14 16:44:31 +08:00
He Yin Ling
d3a29c2d08 test: fix some wifi case issues:
* remove heap size check cases as we have bg tasks allocate memory
* fix wifi connect to open ap issue
2019-06-14 14:57:55 +08:00
Jiang Jiang Jian
31a8a488f0 Merge branch 'bugfix/dns_bug_3.3' into 'release/v3.3'
DNS: fix the crash  under static IP address(backport3.3)

See merge request idf/esp-idf!5210
2019-06-14 11:35:37 +08:00
xueyunfei
b908d4325b lwip:fix dns bug for 3.3 2019-06-13 19:36:55 +08:00
Jiang Jiang Jian
54c148d289 Merge branch 'bugfix/btdm_coex_assert_in_lc_lmppdu_v3.3' into 'release/v3.3'
components/bt: Fix assert due to alloc LMP TX buffer failed

See merge request idf/esp-idf!5216
2019-06-13 13:59:02 +08:00
Roland Dobai
60b937b5ca spi_flash: Fix Kconfig indentation
Closes https://github.com/espressif/esp-idf/issues/3598
2019-06-13 07:55:40 +02:00
Angus Gratton
b816edac3c Merge branch 'bugfix/idf_py_windows_relpath_v3.3' into 'release/v3.3'
idf.py: Fix Windows issue if project and IDF are on different drives (v3.3)

See merge request idf/esp-idf!4731
2019-06-13 13:53:07 +08:00
baohongde
2ee0f98d05 components/bt: Fix assert due to alloc LMP TX buffer failed 2019-06-12 19:49:28 +08:00
Jiang Jiang Jian
f83296e448 Merge branch 'bugfix/fix_some_wps_bugs_v3.3' into 'release/v3.3'
wps: add overlap event (backport v3.3)

See merge request idf/esp-idf!5112
2019-06-12 14:36:02 +08:00
Angus Gratton
09515bdfde Merge branch 'fix/mfg_util_3.3' into 'release/v3.3'
mfg_util: Fix unnecessary csv files creation for values with REPEAT tags (backport 3.3)

See merge request idf/esp-idf!5045
2019-06-11 10:25:38 +08:00
Angus Gratton
081b623a34 Merge branch 'bugfix/fix_build_cmake_example_failing_v3.3' into 'release/v3.3'
Fix false positive errors with CMake example builds (backport v3.3)

See merge request idf/esp-idf!4984
2019-06-11 09:05:42 +08:00
Angus Gratton
871e95087e Merge branch 'bugfix/restore_ccache_use' into 'release/v3.3'
CMake : Restore ccache use (backport v3.3)

See merge request idf/esp-idf!4985
2019-06-11 09:03:54 +08:00
Angus Gratton
a3b3f9ae2d Merge branch 'bugfix/win_fullclean_symlink_v3.3' into 'release/v3.3'
idf.py: Detect symlinks on Windows during fullclean (v3.3)

See merge request idf/esp-idf!4924
2019-06-11 08:26:36 +08:00
Angus Gratton
fb6f343ce5 Merge branch 'protocomm_ble_128bit_uuid_v3.3' into 'release/v3.3'
protocomm_ble : Fix support for custom service UUIDs (backport v3.3)

See merge request idf/esp-idf!5017
2019-06-07 07:47:19 +08:00
Angus Gratton
e1069de9aa Merge branch 'feature/confserver_v2_v3.3' into 'release/v3.3'
confserver: Add v2 confserver protocol with separate visibility info  (backport v3.3)

See merge request idf/esp-idf!4513
2019-06-07 06:31:41 +08:00
Angus Gratton
a219e9f819 Merge branch 'bugfix/reset_log_uart_port_v3.3' into 'release/v3.3'
esp32: Add reset CONSOLE_UART port (v3.3)

See merge request idf/esp-idf!5120
2019-06-06 15:47:17 +08:00
Angus Gratton
8f8113f5cd idf.py: Fix Windows issue if project and IDF are on different drives
Closes https://github.com/espressif/esp-idf/issues/2753
2019-06-06 07:45:47 +00:00
xiehang
cf3647fe40 wps: add overlap event (backport v3.3)
modify some header files to be consistent with vnc
2019-06-06 13:33:03 +08:00
Jiang Jiang Jian
06651c0951 Merge branch 'bugfix/support_tcp_window_scale_v3.3' into 'release/v3.3'
esp_wifi/lsupport TCP window scale (backport v3.3)

See merge request idf/esp-idf!5113
2019-06-05 20:08:58 +08:00
Konstantin Kondrashov
d54fadef41 freertos/test: Add unit tests for xTaskIncrementTick 2019-06-05 10:22:48 +00:00
Konstantin Kondrashov
3b4353da5d freertos: Fix xTaskIncrementTick for unwind the Tick for CPU1
xTaskIncrementTick have to unwind uxPendedTicks on CPU1 and CPU0.

Use case: If an erase operation was run on the CPU1 then it leads
to starving other tasks which waiting time. Waited tasks just skipped.

Closes: https://github.com/espressif/esp-idf/issues/1952

Closes: IDF-183
2019-06-05 10:22:48 +00:00
Renz Christian Bagaporo
261c5bf6a8 ci: check that build uses ccache when present 2019-06-04 23:28:02 +08:00
Renz Christian Bagaporo
6132d7bce3 cmake: restore ccache use when present
Closes https://github.com/espressif/esp-idf/issues/3116
2019-06-04 23:27:18 +08:00
Konstantin Kondrashov
1db04ae574 esp32: Add reset uart
Fixed the case when the first part of log was missed
this was happened when:
 * CONFIG_CONSOLE_UART_CUSTOM option is selected (UART1)
 * The selected CONSOLE_UART port is used also for the console component
 * in code esp_restart() or abort() functions were called.
2019-06-04 20:15:35 +08:00
liu zhifu
6d4adb46f3 esp_wifi/lwip: support TCP window scale
Support enable/disable TCP Window scale feature via menuconfig
2019-06-04 14:03:37 +08:00
Angus Gratton
e681f449bc Merge branch 'bugfix/httpd_log_purge_v3.3' into 'release/v3.3'
esp_http_server : Logging of purged data to monitor made configurable (backport v3.3)

See merge request idf/esp-idf!5015
2019-06-04 13:28:27 +08:00
Angus Gratton
f3725a7821 Merge branch 'bugfix/https_doc_api_v3.3' into 'release/v3.3'
esp_http_server : Minor clarification in httpd_req_get_url_query_str() API documentation (backport v3.3)

See merge request idf/esp-idf!5013
2019-06-04 06:54:22 +08:00
Jiang Jiang Jian
34f6773471 Merge branch 'bugfix/wpa2_ent_vulnerability_v3.3' into 'release/v3.3'
esp32: fix wpa2 enterprise vulnerability issues (backport v3.3)

See merge request idf/esp-idf!5107
2019-06-03 21:58:19 +08:00
Anurag Kar
d0e7fd4369 esp_http_server : Minor clarification in httpd_req_get_url_query_str() API documentation
Closes https://github.com/espressif/esp-idf/issues/3374
2019-06-03 08:35:03 +00:00
Anurag Kar
13a3edee8a protocomm_ble : Example updated to use custom 128bit service UUID
Also removed old hardcoded UUIDs from README of esp_prov
2019-06-03 08:26:48 +00:00
Anurag Kar
56866567ae esp_prov : Runtime discovery of Service UUID and endpoint name mapping
List of changes:
* Retrieve UUID property from Bluez device object before connecting to retrieve UUID contained in advertisement
* Read Characteristic User Descriptions attribute of each UUID for mapping endpoint names
* To support older implementations with hardcoded Name-UUID map, revert to fallback mode in order if advertisement data has no UUID field
2019-06-03 08:26:48 +00:00
Anurag Kar
bc83d470e3 protocomm_ble : Fixed custom service UUID support
List of changes:
* Use 128 bit characteristic UUIDs when creating GATT table entries
* Change primary service attribute value to 128 bit custom service UUID
* Use raw advertisement data to convey flags and 128 bit primary service UUID
* Use raw scan response to send device name as complete local name
* Increase maximum device name length in relation to maximum scan response length
* Set Characteristic User Description attributes for each characteristic to convey protocomm endpoint names
2019-06-03 08:26:48 +00:00
Angus Gratton
a298d32d65 Merge branch 'bugfix/custom_log_uart_rx_pin_v3.3' into 'release/v3.3'
bootloader_support: Fix UART RXD pin for console output (CUSTOM option) (v3.3)

See merge request idf/esp-idf!5031
2019-06-03 14:31:27 +08:00
Anurag Kar
172a216edb esp_http_server : Logging of purged data to monitor made configurable
List of changes:
* Kconfig option HTTPD_LOG_PURGE_DATA enables logging of purged data
* Kconfig option HTTPD_PURGE_BUF_LEN sets purge buffer length
* Purged data is logged in hex

Closes https://github.com/espressif/esp-idf/issues/3359
2019-06-03 05:51:14 +00:00
Angus Gratton
d5923f0e2e Merge branch 'bugfix/custom_bootloader_subproject_build_v3.3' into 'release/v3.3'
CMake: Fix custom bootloader does not override original (v3.3)

See merge request idf/esp-idf!5081
2019-06-03 09:55:49 +08:00
Shivani Tipnis
cd9249970f mfg_util: Fix unnecessary csv files creation for values with REPEAT tags
(cherry picked from commit 8b96668c9123fbbf8c78b347479215f471b102ed)
2019-05-31 13:55:03 +05:30
liu zhifu
676a27c7cf esp32: fix wpa2 enterprise vulnerability issues
Fix following wpa2 enterprise vulnerability issues:
1. The station can complete 4-way handshake after EAP-FAIL is received
2. The station crashes if EAP-SUCCESS is received before PMK is setup
2019-05-30 21:23:01 +08:00
Konstantin Kondrashov
33121c3311 soc: Add some headers into gpio_periph.h 2019-05-29 13:37:22 +08:00
Konstantin Kondrashov
38509b2b95 bootloader_support: Fix UART RXD pin for console output (CUSTOM option)
The RXD pin is assigned as input (fix for custom uart option).

Closes: https://github.com/espressif/esp-idf/issues/2843

Closes: IDFGH-505
2019-05-28 12:44:41 +00:00
Renz Christian Bagaporo
e821c22a8c ci: check that custom bootloader overrides original 2019-05-27 17:04:23 +08:00
Renz Christian Bagaporo
8c363321db cmake: fix custom bootloader issue
Issue is that when users creates a custom bootloader from
$IDF_PATH/components/bootloader. Parent project build uses the copy but
bootloader subproject build uses the original still. The issue is solved
by passing the custom bootloader as extra component directory so
bootloader build knows to use the new copy (itself) in the build.
2019-05-27 17:00:23 +08:00
Jiang Jiang Jian
ce279988c3 Merge branch 'bugfix/fix_no_disconnect_event_when_rx_disassoc_after_send_auth_v3.3' into 'release/v3.3'
wifi: fix the bug no disconnect event when STA recv disassoc after sending auth (backport v3.3)

See merge request idf/esp-idf!5066
2019-05-24 19:57:00 +08:00
zhangyanjiao
7200b8bf77 wifi bugfixs:
1. fix the bug no disconnect event when STA recv disassoc after sending auth
2. fix the bug full scan send multi events when recv deauth/disassoc
2019-05-24 11:31:24 +08:00
Angus Gratton
7e5cd986a9 Merge branch 'bugfix/docs_build_failure_on_rtd' into 'release/v3.3'
Fix Breathe version to avoid docs build failure on ReadTheDocs server. Provide...

See merge request idf/esp-idf!5041
2019-05-24 10:19:50 +08:00
Jiang Jiang Jian
fa1e983028 Merge branch 'bugfix/fix_some_wifi_bugs_0508_v3.3' into 'release/v3.3'
esp32: fix some WiFi bugs 0508 (backport v3.3)

See merge request idf/esp-idf!4965
2019-05-23 17:55:12 +08:00
Angus Gratton
71e344da20 Merge branch 'feature/add_promiscuous_control_for_ethernet_v3.3' into 'release/v3.3'
add promiscuous mode control for Ethernet (v3.3)

See merge request idf/esp-idf!4975
2019-05-23 14:24:07 +08:00
liu zhifu
620bba3a66 esp32: fix some WiFi bugs
Fix following WiFi bugs:
1. Make smartconfig thread-safe
2. Fix WiFi stop/deinit memory leak
3. Refactor for WiFi init/deinit/ioctl etc
4. Add declaration for esp_wifi_internal_ioctl()
5. Fix the bug that WiFi stop leads to task watchdog
2019-05-22 22:22:21 +08:00
Jiang Jiang Jian
8f7f32c0a5 Merge branch 'bugfix/fix_softap_crash_when_sta_reset_v3.3' into 'release/v3.3'
wifi: fix softap crash when sta reset (backport v3.3)

See merge request idf/esp-idf!5039
2019-05-22 21:00:49 +08:00
Krzysztof
3cbbc3bbac Fix Breathe version to avoid docs build failure on ReadTheDocs server. Provide RTD project configuration file to be able to select python version for specific to esp-idf release. (backport v3.3) 2019-05-21 20:02:20 +08:00
xiehang
5c42c831f5 wifi: fix softap crash when sta reset (backport v3.3) 2019-05-20 20:47:47 +08:00
Angus Gratton
8c57aa0242 Merge branch 'feature/allow_multiple_fragment_definitions_for_library' into 'release/v3.3'
Combine definitions of multiple mapping fragments referring to the same library

See merge request idf/esp-idf!4243
2019-05-20 13:58:25 +08:00
Angus Gratton
0d5609ba92 Merge branch 'bugfix/esp_efuse_fields_unused_variable_v3.3' into 'release/v3.3'
efuse: Fix unused variable warning when NDEBUG (v3.3)

See merge request idf/esp-idf!4956
2019-05-20 12:24:19 +08:00
Angus Gratton
e209307297 Merge branch 'bugfix/adjtime_ut_v3.3' into 'release/v3.3'
newlib: Fix adjtime (v3.3)

See merge request idf/esp-idf!4870
2019-05-15 15:44:33 +08:00
Angus Gratton
4ac347b295 Merge branch 'bugfix/select_init_sem_v3.3' into 'release/v3.3'
VFS: Allocate socket select semaphore outside ISR

See merge request idf/esp-idf!4660
2019-05-13 12:31:00 +08:00
Renz Christian Bagaporo
fc3aa765cf ci: fix cmake example build fail 2019-05-13 11:58:41 +08:00
Angus Gratton
31c94b25c5 Merge branch 'feature/update_cjson_lib_to_1.7.11_v3.3' into 'release/v3.3'
cJSON: update to v1.7.11 (v3.3)

See merge request idf/esp-idf!4971
2019-05-10 22:02:31 +08:00
suda-morris
5b8d1c9da3 add promiscuous mode control in emac driver
1. add promiscuous mode control in emac driver
2. fix minor bugs in IP101 driver
2019-05-10 12:56:24 +08:00
Angus Gratton
7f784c84d2 Merge branch 'bugfix/http_file_server_backport_v3.3' into 'release/v3.3'
File Server Example : Check longer than allowed filenames when converting from URIs to filepaths (backport v3.3)

See merge request idf/esp-idf!4938
2019-05-10 11:03:32 +08:00
Angus Gratton
532c8847c7 Merge branch 'bugifx/httpd_reuseaddr_backport_v3.3' into 'release/v3.3'
esp_http_server : Allow binding to same address and port upon restarting server without delay (backport v3.3)

See merge request idf/esp-idf!4939
2019-05-10 10:45:55 +08:00
suda-morris
6dc31101ce cJSON: update to v1.7.11
Closes https://github.com/espressif/esp-idf/issues/3332
2019-05-10 10:26:04 +08:00
Ivan Grokhotkov
c763b8089c pm: prevent interrupt nesting during esp_pm_impl_isr_hook
Follows the approach proposed in https://github.com/espressif/esp-idf/pull/3110,
but masks the interrupts during the entire ISR hook, not only during
leave_idle. Interrupt nesting during update_ccompare may also cause
issues.

Closes https://github.com/espressif/esp-idf/issues/3057
2019-05-10 10:21:21 +08:00
V.Dudnik
7d9330d1af efuse: Fix unused variable warning when NDEBUG
Merges: https://github.com/espressif/esp-idf/pull/3429
Closes: https://github.com/espressif/esp-idf/issues/3432
2019-05-08 09:41:49 +08:00
Jiang Jiang Jian
618aa6a3a4 Merge branch 'bugfix/wps_connect_fail_after_reason_code_change_v3.3' into 'release/v3.3'
wifi: fix the bug that WPS fails when AP is encrypted (backport v3.3)

See merge request idf/esp-idf!4910
2019-05-07 22:41:52 +08:00
Angus Gratton
762bf705bb Merge branch 'bugfix/enb_secboot_post_flash_enc_backport_v3.3' into 'release/v3.3'
Enable secure boot only after encrypting flash (backport v3.3)

See merge request idf/esp-idf!4940
2019-05-07 14:44:03 +08:00
Roland Dobai
5988e77a3a VFS: Allocate socket select semaphore outside ISR 2019-05-06 16:11:59 +02:00
Roland Dobai
26e7f3fde6 idf.py: Detect symlinks on Windows during fullclean
Closes https://github.com/espressif/esp-idf/issues/3377
2019-05-06 09:41:39 +02:00
Anurag Kar
ba2ff1876f Enable secure boot only after encrypting flash
This prevents a device from being bricked in case when both secure boot & flash encryption are enabled and encryption gets interrupted during first boot. After interruption, all partitions on the device need to be reflashed (including the bootloader).

List of changes:
* Secure boot key generation and bootloader digest generation logic, implemented inside function esp_secure_boot_permanently_enable(), has been pulled out into new API esp_secure_boot_generate_digest(). The enabling of R/W protection of secure boot key on EFUSE still happens inside esp_secure_boot_permanently_enable()
* Now esp_secure_boot_permanently_enable() is called only after flash encryption process completes
* esp_secure_boot_generate_digest() is called before flash encryption process starts
2019-05-06 11:34:12 +05:30
Anurag Kar
0757e019f4 esp_http_server : Allow binding to same address and port upon restarting server without delay
Issue : Restarting the server without 30sec delay between httpd_stop() and httpd_start() causes EADDRINUSE error
Resolution : Use setsockopt() to enable SO_REUSEADDR on listener socket

Closes https://github.com/espressif/esp-idf/issues/3381
2019-05-06 10:52:49 +05:30
Anurag Kar
c68390f922 File Server Example : Check longer than allowed filenames when converting from URIs to filepaths
This change prevents buffer overflows in case of really long file paths.

Other changes:
* Remove query (?) and fragment (#) component from URI when converting to file path
* /index.html and favicon.ico can be overridden by files with same name and path in SPIFFS
* README.md updated
2019-05-06 10:46:35 +05:30
zhangyanjiao
8e3a1876cb wifi: fix the bug that WPS fails when AP is encrypted 2019-05-06 10:50:04 +08:00
Jiang Jiang Jian
cc8652d8d2 Merge branch 'bugfix/scan_fail_when_no_ap_found_v3.3' into 'release/v3.3'
fix the bug when scan fail after STA failed to connect to a nonexistent AP (backport v3.3)

See merge request idf/esp-idf!4900
2019-05-06 10:37:08 +08:00
Angus Gratton
3cd8538f53 Merge branch 'backport/bugfix_url_redirect_v33' into 'release/v3.3'
Fix url redirection issue. (backport v3.3)

See merge request idf/esp-idf!4851
2019-05-03 14:15:33 +08:00
zhangyanjiao
0033b31442 fix the bug when scan fail after STA failed to connect to a nonexistent AP 2019-04-29 16:21:58 +08:00
Angus Gratton
56afb3bd1c Merge branch 'backport/feature_set_redirect_function_v33' into 'release/v3.3'
Add a `esp_http_client_set_redirection` function. (backport v3.3)

See merge request idf/esp-idf!4866
2019-04-26 10:06:52 +08:00
Jiang Jiang Jian
e622ee0f41 Merge branch 'bugfix/btdm_abort_if_deinit_spp_without_init_v3.3' into 'release/v3.3'
components/bt: Fix abort if call esp_spp_deinit without calling esp_spp_init

See merge request idf/esp-idf!4861
2019-04-25 20:39:36 +08:00
Konstantin Kondrashov
2d50291b05 newlib: Fix adjtime
Fixed adjtime function: While using the adjtime() function,
the time correction accumulated an error
when reading the time frequently (using gettimeofday).
2019-04-24 17:42:20 +08:00
Vikram Dattu
c9b1e1df60 Add a esp_http_client_set_redirection function.
When using direct operations instead of `esp_http_client_perform`, we need a way to set redirection URL when we get 30x response codes. Added the function for the same.

User can now check status code and call `esp_http_client_set_redirection` function to enable redirection.

Related change in adf: https://gitlab.espressif.cn:6688/adf/esp-adf-internal/merge_requests/187

Closes https://github.com/espressif/esp-idf/issues/2712

Signed-off-by: Vikram Dattu <vikram.dattu@espressif.com>
2019-04-24 14:10:10 +05:30
Angus Gratton
9a72c11e6e Merge branch 'bugfix/erase_with_vtaskdelay' into 'release/v3.3'
spi_flash: Add vTaskDelay while a long erasing

See merge request idf/esp-idf!4816
2019-04-24 15:51:35 +08:00
baohongde
39dbe7daa8 components/bt: Fix abort if call esp_spp_deinit without calling esp_spp_init 2019-04-24 11:30:04 +08:00
Angus Gratton
554a28e8a1 Merge branch 'bugfix/undefined_partition_table_bin_warning_v3.3' into 'release/v3.3'
make: fix undefined variables warning for PARTITION_TABLE_BIN (backport v3.3)

See merge request idf/esp-idf!4848
2019-04-24 08:57:06 +08:00
Konstantin Kondrashov
7a2885885c spi_flash: Add vTaskDelay while a long erasing
Added Kconfig options to enable yield operation during flash erase

Closes: https://github.com/espressif/esp-idf/issues/2083
Closes: IDFGH-261
2019-04-23 10:47:09 +00:00
Vikram Dattu
d154723a84 Fix url redirection issue.
Operation:
In `esp_http_client_set_url`, we check for if old_host is same as new_host.
Delete and open new connection if host is different.

Issue:
We just pointed `client->connection_info.host` to `old_host` and reassigned it.
This made old_host and new_host always point to same location and hence, using old_host with new request.

Fix:
Made a separate copy for old_host using strdup.

Closes https://github.com/espressif/esp-idf/issues/2631

Signed-off-by: Vikram Dattu <vikram.dattu@espressif.com>
2019-04-23 14:28:53 +05:30
Renz Christian Bagaporo
16918e400e make: fix undefined variables warning for PARTITION_TABLE_BIN
Closes https://github.com/espressif/esp-idf/issues/3136
2019-04-23 14:42:14 +08:00
Jiang Jiang Jian
510f726935 Merge branch 'bugfix/fix_iperf_exit_error_v3.3' into 'release/v3.3'
examples: fix iperf exit error

See merge request idf/esp-idf!4845
2019-04-23 10:21:25 +08:00
zhiweijian
3295ed0995 Component/bt: add ble link timeout config in menuconfig
- add ble link timeout config in menuconfig
- disable background connection when call gatts_open
2019-04-22 21:49:59 +08:00
xiehang
924895f832 examples: fix iperf exit error 2019-04-22 19:56:15 +08:00
He Yin Ling
403268a13a Merge branch 'test/modify_mesh_ci_v3.3' into 'release/v3.3'
test: update mesh test cases for ci (backport v3.3)

See merge request idf/esp-idf!4651
2019-04-18 11:29:54 +08:00
Jiang Jiang Jian
6b3da6b188 Merge branch 'bugfix/fix_signal_test_bug_v3.3' into 'release/v3.3'
esp32: fix a bug caused by signal test code (backport v3.3)

See merge request idf/esp-idf!4813
2019-04-17 22:09:23 +08:00
liu zhifu
93b4c71595 esp32: fix a bug caused by signal test code
Fix a WiFi bug caused by signal test code.
2019-04-17 17:44:23 +08:00
chenyudong
d6badc53eb test:update mesh test cases for test(v3.3)
add job in ci mesh test

update cases in TC_IT_MESH_EST.yml and TC_IT_MESH_COMM.yml

change the file 'components/idf_test/integration_test'
2019-04-17 17:28:31 +08:00
Jiang Jiang Jian
cb7aaae35e Merge branch 'bugfix/fix_set_config_bug_for_bssid_set_v3.3' into 'release/v3.3'
wifi: fix the set config bug for bssid_set (backport v3.3)

See merge request idf/esp-idf!4802
2019-04-16 23:23:58 +08:00
zhangyanjiao
18533e132a wifi: fix the set config bug for bssid_set 2019-04-16 20:40:00 +08:00
Jiang Jiang Jian
7a7128c7a3 Merge branch 'bugfix/esp_efuse_get_pkg_ver_v3.3' into 'release/v3.3'
efuse: Fix excess data coming from uninitialized variable (backport v3.3)

See merge request idf/esp-idf!4794
2019-04-16 20:33:36 +08:00
Jiang Jiang Jian
208d87742c Merge branch 'bugfix/fix_deprecated_warning_with_dfs_init_auto_config_v3.3' into 'release/v3.3'
cpu_start: fix warnings with CONFIG_PM_DFS_INIT_AUTO option (v3.3)

See merge request idf/esp-idf!4790
2019-04-16 20:32:51 +08:00
GOPTIONS\pfrost
dd76df7aee efuse: Fix excess data coming from uninitialized variable
Fixed esp_efuse_get_pkg_ver() function

Closes: https://github.com/espressif/esp-idf/pull/3309
Closes: IDFGH-976
2019-04-16 16:04:15 +08:00
Mahavir Jain
deba35d2e5 cpu_start: fix warnings with CONFIG_PM_DFS_INIT_AUTO option
Closes https://github.com/espressif/esp-idf/issues/3297
2019-04-16 11:21:17 +05:30
Jiang Jiang Jian
9fdc36ed57 Merge branch 'feature/add_support_for_signal_test_v3.3' into 'release/v3.3'
esp32: add support for WiFi signal test (backport v3.3)

See merge request idf/esp-idf!4759
2019-04-15 17:52:54 +08:00
liu zhifu
184f2f0fd6 esp32: add support for WiFi signal test
Add support for WiFi signal test
2019-04-15 10:17:14 +08:00
Jiang Jiang Jian
b36f4aa813 Merge branch 'feature/wifi_refactor_softap_power_save_v3.3' into 'release/v3.3'
refactor softap power save

See merge request idf/esp-idf!4766
2019-04-15 10:09:55 +08:00
Jack
4b6ac69c04 refactor softap power save
1. Softap support multicast and broadcast saving and flushing when the associated stations enable IEEE80211 legacy power save(which is called modem sleep in ESP32).
2. Improve the frame saving and flushing mechanism of softap power save.
2019-04-14 19:43:09 +08:00
Jiang Jiang Jian
c7d73901d0 Merge branch 'bugfix/nvs_fix_erase_any_v3.3' into 'release/v3.3'
nvs_flash: Multi-page blob erased using nvs_erase_key should be cleaned properly(v3.3)

See merge request idf/esp-idf!4765
2019-04-14 19:39:04 +08:00
Jiang Jiang Jian
76cc8c1c0c Merge branch 'bugfix/wifi_spike_power_v3.3' into 'release/v3.3'
wifi: fix the issue that the spike transmit power of WiFi is higher than…

See merge request idf/esp-idf!4762
2019-04-14 19:38:55 +08:00
Jiang Jiang Jian
38a2be75a9 Merge branch 'bugfix/btdm_fix_memory_leak_when_set_txpwr_v3.3' into 'release/v3.3'
component/bt: fix memory leak when settig tx power (backport v3.3)

See merge request idf/esp-idf!4760
2019-04-14 16:55:52 +08:00
Jiang Jiang Jian
c85fc16282 Merge branch 'bugfix/improve_spi_timing_for_psram_and_flash_v3.3' into 'release/v3.3'
bugfix(psram): improve spi cs timing settings for psram(v3.3)

See merge request idf/esp-idf!4763
2019-04-14 16:27:35 +08:00
Jack
ab888394c3 wifi: fix the issue that the spike transmit power of WiFi is higher than configured when WiFi and Bluetooth coexist 2019-04-14 06:26:01 +00:00
zhiweijian
b8a2b77f70 component/bt: fix memory leak when settig tx power 2019-04-14 06:25:53 +00:00
negativekelvin
ef8341b5bc nvs_flash: Multi-page blob erased using nvs_erase_key should be cleaned properly
Earlier eraseItem function in Storage class would do lazy cleanup of
multi-page blobs if called using type "ANY" instead of "BLOB". It used to
just delete BLOB data and index would remain as is. Any subsequent read
would delete index entry as well. This however would return a valid
length without error if nvs_get_blob API was just used for finding
length and not reading the complete blob. This change fixes this issue.

Closes https://github.com/espressif/esp-idf/issues/3255
2019-04-14 06:23:38 +00:00
Wangjialin
c31217d193 bugfix(psram): improve spi cs timing settings for psram
1. remove redundant SPI clock settings, use rom functions to set clock.
2. remove redundant SPI cs setup and hold settings.
3. for old 32Mbit psram, cs hold time must only be 0.5T due to the special driving mode.(cs_setup = 0; cs_hold = 0)
4. for new 64Mbit psram, cs hold time is recommended to be 2.5T. (cs_setup = 1, cs_setup_time = 0;cs_hold = 1, cs_hold_time = 1)
2019-04-14 06:23:24 +00:00
Jiang Jiang Jian
16a56e2e7a Merge branch 'bugfix/rename_ldgen_common_module_v3.3' into 'release/v3.3'
ldgen: rename common module(v3.3)

See merge request idf/esp-idf!4764
2019-04-14 14:21:01 +08:00
Renz Christian Bagaporo
1b3c6fb1a1 ldgen: rename common module 2019-04-14 12:48:27 +08:00
Jiang Jiang Jian
f7177095cf Merge branch 'bugfix/name_conflict_esp32_project_ld_v3.3' into 'release/v3.3'
esp32: Rename esp32.common.ld to esp32.project.ld to avoid build errors when downgrading (v3.3)

See merge request idf/esp-idf!4732
2019-04-14 10:29:39 +08:00
Jiang Jiang Jian
0e89436769 Merge branch 'bugfix/increase_block_scan_timeout_value_v3.3' into 'release/v3.3'
esp32: increase WiFi block scan timeout value (backport v3.3)

See merge request idf/esp-idf!4696
2019-04-12 23:32:55 +08:00
Angus Gratton
40067fb50f Merge branch 'bugfix/bootloader_flash_crypt_cnt_ff_v3.3' into 'release/v3.3'
flash encryption: reduce FLASH_CRYPT_CNT bit width to 7 bits (v3.3)

See merge request idf/esp-idf!4727
2019-04-12 13:42:19 +08:00
Angus Gratton
167c21b987 Merge branch 'bugfix/remove_second_sha_enable_v3.3' into 'release/v3.3'
esp32/sha: Remove second enabling in esp_sha_lock_engine_common (backport v3.3)

See merge request idf/esp-idf!4747
2019-04-12 13:28:39 +08:00
Konstantin Kondrashov
a2f00b0adf esp32/sha: Remove second enabling in esp_sha_lock_engine_common 2019-04-10 20:49:27 +08:00
Angus Gratton
feecafeb0e Merge branch 'feature/mfg_util_v3.3' into 'release/v3.3'
mfg_util: Add changes to mfg_util as per changes in nvs_util (backport v3.3)

See merge request idf/esp-idf!4706
2019-04-10 15:32:05 +08:00
Angus Gratton
7bbbf2d4b3 Merge branch 'bugfix/httpd_accept_conn_v3.3' into 'release/v3.3'
esp_http_server : Only accept new connections if server has capacity to handle more (backport v3.3)

See merge request idf/esp-idf!4720
2019-04-10 13:47:09 +08:00
Angus Gratton
21fb5085bd Merge branch 'bugfix/prov_fix_conn_id_v3.3' into 'release/v3.3'
(backport v3.3) Unified Provisioning: Miscellaneous fixes in BLE

See merge request idf/esp-idf!4735
2019-04-10 13:38:40 +08:00
Hrishikesh Dhayagude
82a80005b9 Unified Provisioning: Miscellaneous fixes in BLE
1. Pass the correct conn_id to protocomm_req_handle
In transport_simple_ble_write(), passing param->exec_write.conn_id would
be invalid. Instead param->write.conn_id should be passed
Similar change in transport_simple_ble_exec_write() to use
param->exec_write.conn_id

2. simple_ble_start() assumes that the mode is BLE only and enables
Bluetooth controller accordingly. For, cases having BT + BLE like Alexa
(Provisioning over BLE + Audio over classic BT), this assumption should
be removed.
2019-04-09 11:30:54 +05:30
Angus Gratton
b354c11db7 esp32: Rename esp32.common.ld to esp32.project.ld to avoid build errors when downgrading
Linker script generator produces build/esp32/esp32.common.ld from
components/esp32/ld/esp32.common.ld.in

This works fine until IDF is downgraded to V3.1 which uses components/esp32/ld/esp32.common.ld and
doesn't track build/esp32/esp32.common.ld at all.

At this point, the linker runs in the build/esp32 directory and "-T esp32.common.ld" picks up the
linker script generated .ld file, which causes mis-builds.

As reported on forums: https://esp32.com/viewtopic.php?f=13&t=9684&p=40105
2019-04-09 10:20:33 +10:00
Angus Gratton
e5672e5d7f efuse/flash encryption: Reduce FLASH_CRYPT_CNT to a 7 bit efuse field
8th bit is not used by hardware.

As reported https://esp32.com/viewtopic.php?f=2&t=7800&p=40895#p40894
2019-04-09 09:57:18 +10:00
liu zhifu
3e972a3ffe esp32: increase WiFi block scan timeout value
Increase WiFi block scan internal timeout value.
2019-04-08 20:02:14 +08:00
Anurag Kar
8bd09fb0a5 esp_http_server : Test added to check limit on max_open_sockets config option 2019-04-08 11:22:12 +05:30
Anurag Kar
e90c90d1f6 esp_http_server : Only accept new connections if server has capacity to handle more
This fix prevents HTTP server from accepting new connections when the total count of connected
sockets has reached the max_open_sockets limit set during configuration. The pending connections
are kept in backlog until atleast one of the connected sockets is closed. The maximum number of
connection requests that can kept in backlog is specified as backlog_conn configuration option.
Note that this modification has no effect when LRU purge is enabled.

Also added sanity check on setting for max_open_sockets during configuration.

Solution suggested by jimparis https://github.com/espressif/esp-idf/issues/3183#issue-421234265

Closes https://github.com/espressif/esp-idf/issues/3183
2019-04-08 11:21:44 +05:30
Renz Christian Bagaporo
2f72645320 ldgen: allow combining mapping fragment definitions 2019-04-05 13:12:32 +08:00
Shivani Tipnis
4be28a798f mfg_util: Add support for comments in input config csv file only 2019-04-04 18:25:03 +05:30
Jiang Jiang Jian
eed94b87e2 Merge branch 'bugfix/coex_bt_disconn_v3.3' into 'release/v3.3'
components/coex: Fix BT disconnecting due to too many reset BB

See merge request idf/esp-idf!4680
2019-04-04 20:53:15 +08:00
Jiang Jiang Jian
a218d4b925 Merge branch 'bugfix/btdm_fix_warning_when_disable_logs_v3.3' into 'release/v3.3'
components/bt: Fix warning when disable debug logs or in release mode and improve the code structure

See merge request idf/esp-idf!4619
2019-04-04 18:45:31 +08:00
Jiang Jiang Jian
015f523939 Merge branch 'bugfix/btdm_disconn_with_apple_device_v3.3' into 'release/v3.3'
components/bt: Fix disconnect with apple device(backport 3.3)

See merge request idf/esp-idf!4666
2019-04-04 18:45:13 +08:00
Jiang Jiang Jian
7196573605 Merge branch 'bugfix/heap_caps_int_overflows_v3.3' into 'release/v3.3'
heap: Add integer overflow checks on MALLOC_CAP_32BIT & MALLOC_CAP_EXEC (v3.3)

See merge request idf/esp-idf!4570
2019-04-04 17:59:40 +08:00
Jiang Jiang Jian
4a698ffb75 Merge branch 'bugfix/external_rtc_start_fail_v3.3' into 'release/v3.3'
Bugfix/external rtc start fail (v3.3)

See merge request idf/esp-idf!4663
2019-04-04 17:59:24 +08:00
Shivani Tipnis
3368783bf0 mfg_util: Add changes to mfg_util as per changes in nvs_util
revert changeson this file

Update README for mfg util

Update to correct coding style of script

(cherry picked from commit a88b4048)
2019-04-04 13:46:39 +05:30
baohongde
7e0e514127 components/coex: Fix BT disconnecting due to too many reset BB
Update coex version to 1.1.6
2019-04-04 11:47:45 +08:00
Jiang Jiang Jian
541c267af3 Merge branch 'bugfix/fix_some_sta_certification_issues_v3.3' into 'release/v3.3'
esp32: fix some STA certification issues (backport v3.3)

See merge request idf/esp-idf!4667
2019-04-04 10:27:36 +08:00
baohongde
bbfe9f4efa components/bt: Fix disconnect with apple device(backport 3.3)
1. Fix disconnect with apple device
        2. Fix hci_refresh_enc_key_cmd will be ignored
        3. Fix hci_refresh_enc_key_cmd will crash
2019-04-03 17:24:52 +08:00
Angus Gratton
9bd172356e Merge branch 'feature/nvs_partition_util_v3.3' into 'release/v3.3'
Add support to include comments in csv file (backport v3.3)

See merge request idf/esp-idf!4670
2019-04-03 11:15:27 +08:00
Shivani Tipnis
1b8dd9f173 nvs_util: Add support to include comments in csv file
Closes https://github.com/espressif/esp-idf/issues/2965

(cherry picked from commit 66e38e9bac)
2019-04-02 12:39:44 +05:30
Liu Zhi Fu
dd33cec716 esp32: fix some STA certification issues
Fix following STA WFA certification issues:
1. STA HT2040 coexist
2. Disallow WEP/TKIP with HT rates
3. WPA2 improvement
4. Minor refactor for WiFi internal global variable auth_type
2019-04-02 14:48:43 +08:00
Angus Gratton
1cb29ac446 Merge branch 'feature/nvs_part_util_3.3' into 'release/v3.3'
Add support as per encryption and multipage blob changes in NVS Partition Utility (backport v3.3)

See merge request idf/esp-idf!4626
2019-04-02 13:31:57 +08:00
Angus Gratton
7b368fc211 Merge branch 'bugfix/esp_prov_ble_rw_except_backport_v3d3' into 'release/v3.3'
esp_prov : Catch DBus exception when reading/writing to BLE GATT characteristic (backport v3.3)

See merge request idf/esp-idf!4659
2019-04-02 12:20:15 +08:00
Angus Gratton
d6ceb4a31a Merge branch 'bugfix/http_server_lf_term_hdr_backport_v3d3' into 'release/v3.3'
HTTP Server : Fix for tolerating LF terminated headers (backport v3.3)

See merge request idf/esp-idf!4658
2019-04-02 12:19:05 +08:00
Angus Gratton
d5f9eb65e9 Merge branch 'bugfix/ldgen_type_1_fails_on_windows_v3.3' into 'release/v3.3'
Fix library path parsing in windows (backport v3.3)

See merge request idf/esp-idf!4609
2019-04-02 11:47:18 +08:00
maojianxin
ce3d20dcd2 Fix external start fail 2019-04-02 12:54:08 +11:00
Zhang Jun Yi
1dc461ba80 soc/rtc: Bypass touchpad current to external 32k crystal oscillator 2019-04-02 12:54:08 +11:00
Jiang Jiang Jian
f03382b0ff Merge branch 'feature/btdm_add_mesh_adv_type_and_srv_uuid_for_dup_scan_except_v3.3' into 'release/v3.3'
Component/bt: add mesh beacon adv and svc uuid for duplicate scan exceptional list (backport v3.3)

See merge request idf/esp-idf!4605
2019-04-01 21:49:29 +08:00
Jiang Jiang Jian
2ecd007974 Merge branch 'bugfix/btdm_modify_HCI_GET_CMD_BUF_v3.3' into 'release/v3.3'
Component/bt: modify HCI_GET_CMD_BUF (backport v3.3)

See merge request idf/esp-idf!4598
2019-04-01 21:18:18 +08:00
Jiang Jiang Jian
c6e32c1a61 Merge branch 'bugfix/increase_block_scan_time_v3.3' into 'release/v3.3'
wifi: increase the block scan time( backport v3.3)

See merge request idf/esp-idf!4652
2019-04-01 20:54:56 +08:00
Anurag Kar
2f26bb2e65 esp_prov : Catch DBus exception when reading/writing to BLE GATT characteristic
This is useful in the context of provisioning when server initiates disconnection if secure session establishment fails.
2019-04-01 15:43:50 +05:30
Anurag Kar
3be2b430d1 HTTP Server : Added example tests for verifying parser behavior on arbitrary HTTP terminations (LF, CRLF, etc.) 2019-04-01 15:39:15 +05:30
Anurag Kar
ff01bcfd88 HTTP Server : Fix for tolerating LF terminated headers
List of changes:
* When parsing requests, count termination from LF characters only
* Correct memcpy() length parameter in httpd_unrecv() (pointed out by jimparis in GitHub issue thread)
* Use ssize_t to store results of length subtractions during parsing
* Modify some comments to reduce ambiguity

Closes https://github.com/espressif/esp-idf/issues/3182
2019-04-01 15:38:59 +05:30
zhangyanjiao
8442255ccc wifi: increase the block scan time because of changing channel will take at 30ms when BT/WiFi coexist 2019-04-01 14:49:33 +08:00
Jiang Jiang Jian
c92e677da4 Merge branch 'bugfix/modify_wifi_reason_code_v3.3' into 'release/v3.3'
wifi: modify wifi reason code (backport v3.3)

See merge request idf/esp-idf!4648
2019-04-01 14:26:56 +08:00
zhangyanjiao
6d2faf4172 wifi: modify wifi reason code 2019-04-01 11:29:29 +08:00
zhiweijian
826146e985 Component/bt: add mesh beacon adv and svc uuid for duplicate scan exceptional list 2019-03-28 11:13:30 +08:00
Shivani Tipnis
2faf3c9c34 nvs_util: Add support for creation of unique encryption keys
(cherry picked from commit e1f466e708c2c1b825e955ec28b70dc3058f9262)
2019-03-27 18:28:42 +05:30
Shivani Tipnis
3fedc3eb28 nvs_util: Add support for creation of unique encryption keys
(cherry picked from commit 8b88b3303d83f5f03249e7b3410f6ecabaa00396)
2019-03-26 16:14:31 +05:30
Shivani Tipnis
4148beca50 nvs_util: Fix to support write of multiple singlepage big blob data
Closes https://github.com/espressif/esp-idf/issues/3011

(cherry picked from commit 60b5cdde20)
2019-03-26 16:13:15 +05:30
Shivani Tipnis
c71b38c467 nvs_util: Fix to support write of multiple singlepage big blob data
Closes https://github.com/espressif/esp-idf/issues/3011

(cherry picked from commit ce4944edf01b2a4c997eafe36b66d71f98f2fe29)
(cherry picked from commit 76e4ea7f68)
2019-03-26 16:11:38 +05:30
Shivani Tipnis
8e2b189252 nvs_util: Fix to support write of multiple singlepage big blob data Closes https://github.com/espressif/esp-idf/issues/3011
(cherry picked from commit 21688e3bffee80ddfbef5364a44dd1821e28c776)
(cherry picked from commit 3ec0f415a5)
2019-03-26 16:10:18 +05:30
baohongde
dca83700f2 components/bt: Fix warning when disable debug logs or in release mode and improve the code structure 2019-03-26 14:46:36 +08:00
Jiang Jiang Jian
37e131f76b Merge branch 'mesh/decouple_addition_v3.3' into 'release/v3.3'
Decouple Wifi and ESP-Mesh to reduce bin size (backport v3.3)

See merge request idf/esp-idf!4521
2019-03-26 11:04:25 +08:00
Ivan Grokhotkov
c76f00373f Merge branch 'bugfix/cmake_component_path_v3.3' into 'release/v3.3'
cmake: Set COMPONENT_PATH during early expansion of dependencies (v3.3)

See merge request idf/esp-idf!4595
2019-03-25 11:24:42 +08:00
Renz Christian Bagaporo
24a713b3c4 ldgen: fix library path parsing in windows
Closes https://github.com/espressif/esp-idf/issues/3173
2019-03-25 10:12:00 +08:00
zhiweijian
88fe438524 Component/bt: modify HCI_GET_CMD_BUF 2019-03-22 14:59:11 +08:00
chenyudong
7f1fd0b8d3 Decouple Wifi and ESP-Mesh to reduce bin size
Do not link mesh code when mesh is not used
2019-03-22 13:01:11 +08:00
Angus Gratton
2c91bc7a50 cmake: Set COMPONENT_PATH during early expansion of dependencies
Works around bug where components/soc/CMakeLists.txt was testing "EXISTS
${COMPONENT_PATH}/${SOC_NAME}" and this test could pass during early
expansion if COMPONENT_PATH was empty and a directory /esp32 exists
on Windows.

Closes https://github.com/espressif/esp-idf/issues/3195
2019-03-22 10:12:15 +11:00
Ivan Grokhotkov
3cec8d0122 Merge branch 'bugfix/error_in_bootloader_loadprohibited_v3.3' into 'release/v3.3'
esp_tool: Exclude elf-sha256 from bootloader (backport v3.3)

See merge request idf/esp-idf!4560
2019-03-21 18:22:24 +08:00
Jiang Jiang Jian
6381817006 Merge branch 'bugfix/mesh_memory_leak_v3.3' into 'release/v3.3'
mesh: fix memory leak and group send (backport v3.3)

See merge request idf/esp-idf!4517
2019-03-21 11:45:34 +08:00
Jiang Jiang Jian
14a6b33d5e Merge branch 'bugfix/sphinx_build_failure_on_rtd_v3.3' into 'release/v3.3'
docs: Upgraded sphinx package version to prevent build failures on readthedocs…

See merge request idf/esp-idf!4553
2019-03-21 11:44:01 +08:00
Jiang Jiang Jian
6505f82a80 Merge branch 'bugfix/btdm_fix_no_adv_report_when_scaning_with_sleep_enable_v3.3' into 'release/v3.3'
Component/bt: fix no adv report when scaning with sleep enable (backport v3.3)

See merge request idf/esp-idf!4536
2019-03-20 21:40:28 +08:00
Jiang Jiang Jian
c05a0ae6c3 Merge branch 'bugfix/btdm_fix_build_warning_when_bluedroid_disable_log_v3.3' into 'release/v3.3'
Component/bt: fix build warning when bluedroid disable log (backport V3.3)

See merge request idf/esp-idf!4565
2019-03-20 21:22:33 +08:00
Jiang Jiang Jian
2a9555f5dd Merge branch 'bugfix/btdm_fix_blufi_prepare_write_crash_v3.3' into 'release/v3.3'
Component/bt: fix blufi prepare write crash (backport v3.3)

See merge request idf/esp-idf!4562
2019-03-20 18:21:10 +08:00
Angus Gratton
f72df315f7 heap: Add integer overflow checks on MALLOC_CAP_32BIT & MALLOC_CAP_EXEC 2019-03-20 18:30:25 +11:00
chenyudong
e7a263938b mesh: fix memory leak and group send
fix a bug in group send
fix esp_mesh_set_router when router_t not initialized
fix mesh memory leak with invalid option
2019-03-20 15:13:28 +08:00
zhiweijian
3ed0f8e113 Component/bt: fix build warning when bluedroid disable log 2019-03-20 15:02:57 +08:00
zhiweijian
7e1ccb56a7 Component/bt: fix blufi prepare write crash 2019-03-20 14:23:11 +08:00
Konstantin Kondrashov
50a0b00afa esp_tool: Exclude elf-sha256 from bootloader
Closes: IDFGH-690
2019-03-20 12:19:23 +08:00
Jiang Jiang Jian
be8f34065d Merge branch 'bugfix/fix_the_bug_cal_PMK_too_long_v3.3' into 'release/v3.3'
wifi: fix the bug that calculate PMK too long (backport v3.3)

See merge request idf/esp-idf!4530
2019-03-20 11:29:35 +08:00
krzychb
d0eab0f3ee docs: Upgraded sphinx package version to prevent build failures on readthedocs site. Upgraded versions of other packages that are used during documentation build. (backport v3.3) 2019-03-19 17:24:32 +01:00
zhiweijian
7a530be302 Component/bt: fix no adv report when scaning with sleep enable 2019-03-18 17:09:00 +08:00
zhangyanjiao
b692bda09b wifi: fix the bug that when call set_config before connecting to an encrypted AP, PMK will be recalculated 2019-03-18 14:45:33 +08:00
Jiang Jiang Jian
e4a83f856e Merge branch 'bugfix/mdns_add_remove_multiple_srv_master_3.3' into 'release/v3.3'
mdns: fix possible crash if tx packet contained answer to removed service (backport 3.3)

See merge request idf/esp-idf!4480
2019-03-17 15:41:34 +08:00
Jiang Jiang Jian
e25152a031 Merge branch 'bugfix/esp_sha_signing_sha256_v3.3' into 'release/v3.3'
secure boot: Fix esp_sha INT WDT, switch to using mbedTLS API  (backport v3.3)

See merge request idf/esp-idf!4512
2019-03-17 14:40:21 +08:00
Jiang Jiang Jian
885aec7aba Merge branch 'bugfix/bb_watchdog_reset_v3.3' into 'release/v3.3'
esp32: add WiFi baseband watchdog reset

See merge request idf/esp-idf!4486
2019-03-15 18:49:32 +08:00
Jiang Jiang Jian
0c2419d798 Merge branch 'test/fix_some_ut_not_assigned_v3.3' into 'release/v3.3'
test: fix some ut case not assigned (backport v3.3)

See merge request idf/esp-idf!4488
2019-03-15 16:11:53 +08:00
Jiang Jiang Jian
a3a58546bc Merge branch 'bugfix/console_allow_buffered_v3.3' into 'release/v3.3'
console example: use buffered stdout by default (backport v3.3)

See merge request idf/esp-idf!4508
2019-03-15 16:11:30 +08:00
Angus Gratton
2f2f0fbcbd confserver: Send an error response if JSON request is malformatted 2019-03-15 17:37:09 +11:00
Angus Gratton
ec4c75b692 confserver: In protocol V2, a "load" should only send back changes not all items 2019-03-15 17:37:09 +11:00
Angus Gratton
90ddbaac16 confserver: Add support for new V2 protocol
V2 adds:
* Independent result for visibility (showing/hiding menus)
* Includes adding IDs for all items (menus & symbols) in kconfig_menus.json

Still backwards compatible with V1, with some small changes (menu items now listed in results).

Also added some protocol docs, changed the "listening on stdin" message to come after any kconfiglib warnings
2019-03-15 17:37:09 +11:00
Angus Gratton
0176f912b6 esp32: Chunk input blocks for esp_sha() function performance, add perf test 2019-03-15 17:34:06 +11:00
Angus Gratton
615376d14a secure boot: Use mbedtls_sha256() not esp_sha()
Latter is probably compiled into most firmwares already, saves some size.

Ref https://github.com/espressif/esp-idf/issues/3127
2019-03-15 17:34:06 +11:00
Angus Gratton
fe516fb7c2 esp32 hwcrypto: Prevent esp_sha() from disabling interrupts for extended period
* Closes https://github.com/espressif/esp-idf/issues/3127
* Closes IDFGH-681

Also reported at https://esp32.com/viewtopic.php?f=13&t=9506
2019-03-15 17:34:06 +11:00
Angus Gratton
f5c805160b Merge branch 'bugfix/remove_malloc_ble_prov_v3.3' into 'release/v3.3'
(backport v3.3) Protocomm BLE: Make changes in handling BLE read/write requests

See merge request idf/esp-idf!4496
2019-03-15 14:29:18 +08:00
Jiang Jiang Jian
00e3f7f6b6 Merge branch 'bugfix/ble_assert_8192_v3.3' into 'release/v3.3'
fix the bug assert(8192 0) in rwble.c 234

See merge request idf/esp-idf!4490
2019-03-15 14:01:50 +08:00
Angus Gratton
d6b316c375 Merge branch 'feature/trim_idf_ver_to_fit_32bit_field_v3.3' into 'release/v3.3'
tools/test_build_system: Trim IDF_VER to fit a 32-bit field (backport v3.3)

See merge request idf/esp-idf!4497
2019-03-15 11:38:32 +08:00
Ivan Grokhotkov
bc04b1f53b examples: don't enable buffering on stdout in console examples
newlib uses significantly more stack space when printing to an
unbuffered stream. To reduce the amount of stack space required to
use the console, don’t disable buffering. linenoise should support
unbuffered stdout instead.
2019-03-15 11:31:22 +08:00
Ivan Grokhotkov
50ceb45e6f console/linenoise: support buffered stdout 2019-03-15 11:31:22 +08:00
KonstantinKondrashov
646c7a7515 tools/test_build_system: Add tests with long IDF_VER 2019-03-14 15:49:16 +08:00
Konstantin Kondrashov
cc7e91e1a3 cmake: Trim IDF_VER to fit a 32-bit field 2019-03-14 15:49:03 +08:00
Konstantin Kondrashov
725f0a7545 make: Trim IDF_VER to fit a 32-bit field
Closes: https://github.com/espressif/esp-idf/issues/3131
2019-03-14 15:48:33 +08:00
Hrishikesh Dhayagude
bd0984226e Protocomm BLE: Make changes in handling BLE read/write requests
1. Remove unwanted malloc during BLE send response
2. Populate the missing parameters in the response - handle, offset, auth_req
2019-03-14 12:53:52 +05:30
Tian Hao
f330bb50b2 fix the bug assert(8192 0) in rwble.c 234 2019-03-14 11:43:16 +08:00
He Yin Ling
4f1e27fa76 test: fix some ut case not assigned:
we didn't remove UT case file correctly for cmake build. even we use
artifact from make jobs, cmake case file will be used to assign test.
2019-03-14 10:05:50 +08:00
Liu Zhi Fu
16755a2c51 esp32: add WiFi baseband watchdog reset
When WiFi enter into a special status (11b weak mode), then reset
Wifi baseband to recover to normal mode.
2019-03-14 09:28:37 +08:00
David Cermak
936b99d756 mdns: fix possible crash when probing on particular interface with duplicated service instances due to naming conflicts on network
Issue: MDNS server initially sends probing packets to resolve naming confilicts with already registered service instances. In case of a conflict, instance name is altered and probing restarts. Original instance however wasnnot removed from the structure and upon service removal only one entry was removed and a dangling service might have been kept in the structure to bring about a crash.
Resolution: Keep only one instance of a service in the probing structure.

Closes IDF-498
2019-03-13 16:10:27 +01:00
David Cermak
c88cc4950e mdns: enable pcbs before starting service thread to avoid updating pcb's internal variables from concurent tasks
possible race condition: user task runs mdns_init, which enables pcbs while mdns-task already created could execute enable/disable of the same pcbs if an appropriate system event received
2019-03-13 16:10:16 +01:00
David Cermak
54e5e440b1 mdns: fix possible deadlock on mdns deinit calling mdns_free()
mnds_free() initiates stop and delete timer tasks, which after locking the mutex could lead to a dead lock in case timer task executed before deleting the task, as it would wait indefinitelly for unlocking the mutex. This condition is fixed by calling _mdns_stop_timer without locking the mutex, because there's no need to protect any data when stopping and deleting the timer task

Closes https://github.com/espressif/esp-idf/issues/1696
2019-03-13 16:10:03 +01:00
David Cermak
e8bcda3512 mdsn: fix race condition in updating packet data from user task when failed to allocate or queue a new service
Issue: mdns_service_add API allocates and queues an action to be processed in mdns task context; when allocation or queueing fails, allocated structure needs to be freed. Function _mdns_free_service did not only fee all the structures, but also updates packet data.
Resolution: Moved removal of packet data outside of _mdns_free_service function.
2019-03-13 16:09:51 +01:00
David Cermak
35a30072f4 mdns: fix possible crash when packet scheduled to transmit contained service which might have been already removed
packets scheduled to transmit are pushed to action queue and removed from tx_queue_head structure, which is searched for all remaining services and while service is removed, then service questions/asnwers are also removed from this structure. This update fixes possible crash when packet is pushed to action queue, and when service is removed, its answers are removed from tx_queue_head, but not from action queue. this could lead to a crash when the packet is poped from action queue containing questions/answers to already removed (freed) service

Closes IDF-504
2019-03-13 16:09:41 +01:00
Jiang Jiang Jian
edb0374b9d Merge branch 'feature/btdm_add_adv_report_flow_control_v3.3' into 'release/v3.3'
Component/bt: add BLE adv report flow control(Backport v3.3)

See merge request idf/esp-idf!4471
2019-03-13 21:23:09 +08:00
Angus Gratton
78539acdd1 Merge branch 'bugfix/confgen_expr_value_v3.3' into 'release/v3.3'
confgen: Fix bug with JSON metadata conditional range generation (v3.3)

See merge request idf/esp-idf!4469
2019-03-13 16:54:48 +08:00
zhiweijian
a1546e0714 Component/bt: add BLE adv report flow control 2019-03-13 14:58:32 +08:00
Angus Gratton
8ff6afd29f confgen: Fix bug with JSON metadata conditional range generation
When generating JSON metadata for ranges where there are conditional ranges (ie different allowed range
depending on another config setting), the JSON metadata would always have the last named range as
the expression was not evaluated properly.

Thanks to ulfalizer on GitHub for pointing this out.

Closes https://github.com/espressif/esp-idf/issues/2195
2019-03-13 16:48:57 +11:00
10341 changed files with 300957 additions and 2028969 deletions

View File

@@ -19,6 +19,14 @@ trim_trailing_whitespace = false
indent_style = tab
indent_size = 2
[*/freertos/**]
indent_style = tab
indent_size = 4
[{*/freertos/**.S,**/FreeRTOSConfig.h}]
indent_style = space
indent_size = 4
[*.pem]
insert_final_newline = false
@@ -29,7 +37,3 @@ max_line_length = 119
indent_style = space
indent_size = 4
max_line_length = 120
[{*.sh,*.yml,*.yaml}]
indent_style = space
indent_size = 2

32
.flake8
View File

@@ -140,22 +140,17 @@ exclude =
.git,
__pycache__,
# submodules
components/bootloader/subproject/components/micro-ecc/micro-ecc,
components/bt/host/nimble/nimble,
components/cmock/CMock,
components/esptool_py/esptool,
components/expat/expat,
components/json/cJSON,
components/libsodium/libsodium,
components/mbedtls/mbedtls,
components/micro-ecc/micro-ecc,
components/nghttp/nghttp2,
components/openthread/openthread,
components/tinyusb,
components/libsodium/libsodium,
components/json/cJSON,
components/mbedtls/mbedtls,
components/expat/expat,
components/unity/unity,
components/spiffs/spiffs,
components/freemodbus,
examples/build_system/cmake/import_lib/main/lib/tinyxml2,
examples/peripherals/secure_element/atecc608_ecdsa/components/esp-cryptoauthlib,
examples/build_system/cmake/import_lib/main/lib/tinyxml2
# other third-party libraries
tools/kconfig_new/kconfiglib.py,
# autogenerated scripts
components/protocomm/python/constants_pb2.py,
components/protocomm/python/sec0_pb2.py,
@@ -164,10 +159,7 @@ exclude =
components/wifi_provisioning/python/wifi_scan_pb2.py,
components/wifi_provisioning/python/wifi_config_pb2.py,
components/wifi_provisioning/python/wifi_constants_pb2.py,
components/esp_local_ctrl/python/esp_local_ctrl_pb2.py,
examples/provisioning/legacy/custom_config/components/custom_provisioning/python/custom_config_pb2.py,
per-file-ignores =
# Sphinx conf.py files use star imports to setup config variables
docs/conf_common.py: F405,
components/freemodbus/docs/conf_common.py: F405
examples/provisioning/custom_config/components/custom_provisioning/python/custom_config_pb2.py,
# temporary list (should be empty)
tools/esp_app_trace/pylibelf,
tools/mass_mfg/mfg_gen.py,

View File

@@ -1,92 +0,0 @@
---
name: Bug report
about: ESP-IDF crashes, produces incorrect output, or has incorrect behavior
title: ''
labels: ''
assignees: ''
---
----------------------------- Delete below -----------------------------
**Reminder: If your issue is a general question, starts similar to "How do I..", or is related to 3rd party development kits/libs, please discuss this on our community forum at https://esp32.com instead.**
INSTRUCTIONS
============
Before submitting a new issue, please follow the checklist and try to find the answer.
- [ ] I have read the documentation [ESP-IDF Programming Guide](https://docs.espressif.com/projects/esp-idf/en/latest/) and the issue is not addressed there.
- [ ] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
- [ ] I have searched the issue tracker for a similar issue and not found a similar issue.
If the issue cannot be solved after the steps before, please follow these instructions so we can get the needed information to help you in a quick and effective fashion.
1. Fill in all the fields under **Environment** marked with [ ] by picking the correct option for you in each case and deleting the others.
2. Describe your problem.
3. Include [debug logs from the "monitor" tool](https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/tools/idf-monitor.html), or [coredumps](https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/core_dump.html).
4. Providing as much information as possible under **Other items if possible** will help us locate and fix the problem.
5. Use [Markdown](https://guides.github.com/features/mastering-markdown/) (see formatting buttons above) and the Preview tab to check what the issue will look like.
6. Delete these instructions from the above to the below marker lines before submitting this issue.
**IMPORTANT: If you do not follow these instructions and provide the necessary details, your issue may not be resolved.**
----------------------------- Delete above -----------------------------
## Environment
- Development Kit: [ESP32-Wrover-Kit|ESP32-DevKitC|ESP32-PICO-Kit|ESP32-LyraT|ESP32-LyraTD-MSC|none]
- Kit version (for WroverKit/PicoKit/DevKitC): [v1|v2|v3|v4]
- Module or chip used: [ESP32-WROOM-32|ESP32-WROOM-32D|ESP32-WROOM-32U|ESP32-WROVER|ESP32-WROVER-I|ESP32-WROVER-B|ESP32-WROVER-IB|ESP32-SOLO-1|ESP32-PICO-D4|ESP32]
- IDF version (run ``git describe --tags`` to find it):
// v3.2-dev-1148-g96cd3b75c
- Build System: [Make|CMake|idf.py]
- Compiler version (run ``xtensa-esp32-elf-gcc --version`` to find it):
// 1.22.0-80-g6c4433a
- Operating System: [Windows|Linux|macOS]
- (Windows only) environment type: [MSYS2 mingw32|ESP Command Prompt|Plain Command Prompt|PowerShell].
- Using an IDE?: [No|Yes (please give details)]
- Power Supply: [USB|external 5V|external 3.3V|Battery]
## Problem Description
//Detailed problem description goes here.
### Expected Behavior
### Actual Behavior
### Steps to reproduce
1. step1
2. ...
// If possible, attach a picture of your setup/wiring here.
### Code to reproduce this issue
```cpp
// the code should be wrapped in the ```cpp tag so that it will be displayed better.
#include "esp_log.h"
void app_main()
{
}
```
// If your code is longer than 30 lines, [GIST](https://gist.github.com) is preferred.
## Debug Logs
```
Debug log goes here, should contain the backtrace, as well as the reset source if it is a crash.
Please copy the plain text here for us to search the error log. Or attach the complete logs but leave the main part here if the log is *too* long.
```
## Other items if possible
- [ ] sdkconfig file (attach the sdkconfig file from your project folder)
- [ ] elf file in the ``build`` folder (**note this may contain all the code details and symbols of your project.**)
- [ ] coredump (This provides stacks of tasks.)

View File

@@ -1,14 +0,0 @@
blank_issues_enabled: false
contact_links:
- name: ESP-IDF Programming Guide
url: https://docs.espressif.com/projects/esp-idf/en/latest/
about: Documentation for configuring and using ESP-IDF
- name: Espressif documentation page
url: https://www.espressif.com/en/support/download/documents
about: Hardware documentation (datasheets, Technical Reference Manual, etc)
- name: Forum
url: https://esp32.com
about: For questions about using ESP-IDF and/or ESP32 series chips. Please submit all questions starting "How do I..." here.
- name: Hardware-related services
url: https://www.espressif.com/en/products/hardware-services
about: Espressif service providing hardware design and certification support

View File

@@ -1,26 +0,0 @@
---
name: Feature request
about: Suggest an idea for ESP-IDF
title: ''
labels: 'Type: Feature Request'
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
Please give as many details as you can. Include suggestions for useful APIs or interfaces if relevant.
**Additional context**
Add any other context or screenshots about the feature request here.

17
.github/main.workflow vendored Normal file
View File

@@ -0,0 +1,17 @@
workflow "Sync issues to JIRA" {
on = "issues"
resolves = ["Sync to JIRA"]
}
workflow "Sync issue comments to JIRA" {
on = "issue_comment"
resolves = ["Sync to JIRA"]
}
action "Sync to JIRA" {
uses = "espressif/github-actions/sync_issues_to_jira@master"
secrets = ["GITHUB_TOKEN", "JIRA_URL", "JIRA_USER", "JIRA_PASS"]
env = {
JIRA_PROJECT = "IDFGH"
}
}

View File

@@ -1,75 +0,0 @@
name: docker
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
on:
push:
branches:
- 'master'
- 'release/*'
tags:
- 'v*.*'
env:
# Platforms to build the image for
BUILD_PLATFORMS: linux/amd64,linux/arm64
DOCKERHUB_REPO: ${{ github.repository_owner }}/idf
jobs:
docker:
# Disable the job in forks
if: ${{ github.repository_owner == 'espressif' }}
runs-on: ubuntu-latest
steps:
# Depending on the branch/tag, set CLONE_BRANCH_OR_TAG variable (used in the Dockerfile
# as a build arg) and TAG_NAME (used when tagging the image).
#
# The following 3 steps cover the alternatives (tag, release branch, master branch):
- name: Set variables (tags)
if: ${{ github.ref_type == 'tag' }}
run: |
echo "CLONE_BRANCH_OR_TAG=$GITHUB_REF_NAME" >> $GITHUB_ENV
echo "TAG_NAME=$GITHUB_REF_NAME" >> $GITHUB_ENV
- name: Set variables (release branches)
if: ${{ github.ref_type == 'branch' && startsWith(github.ref_name, 'release/') }}
run: |
echo "CLONE_BRANCH_OR_TAG=$GITHUB_REF_NAME" >> $GITHUB_ENV
echo "TAG_NAME=release-${GITHUB_REF_NAME##release/}" >> $GITHUB_ENV
- name: Set variables (main branch)
if: ${{ github.ref_type == 'branch' && github.ref_name == 'master' }}
run: |
echo "CLONE_BRANCH_OR_TAG=master" >> $GITHUB_ENV
echo "TAG_NAME=latest" >> $GITHUB_ENV
# Display the variables set above, just in case.
- name: Check variables
run: |
echo "CLONE_BRANCH_OR_TAG: $CLONE_BRANCH_OR_TAG"
echo "CHECKOUT_REF: $CHECKOUT_REF"
echo "TAG_NAME: $TAG_NAME"
# The following steps are the standard boilerplate from
# https://github.com/marketplace/actions/build-and-push-docker-images
- name: Checkout
uses: actions/checkout@v3
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up QEMU for multiarch builds
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Build and push
uses: docker/build-push-action@v3
with:
context: tools/docker
push: true
tags: ${{ env.DOCKERHUB_REPO }}:${{ env.TAG_NAME }}
platforms: ${{ env.BUILD_PLATFORMS }}
build-args: |
IDF_CLONE_URL=${{ github.server_url }}/${{ github.repository }}.git
IDF_CLONE_BRANCH_OR_TAG=${{ env.CLONE_BRANCH_OR_TAG }}

View File

@@ -1,19 +0,0 @@
name: Sync issue comments to JIRA
# This workflow will be triggered when new issue comment is created (including PR comments)
on: issue_comment
jobs:
sync_issue_comments_to_jira:
name: Sync Issue Comments to Jira
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Sync issue comments to JIRA
uses: espressif/github-actions/sync_issues_to_jira@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
JIRA_PASS: ${{ secrets.JIRA_PASS }}
JIRA_PROJECT: IDFGH
JIRA_URL: ${{ secrets.JIRA_URL }}
JIRA_USER: ${{ secrets.JIRA_USER }}

View File

@@ -1,19 +0,0 @@
name: Sync issues to Jira
# This workflow will be triggered when a new issue is opened
on: issues
jobs:
sync_issues_to_jira:
name: Sync issues to Jira
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Sync GitHub issues to Jira project
uses: espressif/github-actions/sync_issues_to_jira@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
JIRA_PASS: ${{ secrets.JIRA_PASS }}
JIRA_PROJECT: IDFGH
JIRA_URL: ${{ secrets.JIRA_URL }}
JIRA_USER: ${{ secrets.JIRA_USER }}

View File

@@ -1,24 +0,0 @@
name: Sync remain PRs to Jira
# This workflow will be triggered every hour, to sync remaining PRs (i.e. PRs with zero comment) to Jira project
# Note that, PRs can also get synced when new PR comment is created
on:
schedule:
- cron: "0 * * * *"
jobs:
sync_prs_to_jira:
name: Sync PRs to Jira
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Sync PRs to Jira project
uses: espressif/github-actions/sync_issues_to_jira@master
with:
cron_job: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
JIRA_PASS: ${{ secrets.JIRA_PASS }}
JIRA_PROJECT: IDFGH
JIRA_URL: ${{ secrets.JIRA_URL }}
JIRA_USER: ${{ secrets.JIRA_USER }}

View File

@@ -1,33 +0,0 @@
name: Python CI
# This workflow will be triggered when a PR modifies some python relevant files
on:
pull_request:
paths:
- "**.py"
- "requirements.txt"
jobs:
python_lint:
name: python lint
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.6, 3.7, 3.8]
steps:
- name: Checkout
uses: actions/checkout@master
- name: Set up Python environment
uses: actions/setup-python@master
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
export IDF_PATH=${GITHUB_WORKSPACE}
pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
flake8 . --config=.flake8 --benchmark

55
.gitignore vendored
View File

@@ -21,73 +21,56 @@ GPATH
# MacOS directory files
.DS_Store
# Components Unit Test Apps files
components/**/build
components/**/sdkconfig
components/**/sdkconfig.old
# Example project files
examples/**/sdkconfig
examples/**/sdkconfig.old
examples/**/build
# Doc build artifacts
docs/_build/
docs/*/_build/
docs/*/doxygen-warning-log.txt
docs/*/sphinx-warning-log.txt
docs/*/sphinx-warning-log-sanitized.txt
docs/*/xml/
docs/*/xml_in/
docs/*/man/
docs/doxygen_sqlite3.db
# Downloaded font files
docs/_static/DejaVuSans.ttf
docs/_static/NotoSansSC-Regular.otf
# Unit test app files
tools/unit-test-app/sdkconfig
tools/unit-test-app/sdkconfig.old
tools/unit-test-app/build
tools/unit-test-app/builds
tools/unit-test-app/output
tools/unit-test-app/test_configs
# Unit Test CMake compile log folder
log_ut_cmake
# test application build files
tools/test_apps/**/build
tools/test_apps/**/sdkconfig
tools/test_apps/**/sdkconfig.old
# IDF monitor test
tools/test_idf_monitor/outputs
TEST_LOGS
# AWS IoT Examples require device-specific certs/keys
examples/protocols/aws_iot/*/main/certs/*.pem.*
# gcov coverage reports
*.gcda
*.gcno
coverage.info
coverage_report/
# Windows tools installer build
tools/windows/tool_setup/.*
tools/windows/tool_setup/input
tools/windows/tool_setup/dl
tools/windows/tool_setup/keys
tools/windows/tool_setup/Output
test_multi_heap_host
# VS Code Settings
.vscode/
# VIM files
*.swp
*.swo
# Clion IDE CMake build & config
.idea/
cmake-build-*/
# Results for the checking of the Python coding style and static analysis
.mypy_cache
# Results for the checking of the Python coding style
flake8_output.txt
# ESP-IDF default build directory name
# ESP-IDF library
build
# lock files for examples and components
dependencies.lock
# managed_components for examples
managed_components

File diff suppressed because it is too large Load Diff

View File

@@ -1,225 +0,0 @@
# IDF CI
- [IDF CI](#idf-ci)
- [General Workflow](#general-workflow)
- [What if Expected Jobs ARE NOT Created?](#what-if-expected-jobs-are-not-created)
- [MR labels for additional jobs](#mr-labels-for-additional-jobs)
- [Supported MR Labels](#supported-mr-labels)
- [How to trigger a `detached` pipeline without pushing new commits?](#how-to-trigger-a-detached-pipeline-without-pushing-new-commits)
- [How to Develop With `rules.yml`?](#how-to-develop-with-rulesyml)
- [General Concepts](#general-concepts)
- [How to Add a New `Job`?](#how-to-add-a-new-job)
- [How to Add a New `Rules` Template?](#how-to-add-a-new-rules-template)
- [How to Add a New `if` Anchor?](#how-to-add-a-new-if-anchor)
- [Naming Rules](#naming-rules)
- [Common Naming Rules](#common-naming-rules)
- [`if` Anchors Naming Rules](#if-anchors-naming-rules)
- [`rules` Template Naming Rules](#rules-template-naming-rules)
- [Reusable Shell Script `tools/ci/utils.sh`](#reusable-shell-script-toolsciutilssh)
- [Functions](#functions)
- [CI Job Related](#ci-job-related)
- [Shell Script Related](#shell-script-related)
## General Workflow
1. Push to a remote branch
2. Create an MR, choose related labels (not required)
3. A `detached` pipeline will be created.
4. if you push a new commit, a new pipeline will be created automatically.
## What if Expected Jobs ARE NOT Created?
1. check the file patterns
If you found a job that is not running as expected with some file changes, a git commit to improve the `pattern` will be appreciated.
2. please add MR labels to run additional tests, currently we have to do this only for `target-test` jobs, please use it as few as possible. Our final goal is to remove all the labels and let the file changes decide everything!
## MR labels for additional jobs
### Supported MR Labels
- `build`
- `build_docs`
- `component_ut[_esp32/esp32s2/...]`
- `custom_test[_esp32/esp32s2/...]`
- `docker`
- `docs`
- `example_test[_esp32/esp32s2/...]`
- `fuzzer_test`
- `host_test`
- `integration_test[_wifi/ble]`
- `iperf_stress_test`
- `macos`
- `macos_test`
- `nvs_coverage`
- `submodule`
- `unit_test[_esp32/esp32s2/...]`
- `weekend_test`
- `windows`
There are two general labels (not recommended since these two labels will trigger a lot of jobs)
- `target_test`: includes all target for `example_test`, `custom_test`, `component_ut`, `unit_test`, `integration_test`
- `all_test`: includes all test labels
### How to trigger a `detached` pipeline without pushing new commits?
Go to MR web page -> `Pipelines` tab -> click `Run pipeline` button.
In very rare case, this tab will not show up because no merge_request pipeline is created before. Please use web API then.
```shell
curl -X POST --header "PRIVATE-TOKEN: [YOUR PERSONAL ACCESS TOKEN]" [GITLAB_SERVER]/api/v4/projects/103/merge_requests/[MERGE_REQUEST_IID]/pipelines
```
## How to Develop With `rules.yml`?
### General Concepts
- `pattern`: Defined in an array. A GitLab job will be created if the changed files in this MR matched one of the patterns. For example:
```yaml
.patterns-python-files: &patterns-python-files
- "**/*.py"
```
- `label`: Defined in an if clause, similar as the previous bot command. A GitLab job will be created if the pipeline variables contains variables in `BOT_LABEL_xxx` format (DEPRECATED) or included in the MR labels. For example:
```yaml
.if-label-build_docs: &if-label-build_docs
if: '$BOT_LABEL_BUILD_DOCS || $CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*build_docs(?:,[^,\n\r]+)*$/i'
```
- `rule`: A combination of various patterns, and labels. It will be used by GitLab YAML `extends` keyword to tell GitLab in what conditions will this job be created. For example:
```yaml
.rules:build:docs:
rules:
- <<: *if-protected
- <<: *if-label-build_docs
- <<: *if-label-docs
- <<: *if-dev-push
changes: *patterns-docs
```
An example for GitLab job on how to use extends:
```yaml
check_docs_lang_sync:
extends:
- .pre_check_job_template
- .rules:build:docs
script:
- cd docs
- ./check_lang_folder_sync.sh
```
### How to Add a New `Job`?
check if there's a suitable `.rules:<rules-you-need>` template
1. if there is, put this in the job `extends`. All done, now you can close this window. (`extends` could be array or string)
2. if there isn't
1. check [How to Add a New `Rules` Template?](#how-to-add-a-new-rules-template), create a suitable one
2. follow step 1
### How to Add a New `Rules` Template?
check if this rule is related to `labels`, `patterns`
1. if it is, please refer to [dependencies/README.md](./dependencies/README.md) and add new rules by auto-generating
2. if it isn't, please continue reading
check if there's a suitable `.if-<if-anchor-you-need>` anchor
1. if there is, create a rule following [`rules` Template Naming Rules](#rules-template-naming-rules).For detail information, please refer to [GitLab Documentation `rules-if`](https://docs.gitlab.com/ee/ci/yaml/README.html#rulesif). Here's an example.
```yaml
.rules:dev:
rules:
- <<: *if-trigger
- <<: *if-dev-push
```
2. if there isn't
1. check [How to Add a New `if` Anchor?](#how-to-add-a-new-if-anchor), create a suitable one
2. follow step 1
### How to Add a New `if` Anchor?
Create an `if` anchor following [`if` Anchors Naming Rules](#if-anchors-naming-rules). For detailed information about how to write the condition clause, please refer to [GitLab Documentation `only/except (advanced)](https://docs.gitlab.com/ee/ci/yaml/README.html#onlyexcept-advanced). Here's an example.
```yaml
.if-schedule: &if-schedule:
if: '$CI_PIPELINE_SOURCE == "schedule"'
```
### Naming Rules
#### Common Naming Rules
if a phrase has multi words, use `_` to concatenate them.
> e.g. `regular_test`
if a name has multi phrases, use `-` to concatenate them.
> e.g. `regular_test-example_test`
#### `if` Anchors Naming Rules
- if it's a label: `.if-label-<label_name>`
- if it's a ref: `.if-ref-<ref_name>`
- if it's a branch: `.if-branch-<branch_name>`
- if it's a tag: `.if-tag-<tag_name>`
- if it's multi-type combination: `.if-ref-<release_name>-branch-<branch_name>`
**Common Phrases/Abbreviations**
- `no_label`
`$BOT_TRIGGER_WITH_LABEL == null`
- `protected`
`($CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_BRANCH =~ /^release\/v/ || $CI_COMMIT_TAG =~ /^v\d+\.\d+(\.\d+)?($|-)/)`
- `target_test`
a combination of `example_test`, `custom_test`, `unit_test`, `component_ut`, `integration_test` and all targets
#### `rules` Template Naming Rules
- if it's tag related: `.rules:tag:<tag_1>-<tag_2>`
- if it's label related: `.rules:labels:<label_1>-<label_2>`
- if it's test related: `.rules:test:<test_type>`
- if it's build related: `.rules:build:<build_type>`
- if it's pattern related: `.rules:patterns:<patterns>`
## Reusable Shell Script `tools/ci/utils.sh`
It is used to put all the reusable shell scripts as small functions. If you want to set `before_script: []` for you job, now you can set `extends: .before_script_slim` instead. it will only run `source tools/ci/utils.sh`
If you're developing CI shell scripts, you can use these functions without `source` them. They're already included in all `before_script`
To run these commands in shell script locally, place `source tools/ci/utils.sh` at the very beginning.
### Functions
#### CI Job Related
- `add_gitlab_ssh_keys`
- `add_github_ssh_keys`
- `add_doc_server_ssh_keys`
- `fetch_submodules`
- `get_all_submodules`
#### Shell Script Related
- `error`: log in red color
- `warning`: log in orange color
- `info`: log in green color
- `run_cmd`: run the command with duration seconds info
- `retry_failed`: run the command with duration seconds info, retry when failed

View File

@@ -1,171 +0,0 @@
.assign_test_template:
image: $CI_DOCKER_REGISTRY/ubuntu-test-env$BOT_DOCKER_IMAGE_TAG
stage: assign_test
tags:
- assign_test
variables:
SUBMODULES_TO_FETCH: components/esptool_py/esptool
artifacts:
paths:
- ${TEST_DIR}/test_configs
- ${BUILD_DIR}/artifact_index.json
when: always
expire_in: 1 week
script:
- python tools/ci/python_packages/ttfw_idf/IDFAssignTest.py $TEST_TYPE $TEST_DIR -c $CI_TARGET_TEST_CONFIG_FILE -o $TEST_DIR/test_configs
assign_example_test:
extends:
- .assign_test_template
- .rules:build:example_test
needs:
- job: build_examples_cmake_esp32
artifacts: false
optional: true
- job: build_examples_cmake_esp32s2
artifacts: false
optional: true
- job: build_examples_cmake_esp32c3
artifacts: false
optional: true
- job: build_examples_cmake_esp32s3
artifacts: false
optional: true
variables:
TEST_TYPE: example_test
TEST_DIR: ${CI_PROJECT_DIR}/examples
BUILD_DIR: ${CI_PROJECT_DIR}/build_examples
assign_custom_test:
extends:
- .assign_test_template
- .rules:build:custom_test
needs:
- job: build_test_apps_esp32
artifacts: false
optional: true
- job: build_test_apps_esp32s2
artifacts: false
optional: true
- job: build_test_apps_esp32c3
artifacts: false
optional: true
- job: build_test_apps_esp32s3
artifacts: false
optional: true
variables:
TEST_TYPE: custom_test
TEST_DIR: ${CI_PROJECT_DIR}/tools/test_apps
BUILD_DIR: ${CI_PROJECT_DIR}/build_test_apps
assign_component_ut:
extends:
- .assign_test_template
- .rules:build:component_ut
needs:
- job: build_component_ut_esp32
artifacts: false
optional: true
- job: build_component_ut_esp32s2
artifacts: false
optional: true
- job: build_component_ut_esp32c3
artifacts: false
optional: true
- job: build_component_ut_esp32s3
artifacts: false
optional: true
variables:
TEST_TYPE: component_ut
TEST_DIR: ${CI_PROJECT_DIR}/component_ut
BUILD_DIR: ${CI_PROJECT_DIR}/build_component_ut
script:
# COMPONENT_UT_DIRS is set by `set_component_ut_vars` in `utils.sh`
- set_component_ut_vars
- python tools/ci/python_packages/ttfw_idf/IDFAssignTest.py $TEST_TYPE $COMPONENT_UT_DIRS -c $CI_TARGET_TEST_CONFIG_FILE -o $TEST_DIR/test_configs
assign_unit_test:
extends:
- .assign_test_template
- .rules:build:unit_test
needs:
- job: build_esp_idf_tests_cmake_esp32
optional: true
- job: build_esp_idf_tests_cmake_esp32s2
optional: true
- job: build_esp_idf_tests_cmake_esp32c3
optional: true
- job: build_esp_idf_tests_cmake_esp32s3
optional: true
variables:
TEST_TYPE: unit_test
TEST_DIR: ${CI_PROJECT_DIR}/components/idf_test/unit_test
BUILD_DIR: ${CI_PROJECT_DIR}/tools/unit-test-app/builds
script:
- python tools/ci/python_packages/ttfw_idf/IDFAssignTest.py $TEST_TYPE $TEST_DIR -c $CI_TARGET_TEST_CONFIG_FILE -o $TEST_DIR/test_configs
assign_integration_test:
extends:
- .assign_test_template
- .rules:test:integration_test
- .before_script_minimal
image: ${CI_INTEGRATION_TEST_ENV_IMAGE}
needs:
- build_ssc_esp32
- build_ssc_esp32c3
artifacts:
paths:
- $TEST_DIR/test_configs
variables:
TEST_DIR: ${CI_PROJECT_DIR}/tools/ci/integration_test
BUILD_DIR: ${CI_PROJECT_DIR}/SSC/ssc_bin
INTEGRATION_TEST_CASE_PATH: "${CI_PROJECT_DIR}/auto_test_script/TestCaseFiles"
ASSIGN_TEST_CASE_SCRIPT: "${CI_PROJECT_DIR}/auto_test_script/bin/CIAssignTestCases.py"
PYTHONPATH: ${CI_PROJECT_DIR}/auto_test_script/packages
GIT_LFS_SKIP_SMUDGE: 1
script:
- add_gitlab_ssh_keys
# clone test script to assign tests
- retry_failed git clone ${CI_AUTO_TEST_SCRIPT_REPO_URL} auto_test_script
- python $CHECKOUT_REF_SCRIPT auto_test_script auto_test_script
- cd auto_test_script
- ./tools/ci/setup_idfci.sh
# assign integration test cases
- python ${ASSIGN_TEST_CASE_SCRIPT} -t ${INTEGRATION_TEST_CASE_PATH} -c $CI_TARGET_TEST_CONFIG_FILE -b ${BUILD_DIR} -o $TEST_DIR/test_configs
update_test_cases:
extends: .rules:ref:master-schedule
stage: assign_test
image: $CI_DOCKER_REGISTRY/ubuntu-test-env
tags:
- deploy_test
needs:
- build_esp_idf_tests_cmake_esp32
- build_esp_idf_tests_cmake_esp32s2
- build_esp_idf_tests_cmake_esp32s3
- build_esp_idf_tests_cmake_esp32c3
artifacts:
when: always
paths:
- ${CI_PROJECT_DIR}/test-management/*.log
expire_in: 1 week
variables:
SUBMODULES_TO_FETCH: "components/esptool_py/esptool"
UNIT_TEST_DIR: "${CI_PROJECT_DIR}/components/idf_test/unit_test"
BOT_ACCOUNT_CONFIG_FILE: "${CI_PROJECT_DIR}/test-management/Config/Account.local.yml"
PYTHONPATH: ${CI_PROJECT_DIR}/auto_test_script/packages
PYTHON_VER: 3.7.7
script:
- export GIT_SHA=$(echo ${PIPELINE_COMMIT_SHA} | cut -c 1-8)
- retry_failed git clone $TEST_MANAGEMENT_REPO
- python $CHECKOUT_REF_SCRIPT test-management test-management
- cd test-management
- echo $BOT_JIRA_ACCOUNT > ${BOT_ACCOUNT_CONFIG_FILE}
# update unit test cases
- export UNIT_TEST_CASE_FILES=$(find $UNIT_TEST_DIR -maxdepth 1 -name "*.yml" | xargs)
- python ImportTestCase.py $JIRA_TEST_MANAGEMENT_PROJECT unity -d $UNIT_TEST_CASE_FILES -r $GIT_SHA
# update example test cases
- python ImportTestCase.py $JIRA_TEST_MANAGEMENT_PROJECT tiny_test_fw -d ${CI_PROJECT_DIR}/examples -r $GIT_SHA
- python ImportTestCase.py $JIRA_TEST_MANAGEMENT_PROJECT tiny_test_fw -d ${CI_PROJECT_DIR}/tools/test_apps -r $GIT_SHA
# organize test cases
- python OrganizeTestCases.py $JIRA_TEST_MANAGEMENT_PROJECT

View File

@@ -1,389 +0,0 @@
.build_template:
stage: build
image: $ESP_ENV_IMAGE
tags:
- build
variables:
SIZE_INFO_LOCATION: "$CI_PROJECT_DIR/size_info.txt"
# Enable ccache for all build jobs. See configure_ci_environment.sh for more ccache related settings.
IDF_CCACHE_ENABLE: "1"
after_script:
# Show ccache statistics if enabled globally
- test "$CI_CCACHE_STATS" == 1 && test -n "$(which ccache)" && ccache --show-stats || true
dependencies: []
.build_template_app_template:
extends: .build_template
variables:
LOG_PATH: "${CI_PROJECT_DIR}/log_template_app"
BUILD_PATH: "${CI_PROJECT_DIR}/build_template_app"
BUILD_DIR: "@t/@w"
BUILD_LOG_MAKE: "${LOG_PATH}/make_@t_@w.txt"
BUILD_LOG_CMAKE: "${LOG_PATH}/cmake_@t_@w.txt"
BUILD_COMMAND_ARGS: ""
artifacts:
when: always
paths:
- log_template_app/*
- size_info.txt
- build_template_app/**/size.json
script:
# Set the variable for 'esp-idf-template' testing
- ESP_IDF_TEMPLATE_GIT=${ESP_IDF_TEMPLATE_GIT:-"https://github.com/espressif/esp-idf-template.git"}
- retry_failed git clone ${ESP_IDF_TEMPLATE_GIT}
# Try to use the same branch name for esp-idf-template that we're
# using on esp-idf. If it doesn't exist then just stick to the default branch
- python $CHECKOUT_REF_SCRIPT esp-idf-template esp-idf-template
- export PATH="$IDF_PATH/tools:$PATH"
- export EXTRA_CFLAGS=${PEDANTIC_CFLAGS}
- export EXTRA_CXXFLAGS=${PEDANTIC_CXXFLAGS}
# Only do the default cmake build for each target, remaining part are done in the build_template_app job
- tools/ci/build_template_app.sh ${BUILD_COMMAND_ARGS}
# build-related-pre-check-jobs ------------------------------------------------
# Build at least one project for each target at earliest stage to reduce build cost for obvious failing commits
fast_template_app:
extends:
- .build_template_app_template
- .rules:build:target_test
stage: pre_check
variables:
BUILD_COMMAND_ARGS: "-p"
#------------------------------------------------------------------------------
.build_ssc_template:
extends:
- .build_template
- .rules:build:integration_test
artifacts:
paths:
- SSC/ssc_bin
expire_in: 1 week
script:
- retry_failed git clone $SSC_REPOSITORY
- python $CHECKOUT_REF_SCRIPT SSC SSC
- cd SSC
- MAKEFLAGS= ./ci_build_ssc.sh $TARGET_NAME
build_ssc_esp32:
extends: .build_ssc_template
parallel: 3
variables:
TARGET_NAME: "ESP32"
build_ssc_esp32s2:
extends: .build_ssc_template
parallel: 2
variables:
TARGET_NAME: "ESP32S2"
build_ssc_esp32c3:
extends: .build_ssc_template
parallel: 3
variables:
TARGET_NAME: "ESP32C3"
build_ssc_esp32s3:
extends: .build_ssc_template
parallel: 3
variables:
TARGET_NAME: "ESP32S3"
.build_esp_idf_tests_cmake_template:
extends: .build_template
dependencies: # set dependencies to null to avoid missing artifacts issue
needs:
- job: fast_template_app
artifacts: false
- scan_tests
artifacts:
paths:
- tools/unit-test-app/output/${IDF_TARGET}
- tools/unit-test-app/builds/*.json
- tools/unit-test-app/builds/${IDF_TARGET}/*/size.json
- components/idf_test/unit_test/*.yml
- $LOG_PATH
- $SIZE_INFO_LOCATION
when: always
expire_in: 4 days
variables:
LOG_PATH: "$CI_PROJECT_DIR/log_ut_cmake"
BUILD_PATH: ${CI_PROJECT_DIR}/tools/unit-test-app/builds
OUTPUT_PATH: ${CI_PROJECT_DIR}/tools/unit-test-app/output
BUILD_SYSTEM: "cmake"
TEST_TYPE: "unit_test"
PYTHON_VER: 3.6.13
LDGEN_CHECK_MAPPING: 1
script:
- ${IDF_PATH}/tools/ci/find_apps_build_apps.sh
- cd $CI_PROJECT_DIR/tools/unit-test-app
- python tools/UnitTestParser.py ${BUILD_PATH} ${CI_NODE_INDEX:-1}
build_esp_idf_tests_cmake_esp32:
extends:
- .build_esp_idf_tests_cmake_template
- .rules:build:unit_test-esp32
parallel: 2
variables:
IDF_TARGET: esp32
build_esp_idf_tests_cmake_esp32s2:
extends:
- .build_esp_idf_tests_cmake_template
- .rules:build:unit_test-esp32s2
parallel: 2
variables:
IDF_TARGET: esp32s2
build_esp_idf_tests_cmake_esp32s3:
extends:
- .build_esp_idf_tests_cmake_template
- .rules:build:unit_test-esp32s3
variables:
IDF_TARGET: esp32s3
build_esp_idf_tests_cmake_esp32c3:
extends:
- .build_esp_idf_tests_cmake_template
- .rules:build:unit_test-esp32c3
variables:
IDF_TARGET: esp32c3
.build_examples_template:
extends: .build_template
dependencies: # set dependencies to null to avoid missing artifacts issue
needs:
- job: fast_template_app
artifacts: false
- scan_tests
variables:
TEST_PREFIX: examples
TEST_RELATIVE_DIR: examples
SCAN_TEST_JSON: ${CI_PROJECT_DIR}/${TEST_RELATIVE_DIR}/test_configs/scan_${IDF_TARGET}_${BUILD_SYSTEM}.json
TEST_TYPE: example_test
LOG_PATH: ${CI_PROJECT_DIR}/log_${TEST_PREFIX}
BUILD_PATH: ${CI_PROJECT_DIR}/build_${TEST_PREFIX}
PYTHON_VER: 3.6.13
LDGEN_CHECK_MAPPING: 1
script:
# it's not possible to build 100% out-of-tree and have the "artifacts"
# mechanism work, but this is the next best thing
- ${IDF_PATH}/tools/ci/find_apps_build_apps.sh
build_examples_make:
extends:
- .build_examples_template
- .rules:build:example_test-esp32
stage: host_test
# This is a workaround for a rarely encountered issue with building examples in CI.
# Probably related to building of Kconfig in 'make clean' stage
retry: 1
parallel: 8
artifacts:
paths:
- $LOG_PATH
- build_${TEST_PREFIX}/*/*/*/build/size.json
- $SIZE_INFO_LOCATION
when: always
expire_in: 4 days
variables:
BUILD_SYSTEM: make
IDF_TARGET: esp32 # currently we only support esp32
# same as above, but for CMake
.build_examples_cmake_template:
extends: .build_examples_template
artifacts:
paths:
- build_${TEST_PREFIX}/list.json
- build_${TEST_PREFIX}/list_job_*.json
- build_${TEST_PREFIX}/*/*/*/sdkconfig
- build_${TEST_PREFIX}/*/*/*/build/size.json
- build_${TEST_PREFIX}/*/*/*/build/*.bin
- build_${TEST_PREFIX}/*/*/*/build/*.elf
- build_${TEST_PREFIX}/*/*/*/build/*.map
- build_${TEST_PREFIX}/*/*/*/build/flasher_args.json
- build_${TEST_PREFIX}/*/*/*/build/bootloader/*.bin
- build_${TEST_PREFIX}/*/*/*/build/partition_table/*.bin
- $LOG_PATH
- $SIZE_INFO_LOCATION
when: always
expire_in: 4 days
variables:
BUILD_SYSTEM: cmake
build_examples_cmake_esp32:
extends:
- .build_examples_cmake_template
- .rules:build:example_test-esp32
parallel: 10
variables:
IDF_TARGET: esp32
build_examples_cmake_esp32s2:
extends:
- .build_examples_cmake_template
- .rules:build:example_test-esp32s2
parallel: 8
variables:
IDF_TARGET: esp32s2
build_examples_cmake_esp32s3:
extends:
- .build_examples_cmake_template
- .rules:build:example_test-esp32s3
parallel: 8
variables:
IDF_TARGET: esp32s3
build_examples_cmake_esp32c3:
extends:
- .build_examples_cmake_template
- .rules:build:example_test-esp32c3
parallel: 8
variables:
IDF_TARGET: esp32c3
.build_test_apps_template:
extends: .build_examples_cmake_template
variables:
TEST_PREFIX: test_apps
TEST_RELATIVE_DIR: tools/test_apps
TEST_TYPE: custom_test
script:
- ${IDF_PATH}/tools/ci/find_apps_build_apps.sh
build_test_apps_esp32:
extends:
- .build_test_apps_template
- .rules:build:custom_test-esp32
parallel: 8
variables:
IDF_TARGET: esp32
build_test_apps_esp32s2:
extends:
- .build_test_apps_template
- .rules:build:custom_test-esp32s2
parallel: 8
variables:
IDF_TARGET: esp32s2
build_test_apps_esp32s3:
extends:
- .build_test_apps_template
- .rules:build:custom_test-esp32s3
parallel: 8
variables:
IDF_TARGET: esp32s3
build_test_apps_esp32c3:
extends:
- .build_test_apps_template
- .rules:build:custom_test-esp32c3
parallel: 8
variables:
IDF_TARGET: esp32c3
.build_component_ut_template:
extends: .build_test_apps_template
variables:
TEST_PREFIX: component_ut
TEST_RELATIVE_DIR: component_ut
build_component_ut_esp32:
extends:
- .build_component_ut_template
- .rules:build:component_ut-esp32
variables:
IDF_TARGET: esp32
build_component_ut_esp32s2:
extends:
- .build_component_ut_template
- .rules:build:component_ut-esp32s2
variables:
IDF_TARGET: esp32s2
build_component_ut_esp32s3:
extends:
- .build_component_ut_template
- .rules:build:component_ut-esp32s3
variables:
IDF_TARGET: esp32s3
build_component_ut_esp32c3:
extends:
- .build_component_ut_template
- .rules:build:component_ut-esp32c3
variables:
IDF_TARGET: esp32c3
.test_build_system_template:
stage: host_test
extends:
- .build_template
- .rules:build
needs:
- job: fast_template_app
artifacts: false
script:
- ${IDF_PATH}/tools/ci/test_configure_ci_environment.sh
- rm -rf test_build_system
- mkdir test_build_system
- cd test_build_system
- ${IDF_PATH}/tools/ci/${SHELL_TEST_SCRIPT}
test_build_system:
extends: .test_build_system_template
variables:
SHELL_TEST_SCRIPT: test_build_system.sh
test_build_system_cmake:
extends: .test_build_system_template
variables:
SHELL_TEST_SCRIPT: test_build_system_cmake.sh
test_build_system_cmake_macos:
extends:
- .test_build_system_template
- .before_script_macos
- .rules:build:macos
tags:
- macos_shell
variables:
SHELL_TEST_SCRIPT: test_build_system_cmake.sh
build_docker:
extends:
- .before_script_minimal
- .rules:build:docker
stage: host_test
needs: []
image: espressif/docker-builder:1
tags:
- build_docker_amd64_brno
variables:
DOCKER_TMP_IMAGE_NAME: "idf_tmp_image"
script:
- export LOCAL_CI_REPOSITORY_URL=$CI_REPOSITORY_URL
- if [ -n "$LOCAL_GITLAB_HTTPS_HOST" ]; then export LOCAL_CI_REPOSITORY_URL="https://gitlab-ci-token:${CI_JOB_TOKEN}@${LOCAL_GITLAB_HTTPS_HOST}/${CI_PROJECT_PATH}"; fi
- if [ -n "$LOCAL_GIT_MIRROR" ]; then export LOCAL_CI_REPOSITORY_URL="${LOCAL_GIT_MIRROR}/${CI_PROJECT_PATH}"; fi
- echo "Using repository at $LOCAL_CI_REPOSITORY_URL"
- export DOCKER_BUILD_ARGS="--build-arg IDF_CLONE_URL=${LOCAL_CI_REPOSITORY_URL} --build-arg IDF_CLONE_BRANCH_OR_TAG=${CI_COMMIT_REF_NAME} --build-arg IDF_CHECKOUT_REF=${CI_COMMIT_TAG:-$PIPELINE_COMMIT_SHA}"
# Build
- docker build --tag ${DOCKER_TMP_IMAGE_NAME} ${DOCKER_BUILD_ARGS} tools/docker/
# We can't mount $PWD/examples/get-started/blink into the container, see https://gitlab.com/gitlab-org/gitlab-ce/issues/41227.
# The workaround mentioned there works, but leaves around directories which need to be cleaned up manually.
# Therefore, build a copy of the example located inside the container.
- docker run --rm --workdir /opt/esp/idf/examples/get-started/blink ${DOCKER_TMP_IMAGE_NAME} idf.py build
# This job builds template app with permutations of targets and optimization levels
build_template_app:
extends:
- .build_template_app_template
- .rules:build
stage: host_test
needs:
- job: fast_template_app
artifacts: false

View File

@@ -1,100 +0,0 @@
# How the `generate_rules.py` works
## Functionalities
This script can do only two things:
1. Auto-generate some labels/rules we need and update them in `rules.yml`
2. Generate a dependency tree graph
## Schema
This file only used basic YAML grammar and has nothing to do with the GitLab version YAML file.
It has five custom keywords:
- `matrix`: An array of sub-arrays, used to replicate rules by formatting strings. You can use the format string everywhere, it will be formatted recursively
- `labels`: An array of `labels`.
- `patterns`: An array of `patterns`. Patterns that not included
- `included_in`: An array of other `rule` names. It indicates the `labels` and `patterns` will be included in all specified `rules` as well
- `deploy`: An array of strings, used to replicate rules by adding postfix `-<item in deploy array>`. It indicates the extra `label` used in `rules`, which will explain later.
## How to use this file to generate `rules.yml`
Let's take a complicated example to help understand the process
```yaml
"test-{0}-{1}":
matrix:
- [a, b]
- [c, d]
labels:
- "{0}-{1}"
patterns:
- "{0}"
- pattern-not-exist
included_in:
- build-{0}
```
1. expand the mapping dicts defined by `matrix`
After this step, it will turn into 4 dicts:
| key | labels | patterns | included_in |
| -------- | ------ | -------- | ----------- |
| test-a-c | a-c | a | build-a |
| test-a-d | a-d | a | build-a |
| test-b-c | b-c | b | build-b |
| test-b-d | b-d | b | build-b |
**Advanced Usage: You can overwrite a mapping by declaring it again later**, For example:
If we concatenate this part to the previous example,
```yaml
# ... The same as the previous example
test-a-c:
labels:
- overwrite
```
`rule` `test-a-c` will be turned into:
| key | labels |
| -------- | --------- |
| test-a-c | overwrite |
**Mappings with the keyword `deploy` will also replicate by adding a postfix `-<item in deploy array>` to the mapping key**
2. create rules by `included_in`
After this step, it will turn into 6 mapping dicts:
| key | labels | patterns |
| -------- | -------- | -------- |
| test-a-c | a-c | a |
| test-a-d | a-d | a |
| test-b-c | b-c | b |
| test-b-d | b-d | b |
| build-a | a-c, a-d | a |
| build-b | b-c, b-d | b |
3. replace the auto-generated region in `rules.yml` with `labels`, and `rules`. Each mapping will generate a `rule` and all the required labels. `patterns` are pre-defined in `rules.yml` and could not be generated automatically. If a mapping is using a `pattern` undefined, the `pattern` will be ignored.
- If a mapping key has postfix `-preview`, no `if-protected-xxx` clause will be added
- else if a mapping key has postfix `-production`, an `if-protected-no_label` clause will be added
- else, an `if-protected` clause will be added
## Graph
All `label` nodes are in green, `pattern` nodes are in cyan, `rule` nodes are in blue
### Requirements
There are a few extra dependencies while generating the dependency tree graph, please refer to [pygraphviz](https://github.com/pygraphviz/pygraphviz/blob/master/INSTALL.txt) documentation to install both `graphviz` and `pygraphviz`
### CLI usage
`python generate_rules.py --graph OUTPUT_PATH`

View File

@@ -1,170 +0,0 @@
.all_targets: &all_targets
- esp32
- esp32s2
- esp32s3
- esp32c3
.target_test: &target_test
- example_test
- custom_test
- unit_test
- component_ut
##############
# Build Jobs #
##############
"build":
labels:
- build
patterns:
- build_components
- build_system
included_in:
- build:target_test
# -------------------
# Specific Build Jobs
# -------------------
"build:docker":
labels:
- build
- docker
patterns:
- docker
"build:windows":
labels:
- build
- windows
patterns:
- build_system
- windows
"build:macos":
labels:
- build
- macos
- macos_test # for backward compatibility
patterns:
- build_system
- macos
# ---------------
# Build Test Jobs
# ---------------
"build:{0}-{1}":
matrix:
- *target_test
- *all_targets
labels:
- build
patterns:
- build_components
- build_system
included_in:
- "build:{0}"
- build:target_test
build:integration_test:
labels:
- build
patterns:
- build_components
- build_system
included_in:
- build:target_test
####################
# Target Test Jobs #
####################
"test:{0}-{1}":
matrix:
- *target_test
- *all_targets
labels: # For each rule, use labels <test_type> and <test_type>-<target>
- "{0}"
- "{0}_{1}"
- target_test
patterns: # For each rule, use patterns <test_type> and build-<test_type>
- "{0}"
- "build-{0}"
included_in: # Parent rules
- "build:{0}"
- "build:{0}-{1}"
- build:target_test
# -------------
# Special Cases
# -------------
"test:component_ut-{0}": # component_ut will trigger by unit_test as well, since now we have 2 kinds of UT
matrix:
- *all_targets
labels:
- component_ut
- "component_ut_{0}"
- unit_test
- "unit_test_{0}"
- target_test
patterns:
- component_ut
- "build-component_ut-{0}"
included_in:
- build:component_ut
- "build:component_ut-{0}"
- build:target_test
"test:integration_test_{0}":
matrix:
- - wifi
- ble
labels:
- integration_test_{0}
- integration_test
- target_test
patterns:
- integration_test_{0}
# - maybe others
included_in:
- test:integration_test
- build:integration_test
- build:target_test
"test:host_test":
labels:
- host_test
patterns:
- host_test
"test:submodule":
labels:
- submodule
patterns:
- submodule
#################################
# Triggered Only By Labels Jobs #
#################################
"labels:iperf_stress_test": # example_test
labels:
- iperf_stress_test
included_in:
- build:example_test
- build:example_test-esp32
- build:target_test
"labels:weekend_test": # custom test
labels:
- weekend_test
included_in:
- build:custom_test
- build:custom_test-esp32
- build:target_test
"labels:nvs_coverage": # host_test
labels:
- nvs_coverage
"labels:fuzzer_test-weekend_test": # host test
labels:
- fuzzer_test
- weekend_test

View File

@@ -1,305 +0,0 @@
#!/usr/bin/env python
#
# Copyright 2021 Espressif Systems (Shanghai) CO LTD
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import argparse
import inspect
import os
import sys
from collections import defaultdict
from itertools import product
import yaml
try:
import pygraphviz as pgv
except ImportError: # used when pre-commit, skip generating image
pass
try:
from typing import Union
except ImportError: # used for type hint
pass
IDF_PATH = os.path.abspath(os.getenv('IDF_PATH', os.path.join(os.path.dirname(__file__), '..', '..', '..')))
def _list(str_or_list): # type: (Union[str, list]) -> list
if isinstance(str_or_list, str):
return [str_or_list]
elif isinstance(str_or_list, list):
return str_or_list
else:
raise ValueError('Wrong type: {}. Only supports str or list.'.format(type(str_or_list)))
def _format_nested_dict(_dict, f_tuple): # type: (dict[str, dict], tuple[str, ...]) -> dict[str, dict]
res = {}
for k, v in _dict.items():
k = k.split('__')[0]
if isinstance(v, dict):
v = _format_nested_dict(v, f_tuple)
elif isinstance(v, list):
v = _format_nested_list(v, f_tuple)
elif isinstance(v, str):
v = v.format(*f_tuple)
res[k.format(*f_tuple)] = v
return res
def _format_nested_list(_list, f_tuple): # type: (list[str], tuple[str, ...]) -> list[str]
res = []
for item in _list:
if isinstance(item, list):
item = _format_nested_list(item, f_tuple)
elif isinstance(item, dict):
item = _format_nested_dict(item, f_tuple)
elif isinstance(item, str):
item = item.format(*f_tuple)
res.append(item)
return res
class RulesWriter:
AUTO_GENERATE_MARKER = inspect.cleandoc(r'''
##################
# Auto Generated #
##################
''')
LABEL_TEMPLATE = inspect.cleandoc(r'''
.if-label-{0}: &if-label-{0}
if: '$BOT_LABEL_{1} || $CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*{0}(?:,[^,\n\r]+)*$/i'
''')
RULE_PROTECTED = ' - <<: *if-protected'
RULE_PROTECTED_NO_LABEL = ' - <<: *if-protected-no_label'
RULE_BUILD_ONLY = ' - <<: *if-label-build-only\n' \
' when: never'
RULE_LABEL_TEMPLATE = ' - <<: *if-label-{0}'
RULE_PATTERN_TEMPLATE = ' - <<: *if-dev-push\n' \
' changes: *patterns-{0}'
RULES_TEMPLATE = inspect.cleandoc(r"""
.rules:{0}:
rules:
{1}
""")
KEYWORDS = ['labels', 'patterns']
def __init__(self, rules_yml, depend_yml): # type: (str, str) -> None
self.rules_yml = rules_yml
self.rules_cfg = yaml.load(open(rules_yml), Loader=yaml.FullLoader)
self.full_cfg = yaml.load(open(depend_yml), Loader=yaml.FullLoader)
self.cfg = {k: v for k, v in self.full_cfg.items() if not k.startswith('.')}
self.cfg = self.expand_matrices()
self.rules = self.expand_rules()
self.graph = None
def expand_matrices(self): # type: () -> dict
"""
Expand the matrix into different rules
"""
res = {}
for k, v in self.cfg.items():
res.update(self._expand_matrix(k, v))
for k, v in self.cfg.items():
if not v:
continue
deploy = v.get('deploy')
if deploy:
for item in _list(deploy):
res['{}-{}'.format(k, item)] = v
return res
@staticmethod
def _expand_matrix(name, cfg): # type: (str, dict) -> dict
"""
Expand matrix into multi keys
:param cfg: single rule dict
:return:
"""
default = {name: cfg}
if not cfg:
return default
matrices = cfg.pop('matrix', None)
if not matrices:
return default
res = {}
for comb in product(*_list(matrices)):
res.update(_format_nested_dict(default, comb))
return res
def expand_rules(self): # type: () -> dict[str, dict[str, list]]
res = defaultdict(lambda: defaultdict(set)) # type: dict[str, dict[str, set]]
for k, v in self.cfg.items():
if not v:
continue
for vk, vv in v.items():
if vk in self.KEYWORDS:
res[k][vk] = set(_list(vv))
else:
res[k][vk] = vv
for key in self.KEYWORDS: # provide empty set for missing field
if key not in res[k]:
res[k][key] = set()
for k, v in self.cfg.items():
if not v:
continue
if 'included_in' in v:
for item in _list(v['included_in']):
if 'labels' in v:
res[item]['labels'].update(_list(v['labels']))
if 'patterns' in v:
for _pat in _list(v['patterns']):
# Patterns must be pre-defined
if '.patterns-{}'.format(_pat) not in self.rules_cfg:
print('WARNING: pattern {} not exists'.format(_pat))
continue
res[item]['patterns'].add(_pat)
sorted_res = defaultdict(lambda: defaultdict(list)) # type: dict[str, dict[str, list]]
for k, v in res.items():
for vk, vv in v.items():
sorted_res[k][vk] = sorted(vv)
return sorted_res
def new_labels_str(self): # type: () -> str
_labels = set([])
for k, v in self.cfg.items():
if not v:
continue # shouldn't be possible
labels = v.get('labels')
if not labels:
continue
_labels.update(_list(labels))
labels = sorted(_labels)
res = ''
res += '\n\n'.join([self._format_label(_label) for _label in labels])
return res
@classmethod
def _format_label(cls, label): # type: (str) -> str
return cls.LABEL_TEMPLATE.format(label, cls.bot_label_str(label))
@staticmethod
def bot_label_str(label): # type: (str) -> str
return label.upper().replace('-', '_')
def new_rules_str(self): # type: () -> str
res = []
for k, v in sorted(self.rules.items()):
res.append(self.RULES_TEMPLATE.format(k, self._format_rule(k, v)))
return '\n\n'.join(res)
def _format_rule(self, name, cfg): # type: (str, dict) -> str
_rules = []
if name.endswith('-production'):
_rules.append(self.RULE_PROTECTED_NO_LABEL)
else:
if not (name.endswith('-preview') or name.startswith('labels:')):
_rules.append(self.RULE_PROTECTED)
# Special case for esp32c3 example_test, for now it only run with label
if name.startswith('test:') or name == 'labels:example_test-esp32c3':
_rules.append(self.RULE_BUILD_ONLY)
for label in cfg['labels']:
_rules.append(self.RULE_LABEL_TEMPLATE.format(label))
for pattern in cfg['patterns']:
if '.patterns-{}'.format(pattern) in self.rules_cfg:
_rules.append(self.RULE_PATTERN_TEMPLATE.format(pattern))
else:
print('WARNING: pattern {} not exists'.format(pattern))
return '\n'.join(_rules)
def update_rules_yml(self): # type: () -> bool
with open(self.rules_yml) as fr:
file_str = fr.read()
auto_generate_str = '\n{}\n\n{}\n'.format(self.new_labels_str(), self.new_rules_str())
rest, marker, old = file_str.partition(self.AUTO_GENERATE_MARKER)
if old == auto_generate_str:
return False
else:
print(self.rules_yml, 'has been modified. Please check')
with open(self.rules_yml, 'w') as fw:
fw.write(rest + marker + auto_generate_str)
return True
LABEL_COLOR = 'green'
PATTERN_COLOR = 'cyan'
RULE_COLOR = 'blue'
def build_graph(rules_dict): # type: (dict[str, dict[str, list]]) -> pgv.AGraph
graph = pgv.AGraph(directed=True, rankdir='LR', concentrate=True)
for k, v in rules_dict.items():
if not v:
continue
included_in = v.get('included_in')
if included_in:
for item in _list(included_in):
graph.add_node(k, color=RULE_COLOR)
graph.add_node(item, color=RULE_COLOR)
graph.add_edge(k, item, color=RULE_COLOR)
labels = v.get('labels')
if labels:
for _label in labels:
graph.add_node('label:{}'.format(_label), color=LABEL_COLOR)
graph.add_edge('label:{}'.format(_label), k, color=LABEL_COLOR)
patterns = v.get('patterns')
if patterns:
for _pat in patterns:
graph.add_node('pattern:{}'.format(_pat), color=PATTERN_COLOR)
graph.add_edge('pattern:{}'.format(_pat), k, color=PATTERN_COLOR)
return graph
def output_graph(graph, output_path='output.png'): # type: (pgv.AGraph, str) -> None
graph.layout('dot')
if output_path.endswith('.png'):
img_path = output_path
else:
img_path = os.path.join(output_path, 'output.png')
graph.draw(img_path)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('rules_yml', nargs='?', default=os.path.join(IDF_PATH, '.gitlab', 'ci', 'rules.yml'),
help='rules.yml file path')
parser.add_argument('dependencies_yml', nargs='?', default=os.path.join(IDF_PATH, '.gitlab', 'ci', 'dependencies',
'dependencies.yml'),
help='dependencies.yml file path')
parser.add_argument('--graph',
help='Specify PNG image output path. Use this argument to generate dependency graph')
args = parser.parse_args()
writer = RulesWriter(args.rules_yml, args.dependencies_yml)
file_modified = writer.update_rules_yml()
if args.graph:
dep_tree_graph = build_graph(writer.rules)
output_graph(dep_tree_graph)
sys.exit(file_modified)

View File

@@ -1,75 +0,0 @@
.deploy_job_template:
extends: .before_script_no_sync_submodule
stage: deploy
image: $ESP_ENV_IMAGE
tags:
- deploy
push_to_github:
extends:
- .deploy_job_template
- .before_script_minimal
- .rules:protected-no_label
dependencies: []
script:
- add_github_ssh_keys
- git remote remove github &>/dev/null || true
- git remote add github git@github.com:espressif/esp-idf.git
- tools/ci/push_to_github.sh
deploy_test_result:
extends:
- .deploy_job_template
- .before_script_minimal
- .rules:ref:master-always
image: $CI_DOCKER_REGISTRY/bot-env
tags:
- deploy_test
artifacts:
when: always
paths:
- ${CI_PROJECT_DIR}/test-management/*.log
# save all test logs as artifacts, make it easier to track errors
- ${CI_PROJECT_DIR}/TEST_LOGS
expire_in: 1 mos
variables:
UNIT_TEST_CASE_FILE: "${CI_PROJECT_DIR}/components/idf_test/unit_test/TestCaseAll.yml"
BOT_ACCOUNT_CONFIG_FILE: "${CI_PROJECT_DIR}/test-management/Config/Account.local.yml"
TEST_FW_PATH: "$CI_PROJECT_DIR/tools/tiny-test-fw"
AUTO_TEST_SCRIPT_PATH: "${CI_PROJECT_DIR}/auto_test_script"
script:
- add_gitlab_ssh_keys
- export GIT_SHA=$(echo ${PIPELINE_COMMIT_SHA} | cut -c 1-8)
- export REV_COUNT=$(git rev-list --count ${PIPELINE_COMMIT_SHA} --)
- export SUMMARY="IDF CI test result for $GIT_SHA (r${REV_COUNT})"
# artifacts of job update_test_cases creates test-management folder
# we need to remove it so we can clone test-management folder again
- rm -rf test-management
- retry_failed git clone $TEST_MANAGEMENT_REPO
- python3 $CHECKOUT_REF_SCRIPT test-management test-management
- cd test-management
- echo $BOT_JIRA_ACCOUNT > ${BOT_ACCOUNT_CONFIG_FILE}
# update test results
- python3 ImportTestResult.py -r "$GIT_SHA (r${REV_COUNT})" -j $JIRA_TEST_MANAGEMENT_PROJECT -s "$SUMMARY" -l CI -p ${CI_PROJECT_DIR}/TEST_LOGS --pipeline_url ${CI_PIPELINE_URL}
check_submodule_sync:
extends:
- .deploy_job_template
- .rules:test:submodule
tags:
- github_sync
retry: 2
variables:
GIT_STRATEGY: clone
SUBMODULES_TO_FETCH: "none"
PUBLIC_IDF_URL: "https://github.com/espressif/esp-idf.git"
dependencies: []
script:
- git submodule deinit --force .
# setting the default remote URL to the public one, to resolve relative location URLs
- git config remote.origin.url ${PUBLIC_IDF_URL}
# check if all submodules are correctly synced to public repository
- git submodule init
- git config --get-regexp '^submodule\..*\.url$' || true
- git submodule update --recursive
- echo "IDF was cloned from ${PUBLIC_IDF_URL} completely"

View File

@@ -1,231 +0,0 @@
.patterns-docs: &patterns-docs
- ".gitlab/ci/docs.yml"
- "docs/**/*"
- "components/**/*.h"
- "components/**/Kconfig*"
- "components/**/CMakeList.txt"
- "components/**/sdkconfig*"
- "tools/kconfig_new/**/*"
- "CONTRIBUTING.rst"
.patterns-docs-preview: &patterns-docs-preview
- "docs/**/*"
.if-protected: &if-protected
if: '($CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_BRANCH =~ /^release\/v/ || $CI_COMMIT_TAG =~ /^v\d+\.\d+(\.\d+)?($|-)/)'
.if-protected-no_label: &if-protected-no_label
if: '($CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_BRANCH =~ /^release\/v/ || $CI_COMMIT_TAG =~ /^v\d+\.\d+(\.\d+)?($|-)/) && $BOT_TRIGGER_WITH_LABEL == null'
.if-label-build_docs: &if-label-build_docs
if: '$BOT_LABEL_BUILD_DOCS || $CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*build_docs(?:,[^,\n\r]+)*$/i'
.if-label-docs: &if-label-docs
if: '$BOT_LABEL_DOCS || $CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*docs(?:,[^,\n\r]+)*$/i'
.if-label-docs_full: &if-label-docs_full
if: '$BOT_LABEL_DOCS_FULL || $CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*docs_full(?:,[^,\n\r]+)*$/i'
.if-dev-push: &if-dev-push
if: '$CI_COMMIT_REF_NAME != "master" && $CI_COMMIT_BRANCH !~ /^release\/v/ && $CI_COMMIT_TAG !~ /^v\d+\.\d+(\.\d+)?($|-)/ && ($CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "merge_request_event")'
.doc-rules:build:docs:
rules:
- <<: *if-protected
- <<: *if-label-build_docs
- <<: *if-label-docs
- <<: *if-label-docs_full
- <<: *if-dev-push
changes: *patterns-docs
# stage: pre_check
check_readme_links:
extends:
- .pre_check_job_template
tags: ["build", "amd64", "internet"]
allow_failure: true
script:
- python ${IDF_PATH}/tools/ci/check_readme_links.py
check_docs_lang_sync:
extends:
- .pre_check_job_template
- .doc-rules:build:docs
script:
- cd docs
- ./check_lang_folder_sync.sh
.build_docs_template:
image: $ESP_IDF_DOC_ENV_IMAGE
variables:
PYTHON_VER: 3.7.10
tags:
- build_docs
dependencies: []
script:
- pip install -r requirements.txt
- cd docs
- pip install -U -r requirements.txt
- build-docs -t $DOCTGT -bs $DOC_BUILDERS -l $DOCLANG build
parallel:
matrix:
- DOCLANG: ["en", "zh_CN"]
DOCTGT: ["esp32", "esp32s2", "esp32s3", "esp32c3"]
check_docs_gh_links:
image: $ESP_IDF_DOC_ENV_IMAGE
variables:
PYTHON_VER: 3.7.10
extends:
- .pre_check_job_template
- .doc-rules:build:docs
script:
- pip install -r requirements.txt
- cd docs
- pip install -U -r requirements.txt
- build-docs gh-linkcheck
# stage: build_doc
# Add this stage to let the build_docs job run in parallel with build
.build_docs_build_stage_template:
extends:
- .build_docs_template
stage: build_doc
needs:
- job: check_docs_lang_sync
artifacts: false
- job: check_docs_gh_links
artifacts: false
# Doc jobs have a lot of special cases, we specify rules here directly instead
# in dependencies.yml to simplify things
build_docs_html_full:
extends:
- .build_docs_build_stage_template
rules:
- <<: *if-protected
- <<: *if-label-docs_full
artifacts:
when: always
paths:
- docs/_build/*/*/*.txt
- docs/_build/*/*/html/*
expire_in: 4 days
variables:
DOC_BUILDERS: "html"
build_docs_html_fast:
extends:
- .build_docs_build_stage_template
rules:
- <<: *if-label-docs_full
when: never
- <<: *if-label-build_docs
- <<: *if-label-docs
- <<: *if-dev-push
changes: *patterns-docs
artifacts:
when: always
paths:
- docs/_build/*/*/*.txt
- docs/_build/*/*/html/*
expire_in: 4 days
variables:
DOC_BUILDERS: "html"
DOCS_FAST_BUILD: "yes"
build_docs_pdf:
extends:
- .build_docs_build_stage_template
rules:
- <<: *if-protected
- <<: *if-label-docs_full
artifacts:
when: always
paths:
- docs/_build/*/*/latex/*
expire_in: 4 days
variables:
DOC_BUILDERS: "latex"
.deploy_docs_template:
extends:
- .before_script_no_sync_submodule
image: $ESP_IDF_DOC_ENV_IMAGE
stage: test_deploy
tags:
- deploy
- shiny
variables:
PYTHON_VER: 3.7.10
DOCS_BUILD_DIR: "${IDF_PATH}/docs/_build/"
PYTHONUNBUFFERED: 1
dependencies: []
script:
- add_doc_server_ssh_keys $DOCS_DEPLOY_PRIVATEKEY $DOCS_DEPLOY_SERVER $DOCS_DEPLOY_SERVER_USER
- export GIT_VER=$(git describe --always ${PIPELINE_COMMIT_SHA} --)
- pip install -U -r docs/requirements.txt
- deploy-docs
# stage: test_deploy
deploy_docs_preview:
extends:
- .deploy_docs_template
rules:
- <<: *if-label-build_docs
- <<: *if-label-docs
- <<: *if-dev-push
changes: *patterns-docs-preview
dependencies:
- build_docs_html_fast
- build_docs_html_full
- build_docs_pdf
variables:
TYPE: "preview"
# older branches use DOCS_DEPLOY_KEY, DOCS_SERVER, DOCS_SERVER_USER, DOCS_PATH for preview server so we keep these names for 'preview'
DOCS_DEPLOY_PRIVATEKEY: "$DOCS_DEPLOY_KEY"
DOCS_DEPLOY_SERVER: "$DOCS_SERVER"
DOCS_DEPLOY_SERVER_USER: "$DOCS_SERVER_USER"
DOCS_DEPLOY_PATH: "$DOCS_PATH"
DOCS_DEPLOY_URL_BASE: "https://$DOCS_PREVIEW_SERVER_URL/docs/esp-idf"
# stage: post_deploy
deploy_docs_production:
# The DOCS_PROD_* variables used by this job are "Protected" so these branches must all be marked "Protected" in Gitlab settings
extends:
- .deploy_docs_template
rules:
- <<: *if-protected-no_label
stage: post_deploy
dependencies: # set dependencies to null to avoid missing artifacts issue
needs: # ensure runs after push_to_github succeeded
- build_docs_html_full
- build_docs_pdf
- job: push_to_github
artifacts: false
variables:
TYPE: "preview"
DOCS_DEPLOY_PRIVATEKEY: "$DOCS_PROD_DEPLOY_KEY"
DOCS_DEPLOY_SERVER: "$DOCS_PROD_SERVER"
DOCS_DEPLOY_SERVER_USER: "$DOCS_PROD_SERVER_USER"
DOCS_DEPLOY_PATH: "$DOCS_PROD_PATH"
DOCS_DEPLOY_URL_BASE: "https://docs.espressif.com/projects/esp-idf"
check_doc_links:
extends:
- .build_docs_template
- .rules:protected
stage: post_deploy
tags: ["build", "amd64", "internet"]
artifacts:
when: always
paths:
- docs/_build/*/*/*.txt
- docs/_build/*/*/linkcheck/*.txt
expire_in: 1 week
allow_failure: true
script:
- pip install -r requirements.txt
- cd docs
- pip install -U -r requirements.txt
- build-docs -t $DOCTGT -l $DOCLANG linkcheck

View File

@@ -1,370 +0,0 @@
.host_test_template:
extends: .rules:test:host_test
stage: host_test
image: $ESP_ENV_IMAGE
variables:
PYTHON_VER: 3.6.13
tags:
- host_test
dependencies: []
needs: [] # run host_test jobs immediately
test_nvs_on_host:
extends: .host_test_template
script:
- cd components/nvs_flash/test_nvs_host
- make test
test_nvs_coverage:
extends:
- .host_test_template
- .rules:labels:nvs_coverage
artifacts:
paths:
- components/nvs_flash/test_nvs_host/coverage_report
expire_in: 1 week
script:
- cd components/nvs_flash/test_nvs_host
- make coverage_report
# the 'long' host tests take approx 11 hours on our current runners. Adding some margin here for possible CPU contention
timeout: 18 hours
test_partition_table_on_host:
extends: .host_test_template
tags:
- build
script:
- cd components/partition_table/test_gen_esp32part_host
- ./gen_esp32part_tests.py
test_wl_on_host:
extends: .host_test_template
artifacts:
paths:
- components/wear_levelling/test_wl_host/coverage_report.zip
expire_in: 1 week
script:
- cd components/wear_levelling/test_wl_host
- make test
test_fatfs_on_host:
extends: .host_test_template
script:
- cd components/fatfs/test_fatfs_host/
- make test
test_ldgen_on_host:
extends: .host_test_template
script:
- cd tools/ldgen/test
- ./test_fragments.py
- ./test_generation.py
- ./test_entity.py
- ./test_output_commands.py
variables:
LC_ALL: C.UTF-8
.host_fuzzer_test_template:
extends:
- .host_test_template
- .rules:labels:fuzzer_test-weekend_test
image: $AFL_FUZZER_TEST_IMAGE
artifacts:
when: always
paths:
- ${FUZZER_TEST_DIR}/out/crashes
- ${FUZZER_TEST_DIR}/fuzz_output.log
expire_in: 1 week
script:
- export AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 && export AFL_SKIP_CPUFREQ=1
- cd ${FUZZER_TEST_DIR}
# run AFL fuzzer for one hour
- ( ( make ${FUZZER_PARAMS} fuzz | tee fuzz_output.log | grep -v '\(Fuzzing test case\|Entering queue cycle\)' ) || pkill sleep ) &
- ( sleep 3600 || mkdir -p out/crashes/env_failed ) && pkill afl-fuz
# check no crashes found
- test -z "$(ls out/crashes/)" || exit 1
test_mdns_fuzzer_on_host:
extends: .host_fuzzer_test_template
variables:
FUZZER_TEST_DIR: components/mdns/test_afl_fuzz_host
test_lwip_dns_fuzzer_on_host:
extends: .host_fuzzer_test_template
variables:
FUZZER_TEST_DIR: components/lwip/test_afl_host
FUZZER_PARAMS: MODE=dns
test_lwip_dhcp_fuzzer_on_host:
extends: .host_fuzzer_test_template
variables:
FUZZER_TEST_DIR: components/lwip/test_afl_host
FUZZER_PARAMS: MODE=dhcp_client
test_lwip_dhcps_fuzzer_on_host:
extends: .host_fuzzer_test_template
variables:
FUZZER_TEST_DIR: components/lwip/test_afl_host
FUZZER_PARAMS: MODE=dhcp_server
test_spiffs_on_host:
extends: .host_test_template
script:
- cd components/spiffs/test_spiffs_host/
- make test
- cd ../test_spiffsgen
- ./test_spiffsgen.py
test_multi_heap_on_host:
extends: .host_test_template
script:
- cd components/heap/test_multi_heap_host
- ./test_all_configs.sh
test_certificate_bundle_on_host:
extends: .host_test_template
tags:
- build
script:
- cd components/mbedtls/esp_crt_bundle/test_gen_crt_bundle/
- ./test_gen_crt_bundle.py
test_confserver:
extends: .host_test_template
script:
- cd tools/kconfig_new/test/confserver
- ./test_confserver.py
test_gen_kconfig_doc:
extends: .host_test_template
script:
- cd tools/kconfig_new/test/gen_kconfig_doc/
- ./test_target_visibility.py
- ./test_kconfig_out.py
test_confgen:
extends: .host_test_template
script:
- cd tools/kconfig_new/test/confgen/
- ./test_confgen.py
test_idf_monitor:
extends: .host_test_template
artifacts:
# save artifacts always in order to access results which were retried without consequent failure
when: always
paths:
- tools/test_idf_monitor/outputs/*
expire_in: 1 week
script:
- cd ${IDF_PATH}/tools/test_idf_monitor
- ./run_test_idf_monitor.py
test_idf_size:
extends: .host_test_template
artifacts:
when: on_failure
paths:
- tools/test_idf_size/output
- tools/test_idf_size/.coverage
expire_in: 1 week
script:
- cd ${IDF_PATH}/tools/test_idf_size
- ./test.sh
test_idf_py:
extends: .host_test_template
variables:
LC_ALL: C.UTF-8
script:
- cd ${IDF_PATH}/tools/test_idf_py
- ./test_idf_py.py
test_idf_tools:
extends: .host_test_template
artifacts:
when: on_failure
paths:
- tools/tools.new.json
expire_in: 1 week
script:
# Remove Xtensa and ULP toolchains from the PATH, tests will expect a clean environment
- export PATH=$(p=$(echo $PATH | tr ":" "\n" | grep -v "/root/.espressif/tools\|/opt/espressif" | tr "\n" ":"); echo ${p%:})
- cd ${IDF_PATH}/tools/test_idf_tools
- ./test_idf_tools.py
test_install_python_env:
extends: .host_test_template
script:
# Test for create virtualenv. It must be invoked from Python, not from virtualenv.
# Remove tools gdbgui, pygdbmi, python-socketio, jinja2, itsdangerous, pygdbmi for virtualenv test to reduce virtualenv setup time
# since they are not necessary for this test and are tested elsewhere
- sed -E -i '/(^gdbgui|^pygdbmi|^python-socketio|^jinja2|^itsdangerous|^pygdbmi)/d' $IDF_PATH/requirements.txt
- cd ${IDF_PATH}/tools
- python3 ./idf_tools.py install-python-env
timeout: 4 hours # this requires longer timeout
.test_efuse_table_on_host_template:
extends: .host_test_template
variables:
IDF_TARGET: "esp32"
artifacts:
when: on_failure
paths:
- components/efuse/${IDF_TARGET}/esp_efuse_table.c
expire_in: 1 week
script:
- cd ${IDF_PATH}/components/efuse/
- ./efuse_table_gen.py -t "${IDF_TARGET}" ${IDF_PATH}/components/efuse/${IDF_TARGET}/esp_efuse_table.csv
- git diff --exit-code -- ${IDF_TARGET}/esp_efuse_table.c || { echo 'Differences found for ${IDF_TARGET} target. Please run make efuse_common_table or idf.py efuse-common-table and commit the changes.'; exit 1; }
- cd ${IDF_PATH}/components/efuse/test_efuse_host
- ./efuse_tests.py
test_efuse_table_on_host_esp32:
extends: .test_efuse_table_on_host_template
test_efuse_table_on_host_esp32s2:
extends: .test_efuse_table_on_host_template
variables:
IDF_TARGET: esp32s2
test_efuse_table_on_host_esp32s3:
extends: .test_efuse_table_on_host_template
variables:
IDF_TARGET: esp32s3
test_efuse_table_on_host_esp32c3:
extends: .test_efuse_table_on_host_template
variables:
IDF_TARGET: esp32c3
test_efuse_table_on_host_esp32h2:
extends: .test_efuse_table_on_host_template
variables:
IDF_TARGET: esp32h2
test_logtrace_proc:
extends: .host_test_template
artifacts:
when: on_failure
paths:
- tools/esp_app_trace/test/logtrace/output
- tools/esp_app_trace/test/logtrace/.coverage
expire_in: 1 week
script:
- cd ${IDF_PATH}/tools/esp_app_trace/test/logtrace
- ./test.sh
test_sysviewtrace_proc:
extends: .host_test_template
artifacts:
when: on_failure
paths:
- tools/esp_app_trace/test/sysview/output
- tools/esp_app_trace/test/sysview/.coverage
expire_in: 1 week
script:
- cd ${IDF_PATH}/tools/esp_app_trace/test/sysview
- ./test.sh
test_mkdfu:
extends: .host_test_template
variables:
LC_ALL: C.UTF-8
script:
- cd ${IDF_PATH}/tools/test_mkdfu
- ./test_mkdfu.py
test_mkuf2:
extends: .host_test_template
script:
- cd ${IDF_PATH}/tools/test_mkuf2
- ./test_mkuf2.py
test_sbom:
extends:
- .host_test_template
- .rules:patterns:sbom
script:
- python ${IDF_PATH}/tools/test_sbom/test_submodules.py
test_autocomplete:
extends: .host_test_template
image: $CI_DOCKER_REGISTRY/linux-shells:1
artifacts:
when: on_failure
paths:
- ${IDF_PATH}/*.out
expire_in: 1 week
script:
- ${IDF_PATH}/tools/ci/test_autocomplete.py
test_detect_python:
extends: .host_test_template
image: $CI_DOCKER_REGISTRY/linux-shells:1
script:
- cd ${IDF_PATH}
- shellcheck -s sh tools/detect_python.sh
- shellcheck -s bash tools/detect_python.sh
- shellcheck -s dash tools/detect_python.sh
- "bash -c '. tools/detect_python.sh && echo Our Python: ${ESP_PYTHON?Python is not set}'"
- "dash -c '. tools/detect_python.sh && echo Our Python: ${ESP_PYTHON?Python is not set}'"
- "zsh -c '. tools/detect_python.sh && echo Our Python: ${ESP_PYTHON?Python is not set}'"
- "fish -c 'source tools/detect_python.fish && echo Our Python: $ESP_PYTHON'"
test_nvs_page:
extends: .host_test_template
script:
- cd ${IDF_PATH}/components/nvs_flash/host_test/nvs_page_test
- idf.py build
- build/test_nvs_page_host.elf
test_log:
extends: .host_test_template
script:
- cd ${IDF_PATH}/components/log/host_test/log_test
- idf.py build
- build/test_log_host.elf
test_esp_event:
extends: .host_test_template
script:
- cd ${IDF_PATH}/components/esp_event/host_test/esp_event_unit_test
- idf.py build
- build/test_esp_event_host.elf
test_esp_timer_cxx:
extends: .host_test_template
script:
- cd ${IDF_PATH}/examples/cxx/experimental/experimental_cpp_component/host_test/esp_timer
- idf.py build
- build/test_esp_timer_cxx_host.elf
test_eh_frame_parser:
extends: .host_test_template
script:
- cd ${IDF_PATH}/components/esp_system/test_eh_frame_parser
- make
- ./eh_frame_test
test_rom_on_linux_works:
extends: .host_test_template
script:
- cd ${IDF_PATH}/components/esp_rom/host_test/rom_test
- idf.py build
- build/test_rom_host.elf
test_cxx_gpio:
extends: .host_test_template
script:
- cd ${IDF_PATH}/examples/cxx/experimental/experimental_cpp_component/host_test/gpio
- idf.py build
- build/test_gpio_cxx_host.elf
test_linux_example:
extends: .host_test_template
script:
- cd ${IDF_PATH}/examples/build_system/cmake/linux_host_app
- idf.py build
- timeout 5 ./build/linux_host_app.elf >test.log || true
- grep "Restarting" test.log

View File

@@ -1,205 +0,0 @@
.pre_check_base_template:
stage: pre_check
image: $ESP_ENV_IMAGE
tags:
- host_test
dependencies: []
.pre_check_job_template:
extends:
- .pre_check_base_template
- .before_script_no_sync_submodule
.check_pre_commit_template:
extends: .pre_check_job_template
image: "$CI_DOCKER_REGISTRY/esp-idf-pre-commit:1"
before_script:
- source tools/ci/utils.sh
- is_based_on_commits $REQUIRED_ANCESTOR_COMMITS
- export PYTHONPATH="$CI_PROJECT_DIR/tools:$CI_PROJECT_DIR/tools/ci/python_packages:$PYTHONPATH"
check_pre_commit_master_release:
extends:
- .check_pre_commit_template
- .rules:protected
script:
- git diff-tree --no-commit-id --name-only -r $PIPELINE_COMMIT_SHA | xargs pre-commit run --files
check_pre_commit_MR:
extends:
- .check_pre_commit_template
- .rules:dev
script:
- python ${CI_PROJECT_DIR}/tools/ci/ci_get_mr_info.py files ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME} | xargs pre-commit run --files
check_version:
# Don't run this for feature/bugfix branches, so that it is possible to modify
# esp_idf_version.h in a branch before tagging the next version.
extends:
- .pre_check_job_template
- .rules:protected
script:
- export IDF_PATH=$PWD
- tools/ci/check_idf_version.sh
check_examples_cmake_make:
extends: .pre_check_job_template
script:
- python ${IDF_PATH}/tools/ci/check_examples_cmake_make.py
check_rom_api_header:
extends: .pre_check_job_template
script:
- tools/ci/check_examples_rom_header.sh
- tools/ci/check_api_violation.sh
check_python_style:
extends:
- .pre_check_base_template
- .rules:patterns:python-files
variables:
PYTHON_VER: 3.6.13
artifacts:
when: on_failure
paths:
- flake8_output.txt
expire_in: 1 week
script:
- python -m flake8 --config=$IDF_PATH/.flake8 --output-file=flake8_output.txt --tee --benchmark $IDF_PATH
test_check_kconfigs:
extends: .pre_check_job_template
variables:
PYTHON_VER: 3.6.13
artifacts:
when: on_failure
paths:
- components/*/Kconfig*.new
- examples/*/*/*/Kconfig*.new
- examples/*/*/*/*/Kconfig*.new
- tools/*/Kconfig*.new
- tools/*/*/Kconfig*.new
- tools/*/*/*/Kconfig*.new
expire_in: 1 week
script:
- python ${IDF_PATH}/tools/ci/test_check_kconfigs.py
check_blobs:
extends: .pre_check_base_template
tags:
- build
variables:
SUBMODULES_TO_FETCH: "components/esp_wifi/lib;components/esp_phy/lib"
script:
# Check if Wi-Fi library header files match between IDF and the version used when compiling the libraries
- IDF_TARGET=esp32 $IDF_PATH/components/esp_wifi/test_md5/test_md5.sh
- IDF_TARGET=esp32s2 $IDF_PATH/components/esp_wifi/test_md5/test_md5.sh
- IDF_TARGET=esp32s3 $IDF_PATH/components/esp_wifi/test_md5/test_md5.sh
- IDF_TARGET=esp32c3 $IDF_PATH/components/esp_wifi/test_md5/test_md5.sh
# Check if Wi-Fi, PHY, BT blobs contain references to specific symbols
- bash $IDF_PATH/tools/ci/check_blobs.sh
check_fuzzer_compilation:
extends: .pre_check_base_template
image: $AFL_FUZZER_TEST_IMAGE
script:
- cd ${IDF_PATH}/components/lwip/test_afl_host
- make MODE=dhcp_server
- make MODE=dhcp_client
- make MODE=dns
- cd ${IDF_PATH}/components/mdns/test_afl_fuzz_host
- make
check_public_headers:
extends:
- .pre_check_base_template
- .rules:build
tags:
- build
script:
- python tools/ci/check_public_headers.py --jobs 4 --prefix xtensa-esp32-elf-
check_soc_struct_headers:
extends:
- .pre_check_base_template
- .rules:build
tags:
- build
script:
- find ${IDF_PATH}/components/soc/*/include/soc/ -name "*_struct.h" -print0 | xargs -0 -n1 ./tools/ci/check_soc_struct_headers.py
check_esp_err_to_name:
extends:
- .pre_check_base_template
- .rules:build
tags:
- build
artifacts:
when: on_failure
paths:
- components/esp_common/esp_err_to_name.c
expire_in: 1 week
script:
- cd ${IDF_PATH}/tools/
- ./gen_esp_err_to_name.py
- git diff --exit-code -- ../components/esp_common/src/esp_err_to_name.c || { echo 'Differences found. Please run gen_esp_err_to_name.py and commit the changes.'; exit 1; }
scan_tests:
extends:
- .pre_check_base_template
- .rules:build:target_test
image: $CI_DOCKER_REGISTRY/ubuntu-test-env$BOT_DOCKER_IMAGE_TAG
tags:
- assign_test
artifacts:
paths:
- $EXAMPLE_TEST_OUTPUT_DIR
- $TEST_APPS_OUTPUT_DIR
- $COMPONENT_UT_OUTPUT_DIR
variables:
EXAMPLE_TEST_DIR: ${CI_PROJECT_DIR}/examples
EXAMPLE_TEST_OUTPUT_DIR: ${CI_PROJECT_DIR}/examples/test_configs
TEST_APPS_TEST_DIR: ${CI_PROJECT_DIR}/tools/test_apps
TEST_APPS_OUTPUT_DIR: ${CI_PROJECT_DIR}/tools/test_apps/test_configs
COMPONENT_UT_OUTPUT_DIR: ${CI_PROJECT_DIR}/component_ut/test_configs
CI_SCAN_TESTS_PY: ${CI_PROJECT_DIR}/tools/ci/python_packages/ttfw_idf/CIScanTests.py
EXTRA_TEST_DIRS: >-
examples/bluetooth/esp_ble_mesh/ble_mesh_console
examples/bluetooth/hci/controller_hci_uart_esp32
examples/wifi/iperf
script:
- set_component_ut_vars
- run_cmd python $CI_SCAN_TESTS_PY example_test $EXAMPLE_TEST_DIR -b make --exclude examples/build_system/idf_as_lib -c $CI_TARGET_TEST_CONFIG_FILE -o $EXAMPLE_TEST_OUTPUT_DIR
- run_cmd python $CI_SCAN_TESTS_PY example_test $EXAMPLE_TEST_DIR -b cmake --exclude examples/build_system/idf_as_lib -c $CI_TARGET_TEST_CONFIG_FILE -o $EXAMPLE_TEST_OUTPUT_DIR --extra_test_dirs $EXTRA_TEST_DIRS
- run_cmd python $CI_SCAN_TESTS_PY test_apps $TEST_APPS_TEST_DIR -c $CI_TARGET_TEST_CONFIG_FILE -o $TEST_APPS_OUTPUT_DIR
- run_cmd python $CI_SCAN_TESTS_PY component_ut $COMPONENT_UT_DIRS --exclude $COMPONENT_UT_EXCLUDES -c $CI_TARGET_TEST_CONFIG_FILE -o $COMPONENT_UT_OUTPUT_DIR
# For release tag pipelines only, make sure the tag was created with 'git tag -a' so it will update
# the version returned by 'git describe'
check_version_tag:
extends:
- .pre_check_job_template
- .rules:tag:release
script:
- (git cat-file -t $CI_COMMIT_REF_NAME | grep tag) || (echo "ESP-IDF versions must be annotated tags." && exit 1)
check_ut_cmake_make:
extends: .pre_check_job_template
tags:
- build
script:
- tools/ci/check_ut_cmake_make.sh
check_artifacts_expire_time:
extends: .pre_check_job_template
script:
# check if we have set expire time for all artifacts
- python tools/ci/check_artifacts_expire_time.py
check_commit_msg:
extends: .pre_check_job_template
script:
- git status
- git log -n10 --oneline ${PIPELINE_COMMIT_SHA}
# commit start with "WIP: " need to be squashed before merge
- 'git log --pretty=%s origin/master..${PIPELINE_COMMIT_SHA} -- | grep -i "^WIP:" && exit 1 || exit 0'

File diff suppressed because it is too large Load Diff

View File

@@ -1,131 +0,0 @@
# pre_check stage
clang_tidy_check:
extends:
- .pre_check_base_template
- .rules:patterns:clang_tidy
image: ${CLANG_STATIC_ANALYSIS_IMAGE}
artifacts:
paths:
- $OUTPUT_DIR
when: always
expire_in: 1 day
variables:
CLANG_TIDY_RUNNER_PROJ: 2107 # idf/clang-tidy-runner
CLANG_TIDY_DIRS_TXT: ${CI_PROJECT_DIR}/tools/ci/clang_tidy_dirs.txt
RULES_FILE: ${CI_PROJECT_DIR}/tools/ci/static-analysis-rules.yml
OUTPUT_DIR: ${CI_PROJECT_DIR}/clang_tidy_reports
script:
- python -m pip install -U pip
- internal_pip_install $CLANG_TIDY_RUNNER_PROJ pyclang
- export PATH=$PATH:$(python -c "import sys; print(sys.executable.rsplit('/', 1)[0])")
- dirs=$(cat ${CLANG_TIDY_DIRS_TXT} | while read line; do echo ${CI_PROJECT_DIR}/${line}; done | xargs)
- run_cmd idf_clang ${dirs}
--output-path ${OUTPUT_DIR}
--limit-file ${RULES_FILE}
--xtensa-include-dir
--run-clang-tidy-py ${RUN_CLANG_TIDY_PY}
check_pylint:
extends:
- .pre_check_base_template
- .rules:patterns:python-files
- .before_script_minimal
image: $SONARQUBE_SCANNER_IMAGE
artifacts:
when: always
paths:
- pylint-report.txt
expire_in: 1 week
script:
- export PYTHONPATH="$IDF_PATH/tools:$IDF_PATH/tools/ci/python_packages:$PYTHONPATH"
- |
if [ -n "$CI_MERGE_REQUEST_IID" ]; then
export files=$(python ${CI_PROJECT_DIR}/tools/ci/ci_get_mr_info.py files ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME} | grep ".py");
else
export files=$(find . -iname "*.py" -print);
fi
- pylint --rcfile=.pylintrc $files -r n --output-format=parseable > pylint-report.txt || exit 0
# build stage
# Sonarqube related jobs put here for this reason:
# Here we have two jobs. code_quality_check and code_quality_report.
#
# code_quality_check will analyze the code changes between your MR and
# code repo stored in sonarqube server. The analysis result is only shown in
# the comments under this MR and won't be transferred to the server.
#
# code_quality_report will analyze and transfer both of the newly added code
# and the analysis result to the server.
#
# Put in the front to ensure that the newly merged code can be stored in
# sonarqube server ASAP, in order to avoid reporting unrelated code issues
.sonar_scan_template:
stage: build
image:
name: $SONARQUBE_SCANNER_IMAGE
before_script:
- source tools/ci/utils.sh
- is_based_on_commits $REQUIRED_ANCESTOR_COMMITS
- export PYTHONPATH="$CI_PROJECT_DIR/tools:$CI_PROJECT_DIR/tools/ci/python_packages:$PYTHONPATH"
- fetch_submodules
# Exclude the submodules, all paths ends with /**
- submodules=$(get_all_submodules)
# get all exclude paths specified in tools/ci/sonar_exclude_list.txt | ignore lines start with # | xargs | replace all <space> to <comma>
- custom_excludes=$(cat $CI_PROJECT_DIR/tools/ci/sonar_exclude_list.txt | grep -v '^#' | xargs | sed -e 's/ /,/g')
# Exclude the report dir as well
- export EXCLUSIONS="$custom_excludes,$submodules"
- export SONAR_SCANNER_OPTS="-Xmx2048m"
variables:
GIT_DEPTH: 0
REPORT_PATTERN: clang_tidy_reports/*.txt
artifacts:
when: always
paths:
- $REPORT_PATTERN
tags:
- host_test
dependencies: # Here is not a hard dependency relationship, could be skipped when only python files changed. so we do not use "needs" here.
- clang_tidy_check
- check_pylint
code_quality_check:
extends:
- .sonar_scan_template
- .rules:patterns:static-code-analysis-preview
allow_failure: true # since now it's using exit code to indicate the code analysis result,
# we don't want to block ci when critical issues founded
script:
- export CI_MERGE_REQUEST_COMMITS=$(python ${CI_PROJECT_DIR}/tools/ci/ci_get_mr_info.py commits ${CI_COMMIT_REF_NAME} | tr '\n' ',')
# test if this branch have merge request, if not, exit 0
- test -n "$CI_MERGE_REQUEST_IID" || exit 0
- test -n "$CI_MERGE_REQUEST_COMMITS" || exit 0
- sonar-scanner
-Dsonar.analysis.mode=preview
-Dsonar.branch.name=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
-Dsonar.cxx.clangtidy.reportPath=$REPORT_PATTERN
-Dsonar.exclusions=$EXCLUSIONS
-Dsonar.gitlab.ci_merge_request_iid=$CI_MERGE_REQUEST_IID
-Dsonar.gitlab.commit_sha=$CI_MERGE_REQUEST_COMMITS
-Dsonar.gitlab.merge_request_discussion=true
-Dsonar.gitlab.ref_name=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
-Dsonar.host.url=$SONAR_HOST_URL
-Dsonar.login=$SONAR_LOGIN
-Dsonar.python.pylint.reportPath=pylint-report.txt
code_quality_report:
extends:
- .sonar_scan_template
- .rules:protected
allow_failure: true # since now it's using exit code to indicate the code analysis result,
# we don't want to block ci when critical issues founded
script:
- sonar-scanner
-Dsonar.branch.name=$CI_COMMIT_REF_NAME
-Dsonar.cxx.clangtidy.reportPath=$REPORT_PATTERN
-Dsonar.exclusions=$EXCLUSIONS
-Dsonar.gitlab.commit_sha=$PIPELINE_COMMIT_SHA
-Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
-Dsonar.host.url=$SONAR_HOST_URL
-Dsonar.login=$SONAR_LOGIN
-Dsonar.python.pylint.reportPath=pylint-report.txt

File diff suppressed because it is too large Load Diff

View File

@@ -1,63 +0,0 @@
_All texts in italics are instructional and should be replaced by contents or removed._
## Checklist
_This entire section can be deleted if all items are checked._
* [ ] Enough information to help reviewers understand the issue, its root cause, impact, and the proposed solution
* [ ] Enough information to help reviewers understand the feature, its functional description, example, documentation, test cases, test results, feature TODO list
* [ ] The MR Title describes the change, including the component name, ie "lwip: Add support for IP over Pigeon"
* [ ] All related links, including JIRA, backport, submodule MR, are mentioned in the `Related` subsection.
* [ ] Any GitHub issues are linked inside the git commit message and corresponding release notes
* [ ] Add label for the area this MR is part of
* [ ] For documentation updates, check if label `Docs` and `needs translation:CN` or `needs translation:EN` have been added when the other language version still needs the update. Skip adding the label if the document is not yet translated.
* [ ] Check if documents requiring translation fall under get-started section. If yes, add the labels mentioned above. Then the documentation team will assign a translator for you. Please inform the translator to prepare translation once your MR is ready to merge. The translation should be included in your MR to get it merged. For more information, see documentation workflow in Wiki.
* [ ] Any necessary "needs backport" labels are added
* [ ] Check if this is a breaking change. If it is, add notes to the `Breaking change notes` subsection below
* [ ] Release note entry if this is a new public feature, or a fix for an issue introduced in the previous release.
* [ ] The commit log is clean and ready to merge.
* [ ] All relevant CI jobs have been run, i.e. jobs which cover the code changed by the MR.
---
_For issues, put enough information here to help reviewers understand the issue, its root cause, impact, and the proposed solution._
_If this issue is a regression, specify in the `Related` subsection below, in which commit or MR it was introduced. This helps reviewers to check if the backport labels are set correctly._
---
_For features, put enough information here to help reviewers understand the feature, its functional description, example, documentation, test cases, test results, feature TODO list._
---
_For other small/non-public changes, which are not expected to be in the release notes, can be mentioned here, include:_
* changes that don't apply to customers, e.g. some CI fixes, test only MR and etc
## Related
* Mention or related JIRA tasks (e.g. IDF-0000), to make sure they get updated.
* Mention submodule MR, if there is
* Mention backport(ed) MR, if there is
_Don't touch the subsection titles below, they will be parsed by scripts._
## Release notes (Mandatory)
_Changes made in this MR that should go into the **Release Notes** should be listed here. Please use **past tense** and *specify the area (see maintainers page of IDF internal wiki)*. If there is a subscope, include it and separate with slash (`/`). Minor changes can go to the descriptions above without a release notes entry._
_Write all the changes in a **list** (Start at the beginning of the line with `-` or `*`). If multiple changes are made, each of them should take a single line. If there is only one change to list, it should still be the only line of a list. If this MR does not need any release notes, write "No release notes" here without the `-` or `*`. e.g._
* [WiFi] Changed/fixed/updated xxx
* [WiFi] Added support of xxx
* [Peripheral Drivers/I2S] Fixed xxx (https://github.com/espressif/esp-idf/issues/xxxx)
## Breaking change notes
_Remove this subsection if not used._
_If there are any breaking changes, please mention it here. Talking about (1) what is not accepted any more, (2) the alternative solution and (3) the benefits/reason. e.g._
_Please strictly follow the breaking change restriction, which means, if there is a breaking change but you are merging to non-major versions, you have to separate the breaking part out to another MR for a major version. The breaking change subsection is only accepted in MRs merging to major versions._
* [VFS/UART] Now vfs_uart_set_rts_cts accept one more instance argument, to support configuration to different ports.

115
.gitmodules vendored
View File

@@ -2,49 +2,31 @@
# All the relative URL paths are intended to be GitHub ones
# For Espressif's public projects please use '../../espressif/proj', not a '../proj'
#
# Submodules SBOM information
# ---------------------------
# Submodules, which are used directly and not forked into espressif namespace should
# contain SBOM information here. Other submodules should have the SBOM manifest file
# included in the root of their project's repository.
#
# The sbom-hash entry records the submodule's checkout SHA as presented in git-tree
# commit object. For example spiffs submodule
#
# $ git ls-tree HEAD components/spiffs/spiffs
# 160000 commit 0dbb3f71c5f6fae3747a9d935372773762baf852 components/spiffs/spiffs
#
# The hash can be also obtained with git submodule command
#
# $ git submodule status components/spiffs/spiffs
# 0dbb3f71c5f6fae3747a9d935372773762baf852 components/spiffs/spiffs (0.2-255-g0dbb3f71c5f6)
#
# The submodule SHA recorded here has to match with SHA, which is presented in git-tree.
# This is checked by CI. Also please don't forget to update the submodule version
# if you are changing the sbom-hash. This is important for SBOM generation.
[submodule "components/esp32/lib"]
path = components/esp32/lib
url = ../../espressif/esp32-wifi-lib.git
[submodule "components/esptool_py/esptool"]
path = components/esptool_py/esptool
url = ../../espressif/esptool.git
[submodule "components/bt/controller/lib_esp32"]
path = components/bt/controller/lib_esp32
url = ../../espressif/esp32-bt-lib.git
[submodule "components/bt/lib"]
path = components/bt/lib
url = ../../espressif/esp32-bt-lib.git
[submodule "components/bootloader/subproject/components/micro-ecc/micro-ecc"]
path = components/bootloader/subproject/components/micro-ecc/micro-ecc
[submodule "components/micro-ecc/micro-ecc"]
path = components/micro-ecc/micro-ecc
url = ../../kmackay/micro-ecc.git
sbom-version = 1.0
sbom-cpe = cpe:2.3:a:micro-ecc_project:micro-ecc:{}:*:*:*:*:*:*:*
sbom-supplier = Person: Ken MacKay
sbom-url = https://github.com/kmackay/micro-ecc
sbom-description = A small and fast ECDH and ECDSA implementation for 8-bit, 32-bit, and 64-bit processors
sbom-hash = d037ec89546fad14b5c4d5456c2e23a71e554966
[submodule "components/coap/libcoap"]
path = components/coap/libcoap
url = ../../obgm/libcoap.git
[submodule "components/aws_iot/aws-iot-device-sdk-embedded-C"]
path = components/aws_iot/aws-iot-device-sdk-embedded-C
url = ../../espressif/aws-iot-device-sdk-embedded-C.git
[submodule "components/nghttp/nghttp2"]
path = components/nghttp/nghttp2
url = ../../nghttp2/nghttp2.git
@@ -56,21 +38,10 @@
[submodule "components/spiffs/spiffs"]
path = components/spiffs/spiffs
url = ../../pellepl/spiffs.git
sbom-version = 0.2-255-g0dbb3f71c5f6
sbom-supplier = Person: Peter Andersson
sbom-url = https://github.com/pellepl/spiffs
sbom-description = Wear-leveled SPI flash file system for embedded devices
sbom-hash = 0dbb3f71c5f6fae3747a9d935372773762baf852
[submodule "components/json/cJSON"]
path = components/json/cJSON
url = ../../DaveGamble/cJSON.git
sbom-version = 1.7.15
sbom-cpe = cpe:2.3:a:cjson_project:cjson:{}:*:*:*:*:*:*:*
sbom-supplier = Person: Dave Gamble
sbom-url = https://github.com/DaveGamble/cJSON
sbom-description = Ultralightweight JSON parser in ANSI C
sbom-hash = d348621ca93571343a56862df7de4ff3bc9b5667
[submodule "components/mbedtls/mbedtls"]
path = components/mbedtls/mbedtls
@@ -95,71 +66,15 @@
[submodule "components/protobuf-c/protobuf-c"]
path = components/protobuf-c/protobuf-c
url = ../../protobuf-c/protobuf-c.git
sbom-version = 1.4.1
sbom-cpe = cpe:2.3:a:protobuf-c_project:protobuf-c:{}:*:*:*:*:*:*:*
sbom-supplier = Organization: protobuf-c community <https://groups.google.com/g/protobuf-c>
sbom-url = https://github.com/protobuf-c/protobuf-c
sbom-description = Protocol Buffers implementation in C
sbom-hash = abc67a11c6db271bedbb9f58be85d6f4e2ea8389
[submodule "components/unity/unity"]
path = components/unity/unity
url = ../../ThrowTheSwitch/Unity.git
sbom-version = v2.4.3-51-g7d2bf62b7e6a
sbom-supplier = Organization: ThrowTheSwitch community <http://www.throwtheswitch.org>
sbom-url = https://github.com/ThrowTheSwitch/Unity
sbom-description = Simple Unit Testing for C
sbom-hash = 7d2bf62b7e6afaf38153041a9d53c21aeeca9a25
[submodule "examples/build_system/cmake/import_lib/main/lib/tinyxml2"]
path = examples/build_system/cmake/import_lib/main/lib/tinyxml2
url = ../../leethomason/tinyxml2.git
[submodule "components/bt/host/nimble/nimble"]
path = components/bt/host/nimble/nimble
[submodule "components/nimble/nimble"]
path = components/nimble/nimble
url = ../../espressif/esp-nimble.git
[submodule "components/cbor/tinycbor"]
path = components/cbor/tinycbor
url = ../../intel/tinycbor.git
[submodule "components/esp_wifi/lib"]
path = components/esp_wifi/lib
url = ../../espressif/esp32-wifi-lib.git
[submodule "components/tinyusb/tinyusb"]
path = components/tinyusb/tinyusb
url = ../../espressif/tinyusb.git
[submodule "examples/peripherals/secure_element/atecc608_ecdsa/components/esp-cryptoauthlib"]
path = examples/peripherals/secure_element/atecc608_ecdsa/components/esp-cryptoauthlib
url = ../../espressif/esp-cryptoauthlib.git
[submodule "components/cmock/CMock"]
path = components/cmock/CMock
url = ../../ThrowTheSwitch/CMock.git
sbom-version = v2.5.2-2-geeecc49ce8af
sbom-supplier = Organization: ThrowTheSwitch community <http://www.throwtheswitch.org>
sbom-url = https://github.com/ThrowTheSwitch/CMock
sbom-description = CMock - Mock/stub generator for C
sbom-hash = eeecc49ce8af123cf8ad40efdb9673e37b56230f
[submodule "components/openthread/openthread"]
path = components/openthread/openthread
url = ../../espressif/openthread.git
[submodule "components/bt/controller/lib_esp32c3_family"]
path = components/bt/controller/lib_esp32c3_family
url = ../../espressif/esp32c3-bt-lib.git
[submodule "components/esp_phy/lib"]
path = components/esp_phy/lib
url = ../../espressif/esp-phy-lib.git
[submodule "components/openthread/lib"]
path = components/openthread/lib
url = ../../espressif/esp-thread-lib.git
[submodule "components/ieee802154/lib"]
path = components/ieee802154/lib
url = ../../espressif/esp-ieee802154-lib.git

View File

@@ -1,26 +0,0 @@
[mypy]
# Specifies the Python version used to parse and check the target program
python_version = 3.9
# Disallows defining functions without type annotations or with incomplete type annotations
# True => enforce type annotation in all function definitions
disallow_untyped_defs = True
# Shows a warning when returning a value with type Any from a function declared with a non- Any return type
warn_return_any = True
# Shows errors for missing return statements on some execution paths
warn_no_return = True
# Suppress error messages about imports that cannot be resolved
# True => ignore all import errors
ignore_missing_imports = True
# Disallows defining functions with incomplete type annotations
disallow_incomplete_defs = False
# Directs what to do with imports when the imported module is found as a .py file and not part of the files,
# modules and packages provided on the command line.
# SKIP -> mypy checks only single file, not included imports
follow_imports = skip

View File

@@ -1,125 +0,0 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.0.1
hooks:
- id: trailing-whitespace
# note: whitespace exclusions use multiline regex, see https://pre-commit.com/#regular-expressions
# items are:
# 1 - some file extensions
# 2 - any file matching *test*/*expected* (for host tests, if possible use this naming pattern always)
# 3 - any directory named 'testdata'
# 4 - IDF monitor test data
# 5 - protobuf auto-generated files
exclude: &whitespace_excludes |
(?x)^(
.+\.(md|rst|map|bin)|
.+test.*\/.*expected.*|
.+\/testdata\/.+|
.+test_idf_monitor\/tests\/.+|
.*_pb2.py|
.*.pb-c.h|
.*.pb-c.c
)$
- id: end-of-file-fixer
exclude: *whitespace_excludes
- id: check-executables-have-shebangs
- id: mixed-line-ending
args: ['-f=lf']
- id: double-quote-string-fixer
- repo: https://github.com/PyCQA/flake8
rev: 3.9.2
hooks:
- id: flake8
args: ['--config=.flake8', '--tee', '--benchmark']
- repo: https://github.com/pycqa/isort
rev: 5.11.5 # python 3.7 compatible
hooks:
- id: isort
name: isort (python)
exclude: >
(?x)^(
.*_pb2.py
)$
- repo: local
hooks:
- id: check-executables
name: Check File Permissions
entry: tools/ci/check_executables.py --action executables
language: python
types: [executable]
exclude: '\.pre-commit/.+'
- id: check-executable-list
name: Validate executable-list.txt
entry: tools/ci/check_executables.py --action list
language: python
pass_filenames: false
always_run: true
- id: check-kconfigs
name: Validate Kconfig files
entry: tools/ci/check_kconfigs.py
language: python
files: '^Kconfig$|Kconfig.*$'
- id: check-deprecated-kconfigs-options
name: Check if any Kconfig Options Deprecated
entry: tools/ci/check_deprecated_kconfigs.py
language: python
files: 'sdkconfig\.ci$|sdkconfig\.rename$|sdkconfig.*$'
- id: cmake-lint
name: Check CMake Files Format
entry: cmakelint --linelength=120 --spaces=4 --filter=-whitespace/indent
language: python
additional_dependencies:
- cmakelint==1.4.1
files: 'CMakeLists.txt$|\.cmake$'
exclude: '\/third_party\/'
- id: check-codeowners
name: Validate Codeowner File
entry: tools/ci/check_codeowners.py ci-check
language: python
files: '\.gitlab/CODEOWNERS'
pass_filenames: false
- id: check-rules-yml
name: Check rules.yml all rules have at lease one job applied, all rules needed exist
entry: tools/ci/check_rules_yml.py
language: python
files: '\.gitlab/ci/.+\.yml|\.gitlab-ci.yml'
pass_filenames: false
additional_dependencies:
- PyYAML == 5.3.1
- id: check-generated-rules
name: Check rules are generated (based on .gitlab/ci/dependencies/dependencies.yml)
entry: .gitlab/ci/dependencies/generate_rules.py
language: python
files: '\.gitlab/ci/dependencies/.+|\.gitlab/ci/rules\.yml'
pass_filenames: false
additional_dependencies:
- PyYAML == 5.3.1
- id: mypy-check
name: Check type annotations in python files
entry: tools/ci/check_type_comments.py
additional_dependencies:
- 'mypy==1.0.1'
- 'mypy-extensions==1.0.0'
exclude: >
(?x)^(
.*_pb2.py
)$
language: python
types: [python]
- id: check-tools-files-patterns
name: Check tools dir files patterns
entry: tools/ci/check_tools_files_patterns.py
language: python
files: '^tools/.+'
additional_dependencies:
- PyYAML == 5.3.1
pass_filenames: false
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.0.1
hooks:
- id: file-contents-sorter
files: 'tools\/ci\/(executable-list\.txt|mypy_ignore_list\.txt)'

606
.pylintrc
View File

@@ -1,606 +0,0 @@
[MASTER]
# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code.
extension-pkg-whitelist=
# Specify a score threshold to be exceeded before program exits with error.
fail-under=10
# Add files or directories to the blacklist. They should be base names, not
# paths.
ignore=CVS
# Add files or directories matching the regex patterns to the blacklist. The
# regex matches against base names, not paths.
ignore-patterns=
# Python code to execute, usually for sys.path manipulation such as
# pygtk.require().
#init-hook=
# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the
# number of processors available to use.
jobs=1
# Control the amount of potential inferred values when inferring a single
# object. This can help the performance when dealing with large functions or
# complex, nested conditions.
limit-inference-results=100
# List of plugins (as comma separated values of python module names) to load,
# usually to register additional checkers.
load-plugins=
# Pickle collected data for later comparisons.
persistent=yes
# When enabled, pylint would attempt to guess common misconfiguration and emit
# user-friendly hints instead of false-positive error messages.
suggestion-mode=yes
# Allow loading of arbitrary C extensions. Extensions are imported into the
# active Python interpreter and may run arbitrary code.
unsafe-load-any-extension=no
[MESSAGES CONTROL]
# Only show warnings with the listed confidence levels. Leave empty to show
# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED.
confidence=
# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifiers separated by comma (,) or put this
# option multiple times (only on the command line, not in the configuration
# file where it should appear only once). You can also use "--disable=all" to
# disable everything first and then reenable specific checks. For example, if
# you want to run only the similarities checker, you can use "--disable=all
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use "--disable=all --enable=classes
# --disable=W".
disable=print-statement,
parameter-unpacking,
unpacking-in-except,
old-raise-syntax,
backtick,
long-suffix,
old-ne-operator,
old-octal-literal,
import-star-module-level,
non-ascii-bytes-literal,
raw-checker-failed,
bad-inline-option,
locally-disabled,
file-ignored,
suppressed-message,
useless-suppression,
deprecated-pragma,
use-symbolic-message-instead,
apply-builtin,
basestring-builtin,
buffer-builtin,
cmp-builtin,
coerce-builtin,
execfile-builtin,
file-builtin,
long-builtin,
raw_input-builtin,
reduce-builtin,
standarderror-builtin,
unicode-builtin,
xrange-builtin,
coerce-method,
delslice-method,
getslice-method,
setslice-method,
no-absolute-import,
old-division,
dict-iter-method,
dict-view-method,
next-method-called,
metaclass-assignment,
indexing-exception,
raising-string,
reload-builtin,
oct-method,
hex-method,
nonzero-method,
cmp-method,
input-builtin,
round-builtin,
intern-builtin,
unichr-builtin,
map-builtin-not-iterating,
zip-builtin-not-iterating,
range-builtin-not-iterating,
filter-builtin-not-iterating,
using-cmp-argument,
eq-without-hash,
div-method,
idiv-method,
rdiv-method,
exception-message-attribute,
invalid-str-codec,
sys-max-int,
bad-python3-import,
deprecated-string-function,
deprecated-str-translate-call,
deprecated-itertools-function,
deprecated-types-field,
next-method-defined,
dict-items-not-iterating,
dict-keys-not-iterating,
dict-values-not-iterating,
deprecated-operator-function,
deprecated-urllib-function,
xreadlines-attribute,
deprecated-sys-function,
exception-escape,
comprehension-escape,
missing-function-docstring, # Modified since here, include this line
missing-class-docstring,
missing-module-docstring,
wrong-import-order,
invalid-name,
too-few-public-methods,
too-many-locals,
bad-super-call, # since we still haven't drop python2 support
too-many-nested-blocks,
too-many-branches,
too-many-statements,
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
# multiple time (only on the command line, not in the configuration file where
# it should appear only once). See also the "--disable" option for examples.
enable=c-extension-no-member
[REPORTS]
# Python expression which should return a score less than or equal to 10. You
# have access to the variables 'error', 'warning', 'refactor', and 'convention'
# which contain the number of messages in each category, as well as 'statement'
# which is the total number of statements analyzed. This score is used by the
# global evaluation report (RP0004).
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
# Template used to display messages. This is a python new-style format string
# used to format the message information. See doc for all details.
#msg-template=
# Set the output format. Available formats are text, parseable, colorized, json
# and msvs (visual studio). You can also give a reporter class, e.g.
# mypackage.mymodule.MyReporterClass.
output-format=text
# Tells whether to display a full report or only the messages.
reports=no
# Activate the evaluation score.
score=yes
[REFACTORING]
# Maximum number of nested blocks for function / method body
max-nested-blocks=5
# Complete name of functions that never returns. When checking for
# inconsistent-return-statements if a never returning function is called then
# it will be considered as an explicit return statement and no message will be
# printed.
never-returning-functions=sys.exit
[TYPECHECK]
# List of decorators that produce context managers, such as
# contextlib.contextmanager. Add to this list to register other decorators that
# produce valid context managers.
contextmanager-decorators=contextlib.contextmanager
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
# expressions are accepted.
generated-members=
# Tells whether missing members accessed in mixin class should be ignored. A
# mixin class is detected if its name ends with "mixin" (case insensitive).
ignore-mixin-members=yes
# Tells whether to warn about missing members when the owner of the attribute
# is inferred to be None.
ignore-none=yes
# This flag controls whether pylint should warn about no-member and similar
# checks whenever an opaque object is returned when inferring. The inference
# can return multiple potential results while evaluating a Python object, but
# some branches might not be evaluated, which results in partial inference. In
# that case, it might be useful to still emit no-member and other checks for
# the rest of the inferred objects.
ignore-on-opaque-inference=yes
# List of class names for which member attributes should not be checked (useful
# for classes with dynamically set attributes). This supports the use of
# qualified names.
ignored-classes=optparse.Values,thread._local,_thread._local
# List of module names for which member attributes should not be checked
# (useful for modules/projects where namespaces are manipulated during runtime
# and thus existing member attributes cannot be deduced by static analysis). It
# supports qualified module names, as well as Unix pattern matching.
ignored-modules=
# Show a hint with possible names when a member name was not found. The aspect
# of finding the hint is based on edit distance.
missing-member-hint=yes
# The minimum edit distance a name should have in order to be considered a
# similar match for a missing member name.
missing-member-hint-distance=1
# The total number of similar names that should be taken in consideration when
# showing a hint for a missing member.
missing-member-max-choices=1
# List of decorators that change the signature of a decorated function.
signature-mutators=ttfw_idf.idf_example_test,ttfw_idf.idf_unit_test,ttfw_idf.idf_custom_test,ttfw_idf.idf_component_unit_test
[SPELLING]
# Limits count of emitted suggestions for spelling mistakes.
max-spelling-suggestions=4
# Spelling dictionary name. Available dictionaries: none. To make it work,
# install the python-enchant package.
spelling-dict=
# List of comma separated words that should not be checked.
spelling-ignore-words=
# A path to a file that contains the private dictionary; one word per line.
spelling-private-dict-file=
# Tells whether to store unknown words to the private dictionary (see the
# --spelling-private-dict-file option) instead of raising a message.
spelling-store-unknown-words=no
[FORMAT]
# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
expected-line-ending-format=
# Regexp for a line that is allowed to be longer than the limit.
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
# Number of spaces of indent required inside a hanging or continued line.
indent-after-paren=4
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
# tab).
indent-string=' '
# Maximum number of characters on a single line.
max-line-length=160
# Maximum number of lines in a module.
max-module-lines=1000
# List of optional constructs for which whitespace checking is disabled. `dict-
# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
# `trailing-comma` allows a space between comma and closing bracket: (a, ).
# `empty-line` allows space-only lines.
no-space-check=trailing-comma,
dict-separator
# Allow the body of a class to be on the same line as the declaration if body
# contains single statement.
single-line-class-stmt=no
# Allow the body of an if to be on the same line as the test if there is no
# else.
single-line-if-stmt=no
[STRING]
# This flag controls whether inconsistent-quotes generates a warning when the
# character used as a quote delimiter is used inconsistently within a module.
check-quote-consistency=no
# This flag controls whether the implicit-str-concat should generate a warning
# on implicit string concatenation in sequences defined over several lines.
check-str-concat-over-line-jumps=no
[LOGGING]
# The type of string formatting that logging methods do. `old` means using %
# formatting, `new` is for `{}` formatting.
logging-format-style=old
# Logging modules to check that the string format arguments are in logging
# function parameter format.
logging-modules=logging
[MISCELLANEOUS]
# List of note tags to take in consideration, separated by a comma.
notes=FIXME,
XXX,
TODO
# Regular expression of note tags to take in consideration.
#notes-rgx=
[SIMILARITIES]
# Ignore comments when computing similarities.
ignore-comments=yes
# Ignore docstrings when computing similarities.
ignore-docstrings=yes
# Ignore imports when computing similarities.
ignore-imports=no
# Minimum lines number of a similarity.
min-similarity-lines=4
[VARIABLES]
# List of additional names supposed to be defined in builtins. Remember that
# you should avoid defining new builtins when possible.
additional-builtins=
# Tells whether unused global variables should be treated as a violation.
allow-global-unused-variables=yes
# List of strings which can identify a callback function by name. A callback
# name must start or end with one of those strings.
callbacks=cb_,
_cb
# A regular expression matching the name of dummy variables (i.e. expected to
# not be used).
dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_
# Argument names that match this expression will be ignored. Default to name
# with leading underscore.
ignored-argument-names=_.*|^ignored_|^unused_
# Tells whether we should check for unused import in __init__ files.
init-import=no
# List of qualified module names which can have objects that can redefine
# builtins.
redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io
[BASIC]
# Naming style matching correct argument names.
argument-naming-style=snake_case
# Regular expression matching correct argument names. Overrides argument-
# naming-style.
#argument-rgx=
# Naming style matching correct attribute names.
attr-naming-style=snake_case
# Regular expression matching correct attribute names. Overrides attr-naming-
# style.
#attr-rgx=
# Bad variable names which should always be refused, separated by a comma.
bad-names=foo,
bar,
baz,
toto,
tutu,
tata
# Bad variable names regexes, separated by a comma. If names match any regex,
# they will always be refused
bad-names-rgxs=
# Naming style matching correct class attribute names.
class-attribute-naming-style=any
# Regular expression matching correct class attribute names. Overrides class-
# attribute-naming-style.
#class-attribute-rgx=
# Naming style matching correct class names.
class-naming-style=PascalCase
# Regular expression matching correct class names. Overrides class-naming-
# style.
#class-rgx=
# Naming style matching correct constant names.
const-naming-style=UPPER_CASE
# Regular expression matching correct constant names. Overrides const-naming-
# style.
#const-rgx=
# Minimum line length for functions/classes that require docstrings, shorter
# ones are exempt.
docstring-min-length=-1
# Naming style matching correct function names.
function-naming-style=snake_case
# Regular expression matching correct function names. Overrides function-
# naming-style.
#function-rgx=
# Good variable names which should always be accepted, separated by a comma.
good-names=i,
j,
k,
ex,
Run,
_
# Good variable names regexes, separated by a comma. If names match any regex,
# they will always be accepted
good-names-rgxs=
# Include a hint for the correct naming format with invalid-name.
include-naming-hint=no
# Naming style matching correct inline iteration names.
inlinevar-naming-style=any
# Regular expression matching correct inline iteration names. Overrides
# inlinevar-naming-style.
#inlinevar-rgx=
# Naming style matching correct method names.
method-naming-style=snake_case
# Regular expression matching correct method names. Overrides method-naming-
# style.
#method-rgx=
# Naming style matching correct module names.
module-naming-style=snake_case
# Regular expression matching correct module names. Overrides module-naming-
# style.
#module-rgx=
# Colon-delimited sets of names that determine each other's naming style when
# the name regexes allow several styles.
name-group=
# Regular expression which should only match function or class names that do
# not require a docstring.
no-docstring-rgx=^_
# List of decorators that produce properties, such as abc.abstractproperty. Add
# to this list to register other decorators that produce valid properties.
# These decorators are taken in consideration only for invalid-name.
property-classes=abc.abstractproperty
# Naming style matching correct variable names.
variable-naming-style=snake_case
# Regular expression matching correct variable names. Overrides variable-
# naming-style.
#variable-rgx=
[DESIGN]
# Maximum number of arguments for function / method.
max-args=5
# Maximum number of attributes for a class (see R0902).
max-attributes=12
# Maximum number of boolean expressions in an if statement (see R0916).
max-bool-expr=5
# Maximum number of branch for function / method body.
max-branches=12
# Maximum number of locals for function / method body.
max-locals=15
# Maximum number of parents for a class (see R0901).
max-parents=7
# Maximum number of public methods for a class (see R0904).
max-public-methods=20
# Maximum number of return / yield for function / method body.
max-returns=6
# Maximum number of statements in function / method body.
max-statements=50
# Minimum number of public methods for a class (see R0903).
min-public-methods=2
[CLASSES]
# List of method names used to declare (i.e. assign) instance attributes.
defining-attr-methods=__init__,
__new__,
setUp,
__post_init__
# List of member names, which should be excluded from the protected access
# warning.
exclude-protected=_asdict,
_fields,
_replace,
_source,
_make
# List of valid names for the first argument in a class method.
valid-classmethod-first-arg=cls
# List of valid names for the first argument in a metaclass class method.
valid-metaclass-classmethod-first-arg=cls
[IMPORTS]
# List of modules that can be imported at any level, not just the top level
# one.
allow-any-import-level=
# Allow wildcard imports from modules that define __all__.
allow-wildcard-with-all=no
# Analyse import fallback blocks. This can be used to support both Python 2 and
# 3 compatible code, which means that the block might have code that exists
# only in one or another interpreter, leading to false positives when analysed.
analyse-fallback-blocks=no
# Deprecated modules which should not be used, separated by a comma.
deprecated-modules=optparse,tkinter.tix
# Create a graph of external dependencies in the given file (report RP0402 must
# not be disabled).
ext-import-graph=
# Create a graph of every (i.e. internal and external) dependencies in the
# given file (report RP0402 must not be disabled).
import-graph=
# Create a graph of internal dependencies in the given file (report RP0402 must
# not be disabled).
int-import-graph=
# Force import order to recognize a module as part of the standard
# compatibility libraries.
known-standard-library=
# Force import order to recognize a module as part of a third party library.
known-third-party=enchant
# Couples of modules and preferred modules, separated by a comma.
preferred-modules=
[EXCEPTIONS]
# Exceptions that will emit a warning when being caught. Defaults to
# "BaseException, Exception".
overgeneral-exceptions=BaseException,
Exception

View File

@@ -15,7 +15,7 @@ python:
install:
- requirements: docs/requirements.txt
# We need to list all the submodules included in documenation build by DOxygen
submodules:
# We need to list all the submodules included in documentation build by Doxygen
submodules:
include:
- components/mqtt/esp-mqtt
- components/mqtt/esp-mqtt

7
.travis.yml Normal file
View File

@@ -0,0 +1,7 @@
language: python
sudo: false
python:
- "3.4"
script:
- pip install flake8
- travis_wait 20 python -m flake8 --config=.flake8 .

View File

@@ -1,208 +1,45 @@
cmake_minimum_required(VERSION 3.5)
project(esp-idf C CXX ASM)
if(CMAKE_CURRENT_LIST_DIR STREQUAL CMAKE_SOURCE_DIR)
message(FATAL_ERROR "Current directory '${CMAKE_CURRENT_LIST_DIR}' is not buildable. "
"Change directories to one of the example projects in '${CMAKE_CURRENT_LIST_DIR}/examples' and try "
"again.")
endif()
#
# Add each component to the build as a library
#
foreach(COMPONENT_PATH ${BUILD_COMPONENT_PATHS})
get_filename_component(COMPONENT_NAME ${COMPONENT_PATH} NAME)
# Variables compile_options, c_compile_options, cxx_compile_options, compile_definitions, link_options shall
# not be unset as they may already contain flags, set by toolchain-TARGET.cmake files.
list(FIND BUILD_TEST_COMPONENT_PATHS ${COMPONENT_PATH} idx)
# Add the following build specifications here, since these seem to be dependent
# on config values on the root Kconfig.
if(NOT BOOTLOADER_BUILD)
if(CONFIG_COMPILER_OPTIMIZATION_SIZE)
list(APPEND compile_options "-Os")
if(CMAKE_C_COMPILER_ID MATCHES "GNU")
list(APPEND compile_options "-freorder-blocks")
endif()
elseif(CONFIG_COMPILER_OPTIMIZATION_DEFAULT)
list(APPEND compile_options "-Og")
elseif(CONFIG_COMPILER_OPTIMIZATION_NONE)
list(APPEND compile_options "-O0")
elseif(CONFIG_COMPILER_OPTIMIZATION_PERF)
list(APPEND compile_options "-O2")
if(NOT idx EQUAL -1)
list(GET BUILD_TEST_COMPONENTS ${idx} test_component)
set(COMPONENT_NAME ${test_component})
endif()
else() # BOOTLOADER_BUILD
component_get_target(COMPONENT_TARGET ${COMPONENT_NAME})
if(CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE)
list(APPEND compile_options "-Os")
if(CMAKE_C_COMPILER_ID MATCHES "GNU")
list(APPEND compile_options "-freorder-blocks")
endif()
elseif(CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG)
list(APPEND compile_options "-Og")
elseif(CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE)
list(APPEND compile_options "-O0")
elseif(CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF)
list(APPEND compile_options "-O2")
endif()
endif()
if(CONFIG_COMPILER_CXX_EXCEPTIONS)
list(APPEND cxx_compile_options "-fexceptions")
else()
list(APPEND cxx_compile_options "-fno-exceptions")
endif()
if(CONFIG_COMPILER_CXX_RTTI)
list(APPEND cxx_compile_options "-frtti")
else()
list(APPEND cxx_compile_options "-fno-rtti")
list(APPEND link_options "-fno-rtti") # used to invoke correct multilib variant (no-rtti) during linking
endif()
if(CONFIG_COMPILER_SAVE_RESTORE_LIBCALLS)
list(APPEND compile_options "-msave-restore")
endif()
if(CONFIG_COMPILER_DISABLE_GCC8_WARNINGS)
list(APPEND compile_options "-Wno-parentheses"
"-Wno-sizeof-pointer-memaccess"
"-Wno-clobbered")
list(APPEND compile_options "-Wno-format-overflow"
"-Wno-stringop-truncation"
"-Wno-misleading-indentation"
"-Wno-cast-function-type"
"-Wno-implicit-fallthrough"
"-Wno-unused-const-variable"
"-Wno-switch-unreachable"
"-Wno-format-truncation"
"-Wno-memset-elt-size"
"-Wno-int-in-bool-context")
endif()
if(CMAKE_C_COMPILER_ID MATCHES "GNU")
list(APPEND c_compile_options "-Wno-old-style-declaration")
endif()
# Clang finds some warnings in IDF code which GCC doesn't.
# All these warnings should be fixed before Clang is presented
# as a toolchain choice for users.
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
# Clang checks Doxygen comments for being in sync with function prototype.
# There are some inconsistencies, especially in ROM headers.
list(APPEND compile_options "-Wno-documentation")
# GCC allows repeated typedefs when the source and target types are the same.
# Clang doesn't allow this. This occurs in many components due to forward
# declarations.
list(APPEND compile_options "-Wno-typedef-redefinition")
# This issue is seemingly related to newlib's char type functions.
# Fix is not clear yet.
list(APPEND compile_options "-Wno-char-subscripts")
# Clang seems to notice format string issues which GCC doesn't.
list(APPEND compile_options "-Wno-format-security")
# Logic bug in essl component
list(APPEND compile_options "-Wno-tautological-overlap-compare")
# Some pointer checks in mDNS component check addresses which can't be NULL
list(APPEND compile_options "-Wno-tautological-pointer-compare")
# Similar to the above, in tcp_transport
list(APPEND compile_options "-Wno-pointer-bool-conversion")
# mbedTLS md5.c triggers this warning in md5_test_buf (false positive)
list(APPEND compile_options "-Wno-string-concatenation")
# multiple cases of implict convertions between unrelated enum types
list(APPEND compile_options "-Wno-enum-conversion")
# When IRAM_ATTR is specified both in function declaration and definition,
# it produces different section names, since section names include __COUNTER__.
# Occurs in multiple places.
list(APPEND compile_options "-Wno-section")
# Multiple cases of attributes unknown to clang, for example
# __attribute__((optimize("-O3")))
list(APPEND compile_options "-Wno-unknown-attributes")
# Disable Clang warnings for atomic operations with access size
# more then 4 bytes
list(APPEND compile_options "-Wno-atomic-alignment")
# Clang also produces many -Wunused-function warnings which GCC doesn't.
# However these aren't treated as errors.
endif()
# More warnings may exist in unit tests and example projects.
if(CONFIG_COMPILER_WARN_WRITE_STRINGS)
list(APPEND compile_options "-Wwrite-strings")
endif()
if(CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE)
list(APPEND compile_definitions "-DNDEBUG")
endif()
if(CONFIG_COMPILER_STACK_CHECK_MODE_NORM)
list(APPEND compile_options "-fstack-protector")
elseif(CONFIG_COMPILER_STACK_CHECK_MODE_STRONG)
list(APPEND compile_options "-fstack-protector-strong")
elseif(CONFIG_COMPILER_STACK_CHECK_MODE_ALL)
list(APPEND compile_options "-fstack-protector-all")
endif()
if(CONFIG_COMPILER_DUMP_RTL_FILES)
list(APPEND compile_options "-fdump-rtl-expand")
endif()
if(NOT ${CMAKE_C_COMPILER_VERSION} VERSION_LESS 8.0.0)
if(CONFIG_COMPILER_HIDE_PATHS_MACROS)
list(APPEND compile_options "-fmacro-prefix-map=${CMAKE_SOURCE_DIR}=.")
list(APPEND compile_options "-fmacro-prefix-map=${IDF_PATH}=IDF")
endif()
endif()
# GCC-specific options
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
list(APPEND compile_options "-fstrict-volatile-bitfields"
"-Wno-error=unused-but-set-variable"
)
endif()
if(CONFIG_ESP_SYSTEM_USE_EH_FRAME)
list(APPEND compile_options "-fasynchronous-unwind-tables")
list(APPEND link_options "-Wl,--eh-frame-hdr")
endif()
list(APPEND link_options "-fno-lto")
# Placing jump tables in flash would cause issues with code that required
# to be placed in IRAM
list(APPEND compile_options "-fno-jump-tables")
if(CMAKE_C_COMPILER_ID MATCHES "GNU")
# This flag is GCC-specific.
# Not clear yet if some other flag should be used for Clang.
list(APPEND compile_options "-fno-tree-switch-conversion")
endif()
if(CMAKE_C_COMPILER_ID MATCHES "LLVM")
list(APPEND compile_options "-fno-use-cxa-atexit")
endif()
idf_build_set_property(COMPILE_OPTIONS "${compile_options}" APPEND)
idf_build_set_property(C_COMPILE_OPTIONS "${c_compile_options}" APPEND)
idf_build_set_property(CXX_COMPILE_OPTIONS "${cxx_compile_options}" APPEND)
idf_build_set_property(ASM_COMPILE_OPTIONS "${asm_compile_options}" APPEND)
idf_build_set_property(COMPILE_DEFINITIONS "${compile_definitions}" APPEND)
idf_build_set_property(LINK_OPTIONS "${link_options}" APPEND)
idf_build_get_property(build_component_targets __BUILD_COMPONENT_TARGETS)
# Add each component as a subdirectory, processing each component's CMakeLists.txt
foreach(component_target ${build_component_targets})
__component_get_property(dir ${component_target} COMPONENT_DIR)
__component_get_property(_name ${component_target} COMPONENT_NAME)
__component_get_property(prefix ${component_target} __PREFIX)
__component_get_property(alias ${component_target} COMPONENT_ALIAS)
set(COMPONENT_NAME ${_name})
set(COMPONENT_DIR ${dir})
set(COMPONENT_ALIAS ${alias})
set(COMPONENT_PATH ${dir}) # for backward compatibility only, COMPONENT_DIR is preferred
idf_build_get_property(build_prefix __PREFIX)
set(__idf_component_context 1)
if(NOT prefix STREQUAL build_prefix)
add_subdirectory(${dir} ${prefix}_${_name})
else()
add_subdirectory(${dir} ${_name})
endif()
set(__idf_component_context 0)
add_subdirectory(${COMPONENT_PATH} ${COMPONENT_NAME})
endforeach()
unset(COMPONENT_NAME)
unset(COMPONENT_PATH)
# each component should see the include directories of its requirements
#
# (we can't do this until all components are registered and targets exist in cmake, as we have
# a circular requirements graph...)
foreach(component ${BUILD_COMPONENTS})
component_get_target(component_target ${component})
if(TARGET ${component_target})
get_component_requirements(${component} deps priv_deps)
list(APPEND priv_deps ${IDF_COMPONENT_REQUIRES_COMMON})
foreach(dep ${deps})
component_get_target(dep_target ${dep})
add_component_dependencies(${component_target} ${dep_target} PUBLIC)
endforeach()
foreach(dep ${priv_deps})
component_get_target(dep_target ${dep})
add_component_dependencies(${component_target} ${dep_target} PRIVATE)
endforeach()
endif()
endforeach()

View File

@@ -6,7 +6,7 @@ We welcome contributions to the esp-idf project!
How to Contribute
-----------------
Contributions to esp-idf - fixing bugs, adding features, adding documentation - are welcome. We accept contributions via `Github Pull Requests <https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests>`_.
Contributions to esp-idf - fixing bugs, adding features, adding documentation - are welcome. We accept contributions via `Github Pull Requests <https://help.github.com/articles/about-pull-requests/>`_.
Before Contributing
-------------------
@@ -17,8 +17,6 @@ Before sending us a Pull Request, please consider this list of points:
* Does any new code conform to the esp-idf :doc:`Style Guide <style-guide>`?
* Have you installed the :doc:`pre-commit hook <install-pre-commit-hook>` for esp-idf project?
* Does the code documentation follow requirements in :doc:`documenting-code`?
* Is the code adequately commented for people to understand how it is structured?
@@ -29,7 +27,7 @@ Before sending us a Pull Request, please consider this list of points:
* Example contributions are also welcome. Please check the :doc:`creating-examples` guide for these.
* If the contribution contains multiple commits, are they grouped together into logical changes (one major change per pull request)? Are any commits with names like "fixed typo" `squashed into previous commits <https://eli.thegreenplace.net/2014/02/19/squashing-github-pull-requests-into-a-single-commit/>`_?
* If the contribution contains multiple commits, are they grouped together into logical changes (one major change per pull request)? Are any commits with names like "fixed typo" `squashed into previous commits <http://eli.thegreenplace.net/2014/02/19/squashing-github-pull-requests-into-a-single-commit/>`_?
* If you're unsure about any of these points, please open the Pull Request anyhow and then ask us for feedback.
@@ -54,8 +52,8 @@ Related Documents
:maxdepth: 1
style-guide
install-pre-commit-hook
documenting-code
add-ons-reference
creating-examples
../api-reference/template
contributor-agreement

333
Kconfig
View File

@@ -8,18 +8,11 @@ mainmenu "Espressif IoT Development Framework Configuration"
bool
option env="IDF_CMAKE"
config IDF_ENV_FPGA
# This option is for internal use only
bool
option env="IDF_ENV_FPGA"
config IDF_TARGET_ARCH_RISCV
bool
default "n"
config IDF_TARGET_ARCH_XTENSA
bool
default "n"
config IDF_TARGET_ENV
# A proxy to get environment variable $IDF_TARGET
string
option env="IDF_TARGET"
config IDF_TARGET
# This option records the IDF target when sdkconfig is generated the first time.
@@ -27,74 +20,35 @@ mainmenu "Espressif IoT Development Framework Configuration"
# the build system is responsible for detecting the mismatch between
# CONFIG_IDF_TARGET and $IDF_TARGET.
string
default "$IDF_TARGET"
config IDF_TARGET_ESP32
bool
default "y" if IDF_TARGET="esp32"
select IDF_TARGET_ARCH_XTENSA
config IDF_TARGET_ESP32S2
bool
default "y" if IDF_TARGET="esp32s2"
select FREERTOS_UNICORE
select IDF_TARGET_ARCH_XTENSA
config IDF_TARGET_ESP32S3
bool
default "y" if IDF_TARGET="esp32s3"
select IDF_TARGET_ARCH_XTENSA
config IDF_TARGET_ESP32C3
bool
default "y" if IDF_TARGET="esp32c3"
select FREERTOS_UNICORE
select IDF_TARGET_ARCH_RISCV
config IDF_TARGET_ESP32H2
bool
default "y" if IDF_TARGET="esp32h2"
select FREERTOS_UNICORE
select IDF_TARGET_ARCH_RISCV
config IDF_TARGET_LINUX
bool
default "y" if IDF_TARGET="linux"
default "IDF_TARGET_NOT_SET" if IDF_TARGET_ENV=""
default IDF_TARGET_ENV
config IDF_FIRMWARE_CHIP_ID
hex
default 0x0000 if IDF_TARGET_ESP32
default 0x0002 if IDF_TARGET_ESP32S2
default 0x0005 if IDF_TARGET_ESP32C3
default 0x0009 if IDF_TARGET_ESP32S3
default 0x000A if IDF_TARGET_ESP32H2 # ESP32H2-TODO: IDF-3475
default 0x0000 if IDF_TARGET="esp32"
default 0xFFFF
menu "SDK tool configuration"
config SDK_TOOLPREFIX
config TOOLPREFIX
string "Compiler toolchain path/prefix"
default "xtensa-esp32-elf-" if IDF_TARGET_ESP32
default "xtensa-esp32s2-elf-" if IDF_TARGET_ESP32S2
default "xtensa-esp32s3-elf-" if IDF_TARGET_ESP32S3
default "riscv32-esp-elf-" if IDF_TARGET_ESP32C3
default "riscv32-esp-elf-" if IDF_TARGET_ESP32H2
default "xtensa-esp32-elf-"
help
The prefix/path that is used to call the toolchain. The default setting assumes
a crosstool-ng gcc setup that is in your PATH.
config SDK_PYTHON
string "Python interpreter"
config PYTHON
string "Python 2 interpreter"
depends on !IDF_CMAKE
default "python"
help
The executable name/path that is used to run python.
The executable name/path that is used to run python. On some systems Python 2.x
may need to be invoked as python2.
(Note: This option is used with the legacy GNU Make build system only.)
(Note: This option is used with the GNU Make build system only, not idf.py
or CMake-based builds.)
config SDK_MAKE_WARN_UNDEFINED_VARIABLES
config MAKE_WARN_UNDEFINED_VARIABLES
bool "'make' warns on undefined variables"
depends on !IDF_CMAKE
default "y"
help
Adds --warn-undefined-variables to MAKEFLAGS. This causes make to
@@ -104,148 +58,37 @@ mainmenu "Espressif IoT Development Framework Configuration"
or otherwise missing, but it can be unwanted if you have Makefiles which
depend on undefined variables expanding to an empty string.
(Note: this option is used with the legacy GNU Make build system only.)
config SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS
bool "Toolchain supports time_t wide 64-bits"
default n
help
Enable this option in case you have a custom toolchain which supports time_t wide 64-bits.
This option checks time_t is 64-bits and disables ROM time functions
to use the time functions from the toolchain instead.
This option allows resolving the Y2K38 problem.
See "Setup Linux Toolchain from Scratch" to build
a custom toolchain which supports 64-bits time_t.
Note: ESP-IDF does not currently come with any pre-compiled toolchain
that supports 64-bit wide time_t.
This will change in a future major release,
but currently 64-bit time_t requires a custom built toolchain.
endmenu # SDK tool configuration
menu "Build type"
choice APP_BUILD_TYPE
prompt "Application build type"
default APP_BUILD_TYPE_APP_2NDBOOT
help
Select the way the application is built.
By default, the application is built as a binary file in a format compatible with
the ESP-IDF bootloader. In addition to this application, 2nd stage bootloader is
also built. Application and bootloader binaries can be written into flash and
loaded/executed from there.
Another option, useful for only very small and limited applications, is to only link
the .elf file of the application, such that it can be loaded directly into RAM over
JTAG. Note that since IRAM and DRAM sizes are very limited, it is not possible to
build any complex application this way. However for kinds of testing and debugging,
this option may provide faster iterations, since the application does not need to be
written into flash.
Note that at the moment, ESP-IDF does not contain all the startup code required to
initialize the CPUs and ROM memory (data/bss). Therefore it is necessary to execute
a bit of ROM code prior to executing the application. A gdbinit file may look as follows (for ESP32):
# Connect to a running instance of OpenOCD
target remote :3333
# Reset and halt the target
mon reset halt
# Run to a specific point in ROM code,
# where most of initialization is complete.
thb *0x40007d54
c
# Load the application into RAM
load
# Run till app_main
tb app_main
c
Execute this gdbinit file as follows:
xtensa-esp32-elf-gdb build/app-name.elf -x gdbinit
Example gdbinit files for other targets can be found in tools/test_apps/system/gdb_loadable_elf/
Recommended sdkconfig.defaults for building loadable ELF files is as follows.
CONFIG_APP_BUILD_TYPE_ELF_RAM is required, other options help reduce application
memory footprint.
CONFIG_APP_BUILD_TYPE_ELF_RAM=y
CONFIG_VFS_SUPPORT_TERMIOS=
CONFIG_NEWLIB_NANO_FORMAT=y
CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
CONFIG_ESP_DEBUG_STUBS_ENABLE=
CONFIG_ESP_ERR_TO_NAME_LOOKUP=
config APP_BUILD_TYPE_APP_2NDBOOT
bool
prompt "Default (binary application + 2nd stage bootloader)"
select APP_BUILD_GENERATE_BINARIES
select APP_BUILD_BOOTLOADER
select APP_BUILD_USE_FLASH_SECTIONS
config APP_BUILD_TYPE_ELF_RAM
bool
prompt "ELF file, loadable into RAM (EXPERIMENTAL))"
endchoice # APP_BUILD_TYPE
# Hidden options, set according to the choice above
config APP_BUILD_GENERATE_BINARIES
bool # Whether to generate .bin files or not
config APP_BUILD_BOOTLOADER
bool # Whether to build the bootloader
config APP_BUILD_USE_FLASH_SECTIONS
bool # Whether to place code/data into memory-mapped flash sections
endmenu # Build type
source "$COMPONENT_KCONFIGS_PROJBUILD_SOURCE_FILE"
source "$COMPONENT_KCONFIGS_PROJBUILD"
menu "Compiler options"
choice COMPILER_OPTIMIZATION
choice OPTIMIZATION_COMPILER
prompt "Optimization Level"
default COMPILER_OPTIMIZATION_DEFAULT
default OPTIMIZATION_LEVEL_DEBUG
help
This option sets compiler optimization level (gcc -O argument) for the app.
This option sets compiler optimization level (gcc -O argument).
- The "Default" setting will add the -0g flag to CFLAGS.
- The "Size" setting will add the -0s flag to CFLAGS.
- The "Performance" setting will add the -O2 flag to CFLAGS.
- The "None" setting will add the -O0 flag to CFLAGS.
- for "Release" setting, -Os flag is added to CFLAGS.
- for "Debug" setting, -Og flag is added to CFLAGS.
The "Size" setting cause the compiled code to be smaller and faster, but
may lead to difficulties of correlating code addresses to source file
lines when debugging.
"Release" with -Os produces smaller & faster compiled code but it
may be harder to correlated code addresses to source files when debugging.
The "Performance" setting causes the compiled code to be larger and faster,
but will be easier to correlated code addresses to source file lines.
To add custom optimization settings, set CFLAGS and/or CPPFLAGS
in project makefile, before including $(IDF_PATH)/make/project.mk. Note that
custom optimization levels may be unsupported.
"None" with -O0 produces compiled code without optimization.
Note that custom optimization levels may be unsupported.
Compiler optimization for the IDF bootloader is set separately,
see the BOOTLOADER_COMPILER_OPTIMIZATION setting.
config COMPILER_OPTIMIZATION_DEFAULT
config OPTIMIZATION_LEVEL_DEBUG
bool "Debug (-Og)"
config COMPILER_OPTIMIZATION_SIZE
bool "Optimize for size (-Os)"
config COMPILER_OPTIMIZATION_PERF
bool "Optimize for performance (-O2)"
config COMPILER_OPTIMIZATION_NONE
bool "Debug without optimization (-O0)"
config OPTIMIZATION_LEVEL_RELEASE
bool "Release (-Os)"
endchoice
choice COMPILER_OPTIMIZATION_ASSERTION_LEVEL
choice OPTIMIZATION_ASSERTION_LEVEL
prompt "Assertion level"
default COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE
default OPTIMIZATION_ASSERTIONS_ENABLED
help
Assertions can be:
@@ -257,20 +100,20 @@ mainmenu "Espressif IoT Development Framework Configuration"
- Disabled entirely (not recommended for most configurations.) -DNDEBUG is added
to CPPFLAGS in this case.
config COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE
config OPTIMIZATION_ASSERTIONS_ENABLED
prompt "Enabled"
bool
help
Enable assertions. Assertion content and line number will be printed on failure.
config COMPILER_OPTIMIZATION_ASSERTIONS_SILENT
config OPTIMIZATION_ASSERTIONS_SILENT
prompt "Silent (saves code size)"
bool
help
Enable silent assertions. Failed assertions will abort(), user needs to
use the aborting address to find the line number with the failed assertion.
config COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE
config OPTIMIZATION_ASSERTIONS_DISABLED
prompt "Disabled (sets -DNDEBUG)"
bool
help
@@ -278,39 +121,7 @@ mainmenu "Espressif IoT Development Framework Configuration"
endchoice # assertions
config COMPILER_OPTIMIZATION_ASSERTION_LEVEL
int
default 0 if COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE
default 1 if COMPILER_OPTIMIZATION_ASSERTIONS_SILENT
default 2 if COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE
config COMPILER_OPTIMIZATION_CHECKS_SILENT
bool "Disable messages in ESP_RETURN_ON_* and ESP_EXIT_ON_* macros"
default n
help
If enabled, the error messages will be discarded in following check macros:
- ESP_RETURN_ON_ERROR
- ESP_EXIT_ON_ERROR
- ESP_RETURN_ON_FALSE
- ESP_EXIT_ON_FALSE
menuconfig COMPILER_HIDE_PATHS_MACROS
bool "Replace ESP-IDF and project paths in binaries"
default y
depends on IDF_CMAKE
help
When expanding the __FILE__ and __BASE_FILE__ macros, replace paths inside ESP-IDF
with paths relative to the placeholder string "IDF", and convert paths inside the
project directory to relative paths.
This allows building the project with assertions or other code that embeds file paths,
without the binary containing the exact path to the IDF or project directories.
This option passes -fmacro-prefix-map options to the GCC command line. To replace additional
paths in your binaries, modify the project CMakeLists.txt file to pass custom -fmacro-prefix-map or
-ffile-prefix-map arguments.
menuconfig COMPILER_CXX_EXCEPTIONS
menuconfig CXX_EXCEPTIONS
bool "Enable C++ exceptions"
default n
help
@@ -322,25 +133,17 @@ mainmenu "Espressif IoT Development Framework Configuration"
Enabling this option currently adds an additional ~500 bytes of heap overhead
when an exception is thrown in user code for the first time.
config COMPILER_CXX_EXCEPTIONS_EMG_POOL_SIZE
config CXX_EXCEPTIONS_EMG_POOL_SIZE
int "Emergency Pool Size"
default 0
depends on COMPILER_CXX_EXCEPTIONS
depends on CXX_EXCEPTIONS
help
Size (in bytes) of the emergency memory pool for C++ exceptions. This pool will be used to allocate
memory for thrown exceptions when there is not enough memory on the heap.
config COMPILER_CXX_RTTI
bool "Enable C++ run-time type info (RTTI)"
default n
help
Enabling this option compiles all C++ files with RTTI support enabled.
This increases binary size (typically by tens of kB) but allows using
dynamic_cast conversion and typeid operator.
choice COMPILER_STACK_CHECK_MODE
choice STACK_CHECK_MODE
prompt "Stack smashing protection mode"
default COMPILER_STACK_CHECK_MODE_NONE
default STACK_CHECK_NONE
help
Stack smashing protection mode. Emit extra code to check for buffer overflows, such as stack
smashing attacks. This is done by adding a guard variable to functions with vulnerable objects.
@@ -362,25 +165,24 @@ mainmenu "Espressif IoT Development Framework Configuration"
- coverage: NORMAL < STRONG < OVERALL
The performance impact includes increasing the amount of stack memory required for each task.
config COMPILER_STACK_CHECK_MODE_NONE
config STACK_CHECK_NONE
bool "None"
config COMPILER_STACK_CHECK_MODE_NORM
config STACK_CHECK_NORM
bool "Normal"
config COMPILER_STACK_CHECK_MODE_STRONG
config STACK_CHECK_STRONG
bool "Strong"
config COMPILER_STACK_CHECK_MODE_ALL
config STACK_CHECK_ALL
bool "Overall"
endchoice
config COMPILER_STACK_CHECK
config STACK_CHECK
bool
default !COMPILER_STACK_CHECK_MODE_NONE
default !STACK_CHECK_NONE
help
Stack smashing protection.
config COMPILER_WARN_WRITE_STRINGS
config WARN_WRITE_STRINGS
bool "Enable -Wwrite-strings warning flag"
default "n"
help
@@ -394,53 +196,16 @@ mainmenu "Espressif IoT Development Framework Configuration"
For C++, this warns about the deprecated conversion from string
literals to ``char *``.
config COMPILER_SAVE_RESTORE_LIBCALLS
bool "Enable -msave-restore flag to reduce code size"
depends on IDF_TARGET_ARCH_RISCV
help
Adds -msave-restore to C/C++ compilation flags.
When this flag is enabled, compiler will call library functions to
save/restore registers in function prologues/epilogues. This results
in lower overall code size, at the expense of slightly reduced performance.
This option can be enabled for RISC-V targets only.
config COMPILER_DISABLE_GCC8_WARNINGS
config DISABLE_GCC8_WARNINGS
bool "Disable new warnings introduced in GCC 6 - 8"
default "n"
help
Enable this option if using GCC 6 or newer, and wanting to disable warnings which don't appear with
GCC 5.
config COMPILER_DUMP_RTL_FILES
bool "Dump RTL files during compilation"
help
If enabled, RTL files will be produced during compilation. These files
can be used by other tools, for example to calculate call graphs.
endmenu # Compiler Options
menu "Component config"
source "$COMPONENT_KCONFIGS_SOURCE_FILE"
source "$COMPONENT_KCONFIGS"
endmenu
menu "Compatibility options"
config LEGACY_INCLUDE_COMMON_HEADERS
bool "Include headers across components as before IDF v4.0"
default n
help
Soc, esp32, and driver components, the most common
components. Some header of these components are included
implicitly by headers of other components before IDF v4.0.
It's not required for high-level components, but still
included through long header chain everywhere.
This is harmful to the modularity. So it's changed in IDF
v4.0.
You can still include these headers in a legacy way until it
is totally deprecated by enable this option.
endmenu #Compatibility options

103
README.md
View File

@@ -1,33 +1,15 @@
# Espressif IoT Development Framework
* [中文版](./README_CN.md)
ESP-IDF is the development framework for Espressif SoCs supported on Windows, Linux and macOS.
# ESP-IDF Release and SoC Compatibility
The following table shows ESP-IDF support of Espressif SoCs where ![alt text][preview] and ![alt text][supported] denote preview status and support, respectively. In preview status the build is not yet enabled and some crucial parts could be missing (like documentation, datasheet). Please use an ESP-IDF release where the desired SoC is already supported.
|Chip | v3.3 | v4.0 | v4.1 | v4.2 | v4.3 | v4.4 | |
|:----------- |:---------------------: | :---------------------:| :---------------------:| :---------------------:| :---------------------:| :---------------------:|:---------------------------------------------------------- |
|ESP32 | ![alt text][supported] | ![alt text][supported] | ![alt text][supported] | ![alt text][supported] | ![alt text][supported] | ![alt text][supported] | |
|ESP32-S2 | | | | ![alt text][supported] | ![alt text][supported] | ![alt text][supported] | |
|ESP32-C3 | | | | | ![alt text][supported] | ![alt text][supported] | |
|ESP32-S3 | | | | | ![alt text][preview] | ![alt text][supported] | [Announcement](https://www.espressif.com/en/news/ESP32_S3) |
|ESP32-H2 | | | | | | ![alt text][preview] | [Announcement](https://www.espressif.com/en/news/ESP32_H2) |
[supported]: https://img.shields.io/badge/-supported-green "supported"
[preview]: https://img.shields.io/badge/-preview-orange "preview"
Espressif SoCs released before 2016 (ESP8266 and ESP8285) are supported by [RTOS SDK](https://github.com/espressif/ESP8266_RTOS_SDK) instead.
ESP-IDF is the official development framework for the [ESP32](https://espressif.com/en/products/hardware/esp32/overview) chip.
# Developing With ESP-IDF
## Setting Up ESP-IDF
See https://idf.espressif.com/ for links to detailed instructions on how to set up the ESP-IDF depending on chip you use.
See setup guides for detailed instructions to set up the ESP-IDF:
**Note:** Each SoC series and each ESP-IDF release has its own documentation. Please see Section [Versions](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/versions.html) on how to find documentation and how to checkout specific release of ESP-IDF.
* [Getting Started Guide for the stable ESP-IDF version](https://docs.espressif.com/projects/esp-idf/en/stable/get-started/)
* [Getting Started Guide for the latest (master branch) ESP-IDF version](https://docs.espressif.com/projects/esp-idf/en/latest/get-started/)
### Non-GitHub forks
@@ -49,63 +31,92 @@ To start your own project based on an example, copy the example project director
See the Getting Started guide links above for a detailed setup guide. This is a quick reference for common commands when working with ESP-IDF projects:
## Setup Build Environment
(See the Getting Started guide listed above for a full list of required steps with more details.)
* Install host build dependencies mentioned in the Getting Started guide.
* Run the install script to set up the build environment. The options include `install.bat` or `install.ps1` for Windows, and `install.sh` or `install.fish` for Unix shells.
* Run the export script on Windows (`export.bat`) or source it on Unix (`source export.sh`) in every shell environment before using ESP-IDF.
## Configuring the Project
* `idf.py set-target <chip_name>` sets the target of the project to `<chip_name>`. Run `idf.py set-target` without any arguments to see a list of supported targets.
* `idf.py menuconfig` opens a text-based configuration menu where you can configure the project.
`make menuconfig`
* Opens a text-based configuration menu for the project.
* Use up & down arrow keys to navigate the menu.
* Use Enter key to go into a submenu, Escape key to go out or to exit.
* Type `?` to see a help screen. Enter key exits the help screen.
* Use Space key, or `Y` and `N` keys to enable (Yes) and disable (No) configuration items with checkboxes "`[*]`"
* Pressing `?` while highlighting a configuration item displays help about that item.
* Type `/` to search the configuration items.
Once done configuring, press Escape multiple times to exit and say "Yes" to save the new configuration when prompted.
## Compiling the Project
`idf.py build`
`make -j4 all`
... will compile app, bootloader and generate a partition table based on the config.
NOTE: The `-j4` option causes `make` to run 4 parallel jobs. This is much faster than the default single job. The recommended number to pass to this option is `-j(number of CPUs + 1)`.
## Flashing the Project
When the build finishes, it will print a command line to use esptool.py to flash the chip. However you can also do this automatically by running:
`idf.py -p PORT flash`
`make -j4 flash`
Replace PORT with the name of your serial port (like `COM3` on Windows, `/dev/ttyUSB0` on Linux, or `/dev/cu.usbserial-X` on MacOS. If the `-p` option is left out, `idf.py flash` will try to flash the first available serial port.
This will flash the entire project (app, bootloader and partition table) to a new chip. The settings for serial port flashing can be configured with `make menuconfig`.
This will flash the entire project (app, bootloader and partition table) to a new chip. The settings for serial port flashing can be configured with `idf.py menuconfig`.
You don't need to run `idf.py build` before running `idf.py flash`, `idf.py flash` will automatically rebuild anything which needs it.
You don't need to run `make all` before running `make flash`, `make flash` will automatically rebuild anything which needs it.
## Viewing Serial Output
The `idf.py monitor` target uses the [idf_monitor tool](https://docs.espressif.com/projects/esp-idf/en/latest/get-started/idf-monitor.html) to display serial output from Espressif SoCs. idf_monitor also has a range of features to decode crash output and interact with the device. [Check the documentation page for details](https://docs.espressif.com/projects/esp-idf/en/latest/get-started/idf-monitor.html).
The `make monitor` target uses the [idf_monitor tool](https://docs.espressif.com/projects/esp-idf/en/latest/get-started/idf-monitor.html) to display serial output from the ESP32. idf_monitor also has a range of features to decode crash output and interact with the device. [Check the documentation page for details](https://docs.espressif.com/projects/esp-idf/en/latest/get-started/idf-monitor.html).
Exit the monitor by typing Ctrl-].
To build, flash and monitor output in one pass, you can run:
`idf.py flash monitor`
`make -j4 flash monitor`
## Compiling & Flashing Only the App
After the initial flash, you may just want to build and flash just your app, not the bootloader and partition table:
* `idf.py app` - build just the app.
* `idf.py app-flash` - flash just the app.
* `make app` - build just the app.
* `make app-flash` - flash just the app.
`idf.py app-flash` will automatically rebuild the app if any source files have changed.
`make app-flash` will automatically rebuild the app if any source files have changed.
(In normal development there's no downside to reflashing the bootloader and partition table each time, if they haven't changed.)
## Parallel Builds
ESP-IDF supports compiling multiple files in parallel, so all of the above commands can be run as `make -jN` where `N` is the number of parallel make processes to run (generally N should be equal to the number of CPU cores in your system, plus one.)
Multiple make functions can be combined into one. For example: to build the app & bootloader using 5 jobs in parallel, then flash everything, and then display serial output from the ESP32 run:
```
make -j5 flash monitor
```
## The Partition Table
Once you've compiled your project, the "build" directory will contain a binary file with a name like "my_app.bin". This is an ESP32 image binary that can be loaded by the bootloader.
A single ESP32's flash can contain multiple apps, as well as many different kinds of data (calibration data, filesystems, parameter storage, etc). For this reason a partition table is flashed to offset 0x8000 in the flash.
Each entry in the partition table has a name (label), type (app, data, or something else), subtype and the offset in flash where the partition is loaded.
The simplest way to use the partition table is to `make menuconfig` and choose one of the simple predefined partition tables:
* "Single factory app, no OTA"
* "Factory app, two OTA definitions"
In both cases the factory app is flashed at offset 0x10000. If you `make partition_table` then it will print a summary of the partition table.
For more details about partition tables and how to create custom variations, view the [`docs/en/api-guides/partition-tables.rst`](docs/en/api-guides/partition-tables.rst) file.
## Erasing Flash
The `idf.py flash` target does not erase the entire flash contents. However it is sometimes useful to set the device back to a totally erased state, particularly when making partition table changes or OTA app updates. To erase the entire flash, run `idf.py erase-flash`.
The `make flash` target does not erase the entire flash contents. However it is sometimes useful to set the device back to a totally erased state, particularly when making partition table changes or OTA app updates. To erase the entire flash, run `make erase_flash`.
This can be combined with other targets, ie `idf.py -p PORT erase-flash flash` will erase everything and then re-flash the new app, bootloader and partition table.
This can be combined with other targets, ie `make erase_flash flash` will erase everything and then re-flash the new app, bootloader and partition table.
# Resources
@@ -116,3 +127,5 @@ This can be combined with other targets, ie `idf.py -p PORT erase-flash flash` w
* [Check the Issues section on github](https://github.com/espressif/esp-idf/issues) if you find a bug or have a feature request. Please check existing Issues before opening a new one.
* If you're interested in contributing to ESP-IDF, please check the [Contributions Guide](https://docs.espressif.com/projects/esp-idf/en/latest/contribute/index.html).

View File

@@ -1,118 +0,0 @@
# Espressif 物联网开发框架
* [English Version](./README.md)
ESP-IDF 是乐鑫官方推出的物联网开发框架,支持 Windows、Linux 和 macOS 操作系统。
# ESP-IDF 与乐鑫芯片
下表总结了乐鑫芯片在 ESP-IDF 各版本中的支持状态,其中 ![alt text][supported] 代表已支持,![alt text][preview] 代表目前处于预览支持状态。在预览支持阶段,因为新芯片尚未完全添加到构建系统目录,所以一些重要的内容(如文档和技术规格书等)可能会缺失。请确保使用与芯片相匹配的 ESP-IDF 版本。
| 芯片 | v3.3 | v4.0 | v4.1 | v4.2 | v4.3 | v4.4 | |
|:----------- |:---------------------: | :---------------------:| :---------------------:| :---------------------:| :---------------------:| :---------------------:|:---------------------------------------------------------- |
|ESP32 | ![alt text][supported] | ![alt text][supported] | ![alt text][supported] | ![alt text][supported] | ![alt text][supported] | ![alt text][supported] | |
|ESP32-S2 | | | | ![alt text][supported] | ![alt text][supported] | ![alt text][supported] | |
|ESP32-C3 | | | | | ![alt text][supported] | ![alt text][supported] | |
|ESP32-S3 | | | | | ![alt text][preview] | ![alt text][supported] | [芯片发布公告](https://www.espressif.com/en/news/ESP32_S3) |
|ESP32-H2 | | | | | | ![alt text][preview] | [芯片发布公告](https://www.espressif.com/en/news/ESP32_H2) |
[supported]: https://img.shields.io/badge/-%E6%94%AF%E6%8C%81-green "supported"
[preview]: https://img.shields.io/badge/-%E9%A2%84%E8%A7%88-orange "preview"
对于 2016 年之前发布的乐鑫芯片(包括 ESP8266 和 ESP8285请参考 [RTOS SDK](https://github.com/espressif/ESP8266_RTOS_SDK)。
# 使用 ESP-IDF 进行开发
## 搭建 ESP-IDF 开发环境
关于不同芯片如何搭建 ESP-IDF 的开发环境,请参考 https://idf.espressif.com/ 。
**注意:** 不同系列芯片和不同 ESP-IDF 版本都有其对应的文档。请参阅[版本](https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/versions.html)部分,获得关于如何查找文档以及如何检出 ESP-IDF 的特定发行版的详细信息。
### 非 GitHub 分叉的 ESP-IDF 项目
ESP-IDF 中的子模块采用相对路径([详见 .gitmodules 文件](.gitmodules)),所以它们会指向 GitHub。
如果 ESP-IDF 被分叉到的仓库不在 GitHub 上,那么你需要在克隆结束后运行该脚本 [tools/set-submodules-to-github.sh](tools/set-submodules-to-github.sh)。
这个脚本会为所有的子模块设置绝对路径,接着可以通过 `git submodule update --init --recursive` 完成子模块的更新。
如果 ESP-IDF 是从 GitHub 上克隆得到,则不需要此步骤。
## 寻找项目
除了入门指南中提到的 [esp-idf 模板项目](https://github.com/espressif/esp-idf-template)ESP-IDF 的 [examples](examples) 目录下还带有很多其它示例项目。
一旦找到了需要的项目,便可以进入该目录,执行配置和构建操作。
如果要基于示例工程开始你自己的项目,请将示例工程复制到 ESP-IDF 目录之外。
# 快速参考
详细的使用方法请参考上面入门指南的链接,这里仅仅列举一些 ESP-IDF 项目开发中常用的命令:
## 设置构建环境
请参考入门指南中列出的详细步骤。
* 在主机中安装入门指南中提到的构建所依赖的工具。
* 运行安装脚本来设置构建环境。可为 Windows shell 选择 `install.bat``install.ps1`,为 Unix shell 选择 `install.sh``install.fish`
* 在使用 ESP-IDF 之前,需要在 shell 中运行导出脚本。Windows 下可运行 `export.bat`Unix 下可运行 `source export.sh`
## 配置项目
* `idf.py set-target <chip_name>` 可将项目的目标芯片设置为 `<chip_name>`。运行 `idf.py set-target`,不用带任何参数,可查看所有支持的目标芯片列表。
* `idf.py menuconfig` 可打开一个基于文本的配置菜单,可以用来对项目进行配置。
## 编译项目
`idf.py build`
编译应用程序,引导程序,并根据配置生成分区表。
## 烧写项目
当构建结束,终端会打印出一条命令行,告知如何使用 esptool.py 工具烧写项目到芯片中。但你也可以运行下面这条命令来自动烧写:
`idf.py -p PORT flash`
将其中的 PORT 替换为系统中实际串口的名字(比如 Windows 下的 `COM3`Linux 下的 `/dev/ttyUSB0`,或者 macOS 下的 `/dev/cu.usbserial-X`。如果省略 `-p` 选项,`idf.py flash` 会尝试使用第一个可用的串口进行烧写。
这会烧写整个项目(包括应用程序,引导程序和分区表)到芯片中,此外还可以使用 `idf.py menuconfig` 来调整串口烧写相关的配置。
不必先运行 `idf.py build` 再运行 `idf.py flash``idf.py flash` 会根据需要自动重新构建项目。
## 观察串口输入
`idf.py monitor` 会调用 [idf_monitor 工具](https://docs.espressif.com/projects/esp-idf/en/latest/get-started/idf-monitor.html)来显示乐鑫芯片的串口输出。`idf_monitor` 还包含一系列的功能来解析程序崩溃后的输出结果并与设备进行交互。更多详细内容,请参阅[文档](https://docs.espressif.com/projects/esp-idf/en/latest/get-started/idf-monitor.html).
输入 `Ctrl-]` 可退出监视器。
想要一次性执行构建、烧写和监视,可以运行如下命令:
`idf.py flash monitor`
## 仅编译并烧写应用程序
在第一次烧写过后,你可能只想构建并烧写你的应用程序,不包括引导程序和分区表:
* `idf.py app` - 仅构建应用程序。
* `idf.py app-flash` - 仅烧写应用程序。
`idf.py app-flash` 会自动判断是否有源文件发生了改变然后重新构建应用程序。
(在正常的开发中,即使引导程序和分区表没有发生变化,每次都重新烧写它们并不会带来什么危害。)
## 擦除 Flash
`idf.py flash` 并不会擦除 flash 上所有的内容,但是有时候我们需要设备恢复到完全擦除的状态,尤其是分区表发生了变化或者 OTA 应用升级时。要擦除整块 flash 请运行 `idf.py erase-flash`
这条命令还可以和其余命令整合在一起,`idf.py -p PORT erase-flash flash` 会擦除一切然后重新烧写新的应用程序、引导程序和分区表。
# 其它参考资源
* 最新版的文档https://docs.espressif.com/projects/esp-idf/ ,该文档是由本仓库 [docs 目录](docs) 构建得到。
* 可以前往 [esp32.com 论坛](https://esp32.com/) 提问,挖掘社区资源。
* 如果你在使用中发现了错误或者需要新的功能,请先[查看 GitHub Issues](https://github.com/espressif/esp-idf/issues),确保该问题没有重复提交。
* 如果你有兴趣为 ESP-IDF 作贡献,请先阅读[贡献指南](https://docs.espressif.com/projects/esp-idf/en/latest/contribute/index.html)。

View File

@@ -3,55 +3,43 @@ The latest support policy for ESP-IDF can be found at [https://github.com/espres
Support Period Policy
=====================
* [中文版](./SUPPORT_POLICY_CN.md)
Each ESP-IDF major and minor release (V4.1, V4.2, etc) is supported for
30 months after the initial stable release date.
Each ESP-IDF major and minor release (V4.0, V4.1, etc) is supported for
18 months after the initial stable release date.
Supported means that the ESP-IDF team will continue to apply bug fixes,
security fixes, etc to the release branch on GitHub, and periodically
make new bugfix releases as needed.
Support period is divided into "Service" and "Maintenance" period:
| Period | Duration | Recommended for new projects? |
| ------- | ------------ | ------------------------------------- |
| Service | 12 months | Yes |
| Maintenance | 18 months | No |
During the Service period, bugfixes releases are more frequent. In some cases,
support for new features may be added during the Service period (this is
reserved for features which are needed to meet particular regulatory
requirements or standards for new products, and which carry a very low risk of
introducing regressions.)
During the Maintenance period, the version is still supported but only bugfixes
for high severity issues or security issues will be applied.
Using an “In Service” version is recommended when starting a new project.
Users are encouraged to upgrade all projects to a newer ESP-IDF release before
the support period finishes and the release becomes End of Life (EOL). It is our
policy to not continue fixing bugs in End of Life releases.
Users are encouraged to upgrade to a newer ESP-IDF release before the
support period finishes and the release becomes End of Life (EOL). It is
our policy to not continue fixing bugs in End of Life releases.
Pre-release versions (betas, previews, `-rc` and `-dev` versions, etc)
are not covered by any support period. Sometimes a particular feature is
marked as "Preview" in a release, which means it is also not covered
marked as \"Preview\" in a release, which means it is also not covered
by the support period.
ESP-IDF should be used in an up-to-date software environment. The operating system
and other third-party tools should be supported by their maintainers.
ESP-IDF cannot keep compatibility with unsupported third-party tools.
The ESP-IDF Programming Guide has information about the
[different versions of ESP-IDF](https://docs.espressif.com/projects/esp-idf/en/latest/versions.html)
(major, minor, bugfix, etc).
Long Term Support releases
--------------------------
Some releases (starting with ESP-IDF V3.3) are designated Long Term
Support (LTS). LTS releases are supported for 30 months (2.5 years)
after the initial stable release date.
A new LTS release will be made at least every 18 months. This means
there will always be a period of at least 12 months to upgrade from the
previous LTS release to the following LTS release.
Example
-------
ESP-IDF V3.3 was released in September 2019. It will be supported for 30 months
until February 2022.
ESP-IDF V3.3 was released in September 2019 and is a Long Term Support
(LTS) release, meaning it will be supported for 30 months until February
2022.
- The first V3.3 release was `v3.3` in September 2019.
- The ESP-IDF team continues to backport bug fixes, security fixes,
@@ -65,22 +53,14 @@ until February 2022.
Existing Releases
-----------------
ESP-IDF release V4.1 and all newer releases will follow this support period
policy. The support period for each release will be announced when the release
is made.
ESP-IDF release V3.3 and all newer releases will follow this support
period policy. The support period for each release will be announced
when the release is made.
For releases made before the current support period policy was announced, the
original support periods apply:
For releases made before the support period policy was announced,
the following support periods apply:
* ESP-IDF V4.0.x will be supported until October 2021
* ESP-IDF V3.3.x will be supported until February 2022
* ESP-IDF versions before V3.3 are already End of Life.
Policy History
--------------
* September 2019. This policy split ESP-IDF releases into Standard and Long Term
Support.
* July 2020. All releases from now will have the same support period, which is
equal to the previous Long Term Support period. Added “In Service” period,
during which versions will receive more updates.
- ESP-IDF V3.1.x and V3.2.x will both be supported until October 2020.
- ESP-IDF V3.0.9 (planned for October 2019) will be the last V3.0
bugfix release. ESP-IDF V3.0.x is End of Life from October 2019.
- ESP-IDF versions before V3.0 are already End of Life.

View File

@@ -1,55 +0,0 @@
有关 ESP-IDF 的最新支持政策,详见 [支持期限政策](https://github.com/espressif/esp-idf/blob/master/SUPPORT_POLICY_CN.md)
支持期限政策
=====================
ESP-IDF 的每个主要版本和次要版本(如 V4.1、V4.2 等)自其首次稳定版本发布之日起将支持 30 个月。
支持意味着 ESP-IDF 团队将会对 GitHub 上的发布分支继续进行 bug 修复、安全修补等,并根据需求定期发布新的 bugfix 版本。
支持周期包括“服务周期“和“维护周期”:
| 周期 | 期限 | 是否建议新项目使用? |
| ------- | ------------ | ------------------------------------- |
| 服务周期 | 12 个月 | 是 |
| 维护周期 | 18 个月 | 否 |
在版本的服务周期内bug 修复版本会较为频繁发布。某些情况下,版本在其服务周期内可能会增加对新功能的支持(这仅适用于需要达到新产品特定规管标准或要求的功能,并且引入新问题的风险极低。)
在版本的维护周期内,版本仍然会继续支持,但仅会对严重问题或安全问题进行 bug 修复。
建议在开始新项目的时候使用处于服务周期的版本。
在某一版本支持期限结束,停止更新维护 (EOL) 前,建议用户升级所有项目至较新的 ESP-IDF 版本。根据《支持期限政策》,我们将停止对 EOL 版本进行 bug 修复。
《支持期限政策》不适用于预发布版本(包括 beta、preview、-rc 和 -dev 版本等)。有时,在发布的版本中存在被标记为 "Preview" 的特定功能,则该功能也不在支持期限内。
有关 [ESP-IDF 不同版本](https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/versions.html)主要版本、次要版本、bugfix 版本等信息可参阅《ESP-IDF 编程指南》。
示例
-------
ESP-IDF V3.3 于 2019 年 9 月发布,将支持 30 个月至 2022 年 2 月停止。
- V3.3 的首个发布版本为 2019 年 9 月发布的 v3.3。
- ESP-IDF 团队将持续进行 bug 修复、安全修补等更新,并 backport 至分支 release/v3.3。
- 定期从 release 分支创建稳定的 bugfix 版本比如v3.3.1、v3.3.2 等,并建议用户保持使用最新的 bugfix 版本。
- V3.3 的 bugfix 版本发布将持续至 2022 年 2 月,届时所有 V3.3.x 将停止更新维护。
现有版本
-----------------
ESP-IDF V4.1 及所有后续更新版本都将遵守该《支持期限政策》。每一版本发布时将同时公布其支持期限。
对于该政策公布之日前发布的版本,应适用下述支持期限:
* ESP-IDF V4.0.x 将支持至 2021 年 10 月。
* ESP-IDF V3.3.x 将支持至 2022 年 2 月。
* ESP-IDF V3.1.x 和 V3.2.x 都将在 2020 年 10 月停止支持。
* ESP-IDF v3.1.x 之前的版本已经停止支持。
政策历史
--------------
* 2019 年 9 月。该政策将 ESP-IDF 版本发布分为标准支持版本和长期支持版本。
* 2020 年 7 月。从现在开始,所有发布的版本都将有相同的支持周期,等同于之前的长期支持周期。新增了”服务周期“,期间版本的更新将较为频繁。

View File

@@ -9,10 +9,13 @@
if [ -z ${IDF_PATH} ]; then
echo "IDF_PATH must be set before including this script."
else
IDF_ADD_PATHS_EXTRAS="${IDF_PATH}/components/esptool_py/esptool"
IDF_ADD_PATHS_EXTRAS=
IDF_ADD_PATHS_EXTRAS="${IDF_ADD_PATHS_EXTRAS}:${IDF_PATH}/components/esptool_py/esptool"
IDF_ADD_PATHS_EXTRAS="${IDF_ADD_PATHS_EXTRAS}:${IDF_PATH}/components/espcoredump"
IDF_ADD_PATHS_EXTRAS="${IDF_ADD_PATHS_EXTRAS}:${IDF_PATH}/components/partition_table/"
IDF_ADD_PATHS_EXTRAS="${IDF_ADD_PATHS_EXTRAS}:${IDF_PATH}/tools/"
export PATH="${IDF_ADD_PATHS_EXTRAS}:${PATH}"
echo "Added to PATH: ${IDF_ADD_PATHS_EXTRAS}"
fi

View File

@@ -1,160 +0,0 @@
# Core Components
## Overview
This document contains details about what the core components are, what they contain, and how they are organized.
## Organization
The core components are organized into two groups.
The first group (referred to as `G0` from now on) contains `hal`, `xtensa` and `riscv` (referred to as `arch` components from now on), `esp_rom`, `esp_common`, and `soc`. This
group contain information about and low-level access to underlying hardware; or in the case of `esp_common`, hardware-agnostic code and utilities.
These components can depend on each other, but as much as possible have no dependencies outside the group. The reason for this is that, due to the
nature of what these components contain, the likelihood is high that a lot of other components will require these. Ideally, then, the dependency
relationship only goes one way. This makes it easier for these components, as a group, to be usable in another project. One can conceivably implement
a competing SDK to ESP-IDF on top of these components.
The second group (referred to as `G1` from now on) sits at a higher level than the first group. This group contains the components `esp_hw_support`, `esp_system`, `newlib`, `spi_flash`,
`freertos`, `log`, and `heap`. Like the first group, circular dependencies within the group are allowed; and being at a higher level, dependency on the first group
is allowed. These components represent software mechanisms essential to building other components.
## Descriptions
The following is a short description of the components mentioned above.
### `G0` Components
#### `hal`
Contains the hardware abstraction layer and low-level operation implementations for the various peripherals. The low-level functions assign meaningful names to register-level manipulations; the hardware abstraction provide operations one level above this, grouping these low-level functions
into routines that achieve a meaningful action or state of the peripheral.
Example:
- `spi_flash_ll_set_address` is a low-level function part of the hardware abstraction `spi_flash_hal_read_block`
#### `arch`
Contains low-level architecture operations and definitions, including those for customizations (can be thought of on the same level as the low-level functions of `hal`).
This can also contain files provided by the architecture vendor.
Example:
- `xt_set_exception_handler`
- `riscv_global_interrupts_enable`
- `ERI_PERFMON_MAX`
#### `esp_common`
Contains hardware-agnostic definitions, constants, macros, utilities, 'pure' and/or algorithmic functions that is useable by all other components (that is, barring there being a more appropriate component to put them in).
Example:
- `BIT(nr)` and other bit manipulation utilities in the future
- `IDF_DEPRECATED(REASON)`
- `ESP_IDF_VERSION_MAJOR`
#### `soc`
Contains description of the underlying hardware: register structure, addresses, pins, capabilities, etc.
Example:
- `DR_REG_DPORT_BASE`
- `SOC_MCPWM_SUPPORTED`
- `uart_dev_s`
#### `esp_rom`
Contains headers, linker scripts, abstraction layer, patches, and other related files to ROM functions.
Example:
- `esp32.rom.eco3.ld`
- `rom/aes.h`
### `G1` Components
#### `spi_flash`
SPI flash device access implementation.
#### `freertos`
FreeRTOS port to targets supported by ESP-IDF.
#### `log`
Logging library.
#### `heap`
Heap implementation.
#### `newlib`
Some functions n the standard library are implemented here, especially those needing other `G1` components.
Example:
- `malloc` is implemented in terms of the component `heap`'s functions
- `gettimeofday` is implemented in terms of system time in `esp_system`
#### `esp_system`
Contains implementation of system services and controls system behavior. The implementations
here may take hardware resources and/or decide on a hardware state needed for support of a system service/feature/mechanism.
Currently, this encompasses the following, but not limited to:
- Startup and initialization
- Panic and debug
- Reset and reset reason
- Task and interrupt watchdogs
#### `esp_hw_support`
Contains implementations that provide hardware operations, arbitration, or resource sharing, especially those that
is used in the system. Unlike `esp_system`, implementations here do not decide on a hardware state or takes hardware resource, acting
merely as facilitator to hardware access. Currently, this encompasses the following, but not limited to:
- Interrupt allocation
- Sleep functions
- Memory functions (external SPIRAM, async memory, etc.)
- Clock and clock control
- Random generation
- CPU utilities
- MAC settings
### `esp_hw_support` vs `esp_system`
This section details list some implementations and the reason for placing it in either `esp_hw_support` or `esp_system`.
#### `task_wdt.c` (`esp_system`) vs `intr_alloc.c` (`esp_hw_support`)
The task watchdog fits the definition of taking and configuring hardware resources (wdt, interrupt) for implementation of a system service/mechanism.
This is in contrast with interrupt allocation that merely facilitates access to the underlying hardware for other implementations -
drivers, user code, and even the task watchdog mentioned previously!
#### `crosscore_int.c` (`esp_system`)
The current implementation of crosscore interrupts is tightly coupled with a number of interrupt reasons
associated with system services/mechanisms: REASON_YIELD (scheduler), REASON_FREQ_SWITCH (power management)
REASON_PRINT_BACKTRACE (panic and debug).
However, if an implementation exists that makes it possible to register an arbitrary interrupt reason - a
lower level inter-processor call if you will, then this implementation is a good candidate for `esp_hw_support`.
The current implementation in `esp_system` can then just register the interrupt reasons mentioned above.
#### `esp_mac.h`, `esp_chip_info.h`, `esp_random.h` (`esp_hw_support`)
The functions in these headers used to be in `esp_system.h`, but have been split-off.
However, to maintain backward compatibility, `esp_system.h` includes these headers.
The remaining functions in `esp_system.h` are those that deal with system behavior, such
as `esp_register_shutdown_handler`, or are proxy for other system components's APIs such as
`esp_get_free_heap_size`.
The functions split-off from `esp_system.h` are much more hardware manipulation oriented such as:
`esp_read_mac`, `esp_random` and `esp_chip_info`.

View File

@@ -1,61 +1,29 @@
set(srcs
"app_trace.c"
"app_trace_util.c"
"host_file_io.c"
"gcov/gcov_rtio.c")
set(COMPONENT_SRCS "app_trace.c"
"app_trace_util.c"
"host_file_io.c"
"gcov/gcov_rtio.c")
set(COMPONENT_ADD_INCLUDEDIRS "include")
set(include_dirs "include")
set(priv_include_dirs "private_include" "port/include")
if(CONFIG_APPTRACE_MEMBUFS_APPTRACE_PROTO_ENABLE)
list(APPEND srcs
"app_trace_membufs_proto.c")
if(CONFIG_IDF_TARGET_ARCH_XTENSA)
list(APPEND srcs
"port/xtensa/port.c")
endif()
if(CONFIG_IDF_TARGET_ARCH_RISCV)
list(APPEND srcs
"port/riscv/port.c")
endif()
endif()
if(CONFIG_APPTRACE_SV_ENABLE)
list(APPEND include_dirs
if(CONFIG_SYSVIEW_ENABLE)
list(APPEND COMPONENT_ADD_INCLUDEDIRS
sys_view/Config
sys_view/SEGGER
sys_view/Sample/OS)
list(APPEND srcs
"sys_view/SEGGER/SEGGER_SYSVIEW.c"
"sys_view/Sample/Config/SEGGER_SYSVIEW_Config_FreeRTOS.c"
"sys_view/Sample/OS/SEGGER_SYSVIEW_FreeRTOS.c"
"sys_view/esp/SEGGER_RTT_esp.c"
"sys_view/ext/heap_trace_module.c"
"sys_view/ext/logging.c")
list(APPEND COMPONENT_SRCS "sys_view/SEGGER/SEGGER_SYSVIEW.c"
"sys_view/Sample/Config/SEGGER_SYSVIEW_Config_FreeRTOS.c"
"sys_view/Sample/OS/SEGGER_SYSVIEW_FreeRTOS.c"
"sys_view/esp32/SEGGER_RTT_esp32.c")
endif()
if(CONFIG_HEAP_TRACING_TOHOST)
list(APPEND srcs "heap_trace_tohost.c")
set_source_files_properties(heap_trace_tohost.c
PROPERTIES COMPILE_FLAGS
-Wno-frame-address)
endif()
set(COMPONENT_REQUIRES)
set(COMPONENT_PRIV_REQUIRES xtensa-debug-module)
set(COMPONENT_ADD_LDFRAGMENTS linker.lf)
idf_component_register(SRCS "${srcs}"
INCLUDE_DIRS "${include_dirs}"
PRIV_INCLUDE_DIRS "${priv_include_dirs}"
PRIV_REQUIRES soc esp_ipc
LDFRAGMENTS linker.lf)
register_component()
if(CONFIG_APPTRACE_GCOV_ENABLE)
# disable --coverage for this component, as it is used as transport
# for gcov
target_compile_options(${COMPONENT_LIB} PRIVATE "-fno-profile-arcs" "-fno-test-coverage")
# Force app_trace to appear later than gcov in link line
idf_component_get_property(app_trace app_trace COMPONENT_LIB)
target_link_libraries(${COMPONENT_LIB} INTERFACE
"-Wl,--undefined=gcov_rtio_atexit" $<TARGET_FILE:${app_trace}> gcov $<TARGET_FILE:${app_trace}> c)
endif()
# disable --coverage for this component, as it is used as transport
# for gcov
component_compile_options("-fno-profile-arcs" "-fno-test-coverage")
target_link_libraries(${COMPONENT_TARGET} gcov)

View File

@@ -1,80 +1,54 @@
menu "Application Level Tracing"
choice APPTRACE_DESTINATION
choice ESP32_APPTRACE_DESTINATION
prompt "Data Destination"
default APPTRACE_DEST_NONE
default ESP32_APPTRACE_DEST_NONE
help
Select destination for application trace: JTAG or none (to disable).
Select destination for application trace: trace memory or none (to disable).
config APPTRACE_DEST_JTAG
bool "JTAG"
select APPTRACE_DEST_TRAX if IDF_TARGET_ARCH_XTENSA
select APPTRACE_MEMBUFS_APPTRACE_PROTO_ENABLE
select APPTRACE_ENABLE
config APPTRACE_DEST_NONE
config ESP32_APPTRACE_DEST_TRAX
bool "Trace memory"
select ESP32_APPTRACE_ENABLE
config ESP32_APPTRACE_DEST_NONE
bool "None"
endchoice
config APPTRACE_DEST_TRAX
bool
depends on IDF_TARGET_ARCH_XTENSA && !ESP32_TRAX && !ESP32S2_TRAX && !ESP32S3_TRAX
select ESP32_MEMMAP_TRACEMEM
select ESP32S2_MEMMAP_TRACEMEM
select ESP32S3_MEMMAP_TRACEMEM
select ESP32_MEMMAP_TRACEMEM_TWOBANKS
select ESP32S2_MEMMAP_TRACEMEM_TWOBANKS
select ESP32S3_MEMMAP_TRACEMEM_TWOBANKS
default n
help
Enables/disable TRAX tracing HW.
config APPTRACE_MEMBUFS_APPTRACE_PROTO_ENABLE
bool
default n
help
Enables/disable swapping memory buffers tracing protocol.
config APPTRACE_ENABLE
config ESP32_APPTRACE_ENABLE
bool
depends on !ESP32_TRAX
select MEMMAP_TRACEMEM
select MEMMAP_TRACEMEM_TWOBANKS
default n
help
Enables/disable application tracing module.
config APPTRACE_LOCK_ENABLE
config ESP32_APPTRACE_LOCK_ENABLE
bool
default !APPTRACE_SV_ENABLE
default !SYSVIEW_ENABLE
help
Enables/disable application tracing module internal sync lock.
config APPTRACE_ONPANIC_HOST_FLUSH_TMO
config ESP32_APPTRACE_ONPANIC_HOST_FLUSH_TMO
int "Timeout for flushing last trace data to host on panic"
depends on APPTRACE_ENABLE
depends on ESP32_APPTRACE_ENABLE
range -1 5000
default -1
help
Timeout for flushing last trace data to host in case of panic. In ms.
Use -1 to disable timeout and wait forever.
config APPTRACE_POSTMORTEM_FLUSH_THRESH
config ESP32_APPTRACE_POSTMORTEM_FLUSH_TRAX_THRESH
int "Threshold for flushing last trace data to host on panic"
depends on APPTRACE_ENABLE
depends on ESP32_APPTRACE_DEST_TRAX
range 0 16384
default 0
help
Threshold for flushing last trace data to host on panic in post-mortem mode.
This is minimal amount of data needed to perform flush. In bytes.
config APPTRACE_BUF_SIZE
int "Size of the apptrace buffer"
depends on APPTRACE_MEMBUFS_APPTRACE_PROTO_ENABLE && !APPTRACE_DEST_TRAX
default 16384
help
Size of the memory buffer for trace data in bytes.
config APPTRACE_PENDING_DATA_SIZE_MAX
config ESP32_APPTRACE_PENDING_DATA_SIZE_MAX
int "Size of the pending data buffer"
depends on APPTRACE_MEMBUFS_APPTRACE_PROTO_ENABLE
depends on ESP32_APPTRACE_DEST_TRAX
default 0
help
Size of the buffer for events in bytes. It is useful for buffering events from
@@ -82,163 +56,154 @@ menu "Application Level Tracing"
events will be discarded when main HW buffer is full.
menu "FreeRTOS SystemView Tracing"
depends on APPTRACE_ENABLE
config APPTRACE_SV_ENABLE
depends on ESP32_APPTRACE_ENABLE
config SYSVIEW_ENABLE
bool "SystemView Tracing Enable"
depends on APPTRACE_ENABLE
depends on ESP32_APPTRACE_ENABLE
default n
help
Enables supporrt for SEGGER SystemView tracing functionality.
choice APPTRACE_SV_TS_SOURCE
choice SYSVIEW_TS_SOURCE
prompt "Timer to use as timestamp source"
depends on APPTRACE_SV_ENABLE
default APPTRACE_SV_TS_SOURCE_CCOUNT if FREERTOS_UNICORE && !PM_ENABLE && !IDF_TARGET_ESP32C3
default APPTRACE_SV_TS_SOURCE_TIMER_00 if !FREERTOS_UNICORE && !PM_ENABLE && !IDF_TARGET_ESP32C3
default APPTRACE_SV_TS_SOURCE_ESP_TIMER if PM_ENABLE || IDF_TARGET_ESP32C3
depends on SYSVIEW_ENABLE
default SYSVIEW_TS_SOURCE_CCOUNT if FREERTOS_UNICORE && !PM_ENABLE
default SYSVIEW_TS_SOURCE_TIMER_00 if !FREERTOS_UNICORE && !PM_ENABLE
default SYSVIEW_TS_SOURCE_ESP_TIMER if PM_ENABLE
help
SystemView needs to use a hardware timer as the source of timestamps
when tracing. This option selects the timer for it.
config APPTRACE_SV_TS_SOURCE_CCOUNT
config SYSVIEW_TS_SOURCE_CCOUNT
bool "CPU cycle counter (CCOUNT)"
depends on FREERTOS_UNICORE && !PM_ENABLE && !IDF_TARGET_ESP32C3
depends on FREERTOS_UNICORE && !PM_ENABLE
config APPTRACE_SV_TS_SOURCE_TIMER_00
config SYSVIEW_TS_SOURCE_TIMER_00
bool "Timer 0, Group 0"
depends on !PM_ENABLE && !IDF_TARGET_ESP32C3
depends on !PM_ENABLE
config APPTRACE_SV_TS_SOURCE_TIMER_01
config SYSVIEW_TS_SOURCE_TIMER_01
bool "Timer 1, Group 0"
depends on !PM_ENABLE && !IDF_TARGET_ESP32C3
depends on !PM_ENABLE
config APPTRACE_SV_TS_SOURCE_TIMER_10
config SYSVIEW_TS_SOURCE_TIMER_10
bool "Timer 0, Group 1"
depends on !PM_ENABLE && !IDF_TARGET_ESP32C3
depends on !PM_ENABLE
config APPTRACE_SV_TS_SOURCE_TIMER_11
config SYSVIEW_TS_SOURCE_TIMER_11
bool "Timer 1, Group 1"
depends on !PM_ENABLE && !IDF_TARGET_ESP32C3
depends on !PM_ENABLE
config APPTRACE_SV_TS_SOURCE_ESP_TIMER
config SYSVIEW_TS_SOURCE_ESP_TIMER
bool "esp_timer high resolution timer"
endchoice
config APPTRACE_SV_MAX_TASKS
config SYSVIEW_MAX_TASKS
int "Maximum supported tasks"
depends on APPTRACE_SV_ENABLE
depends on SYSVIEW_ENABLE
range 1 64
default 16
help
Configures maximum supported tasks in sysview debug
config APPTRACE_SV_BUF_WAIT_TMO
int "Trace buffer wait timeout"
depends on APPTRACE_SV_ENABLE
default 500
help
Configures timeout (in us) to wait for free space in trace buffer.
Set to -1 to wait forever and avoid lost events.
config APPTRACE_SV_EVT_OVERFLOW_ENABLE
config SYSVIEW_EVT_OVERFLOW_ENABLE
bool "Trace Buffer Overflow Event"
depends on APPTRACE_SV_ENABLE
depends on SYSVIEW_ENABLE
default y
help
Enables "Trace Buffer Overflow" event.
config APPTRACE_SV_EVT_ISR_ENTER_ENABLE
config SYSVIEW_EVT_ISR_ENTER_ENABLE
bool "ISR Enter Event"
depends on APPTRACE_SV_ENABLE
depends on SYSVIEW_ENABLE
default y
help
Enables "ISR Enter" event.
config APPTRACE_SV_EVT_ISR_EXIT_ENABLE
config SYSVIEW_EVT_ISR_EXIT_ENABLE
bool "ISR Exit Event"
depends on APPTRACE_SV_ENABLE
depends on SYSVIEW_ENABLE
default y
help
Enables "ISR Exit" event.
config APPTRACE_SV_EVT_ISR_TO_SCHED_ENABLE
config SYSVIEW_EVT_ISR_TO_SCHEDULER_ENABLE
bool "ISR Exit to Scheduler Event"
depends on APPTRACE_SV_ENABLE
depends on SYSVIEW_ENABLE
default y
help
Enables "ISR to Scheduler" event.
config APPTRACE_SV_EVT_TASK_START_EXEC_ENABLE
config SYSVIEW_EVT_TASK_START_EXEC_ENABLE
bool "Task Start Execution Event"
depends on APPTRACE_SV_ENABLE
depends on SYSVIEW_ENABLE
default y
help
Enables "Task Start Execution" event.
config APPTRACE_SV_EVT_TASK_STOP_EXEC_ENABLE
config SYSVIEW_EVT_TASK_STOP_EXEC_ENABLE
bool "Task Stop Execution Event"
depends on APPTRACE_SV_ENABLE
depends on SYSVIEW_ENABLE
default y
help
Enables "Task Stop Execution" event.
config APPTRACE_SV_EVT_TASK_START_READY_ENABLE
config SYSVIEW_EVT_TASK_START_READY_ENABLE
bool "Task Start Ready State Event"
depends on APPTRACE_SV_ENABLE
depends on SYSVIEW_ENABLE
default y
help
Enables "Task Start Ready State" event.
config APPTRACE_SV_EVT_TASK_STOP_READY_ENABLE
config SYSVIEW_EVT_TASK_STOP_READY_ENABLE
bool "Task Stop Ready State Event"
depends on APPTRACE_SV_ENABLE
depends on SYSVIEW_ENABLE
default y
help
Enables "Task Stop Ready State" event.
config APPTRACE_SV_EVT_TASK_CREATE_ENABLE
config SYSVIEW_EVT_TASK_CREATE_ENABLE
bool "Task Create Event"
depends on APPTRACE_SV_ENABLE
depends on SYSVIEW_ENABLE
default y
help
Enables "Task Create" event.
config APPTRACE_SV_EVT_TASK_TERMINATE_ENABLE
config SYSVIEW_EVT_TASK_TERMINATE_ENABLE
bool "Task Terminate Event"
depends on APPTRACE_SV_ENABLE
depends on SYSVIEW_ENABLE
default y
help
Enables "Task Terminate" event.
config APPTRACE_SV_EVT_IDLE_ENABLE
config SYSVIEW_EVT_IDLE_ENABLE
bool "System Idle Event"
depends on APPTRACE_SV_ENABLE
depends on SYSVIEW_ENABLE
default y
help
Enables "System Idle" event.
config APPTRACE_SV_EVT_TIMER_ENTER_ENABLE
config SYSVIEW_EVT_TIMER_ENTER_ENABLE
bool "Timer Enter Event"
depends on APPTRACE_SV_ENABLE
depends on SYSVIEW_ENABLE
default y
help
Enables "Timer Enter" event.
config APPTRACE_SV_EVT_TIMER_EXIT_ENABLE
config SYSVIEW_EVT_TIMER_EXIT_ENABLE
bool "Timer Exit Event"
depends on APPTRACE_SV_ENABLE
depends on SYSVIEW_ENABLE
default y
help
Enables "Timer Exit" event.
endmenu
config APPTRACE_GCOV_ENABLE
config ESP32_GCOV_ENABLE
bool "GCOV to Host Enable"
depends on APPTRACE_ENABLE && !APPTRACE_SV_ENABLE
select ESP_DEBUG_STUBS_ENABLE
default n
depends on ESP32_DEBUG_STUBS_ENABLE && ESP32_APPTRACE_ENABLE && !SYSVIEW_ENABLE
default y
help
Enables support for GCOV data transfer to host.

File diff suppressed because it is too large Load Diff

View File

@@ -1,371 +0,0 @@
/*
* SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <sys/param.h>
#include <string.h>
#include "sdkconfig.h"
#include "esp_log.h"
#include "esp_app_trace_membufs_proto.h"
/** Trace data header. Every user data chunk is prepended with this header.
* User allocates block with esp_apptrace_buffer_get and then fills it with data,
* in multithreading environment it can happen that tasks gets buffer and then gets interrupted,
* so it is possible that user data are incomplete when memory block is exposed to the host.
* In this case host SW will see that wr_sz < block_sz and will report error.
*/
typedef struct {
#if CONFIG_APPTRACE_SV_ENABLE
uint8_t block_sz; // size of allocated block for user data
uint8_t wr_sz; // size of actually written data
#else
uint16_t block_sz; // size of allocated block for user data
uint16_t wr_sz; // size of actually written data
#endif
} esp_tracedata_hdr_t;
/** TODO: docs
*/
typedef struct {
uint16_t block_sz; // size of allocated block for user data
} esp_hostdata_hdr_t;
#if CONFIG_APPTRACE_SV_ENABLE
#define ESP_APPTRACE_USR_BLOCK_CORE(_cid_) (0)
#define ESP_APPTRACE_USR_BLOCK_LEN(_v_) (_v_)
#define ESP_APPTRACE_USR_DATA_LEN_MAX(_hw_data_) 255UL
#else
#define ESP_APPTRACE_USR_BLOCK_CORE(_cid_) ((_cid_) << 15)
#define ESP_APPTRACE_USR_BLOCK_LEN(_v_) (~(1 << 15) & (_v_))
#define ESP_APPTRACE_USR_DATA_LEN_MAX(_hw_data_) (ESP_APPTRACE_INBLOCK(_hw_data_)->sz - sizeof(esp_tracedata_hdr_t))
#endif
#define ESP_APPTRACE_USR_BLOCK_RAW_SZ(_s_) ((_s_) + sizeof(esp_tracedata_hdr_t))
#define ESP_APPTRACE_INBLOCK_MARKER(_hw_data_) ((_hw_data_)->state.markers[(_hw_data_)->state.in_block % 2])
#define ESP_APPTRACE_INBLOCK_MARKER_UPD(_hw_data_, _v_) do {(_hw_data_)->state.markers[(_hw_data_)->state.in_block % 2] += (_v_);}while(0)
#define ESP_APPTRACE_INBLOCK(_hw_data_) (&(_hw_data_)->blocks[(_hw_data_)->state.in_block % 2])
const static char *TAG = "esp_apptrace";
static uint32_t esp_apptrace_membufs_down_buffer_write_nolock(esp_apptrace_membufs_proto_data_t *proto, uint8_t *data, uint32_t size);
esp_err_t esp_apptrace_membufs_init(esp_apptrace_membufs_proto_data_t *proto, const esp_apptrace_mem_block_t blocks_cfg[2])
{
// disabled by default
esp_apptrace_rb_init(&proto->rb_down, NULL, 0);
// membufs proto init
for (unsigned i = 0; i < 2; i++) {
proto->blocks[i].start = blocks_cfg[i].start;
proto->blocks[i].sz = blocks_cfg[i].sz;
proto->state.markers[i] = 0;
}
proto->state.in_block = 0;
#if CONFIG_APPTRACE_PENDING_DATA_SIZE_MAX > 0
esp_apptrace_rb_init(&proto->rb_pend, proto->pending_data,
sizeof(proto->pending_data));
#endif
return ESP_OK;
}
void esp_apptrace_membufs_down_buffer_config(esp_apptrace_membufs_proto_data_t *data, uint8_t *buf, uint32_t size)
{
esp_apptrace_rb_init(&data->rb_down, buf, size);
}
// assumed to be protected by caller from multi-core/thread access
static esp_err_t esp_apptrace_membufs_swap(esp_apptrace_membufs_proto_data_t *proto)
{
int prev_block_num = proto->state.in_block % 2;
int new_block_num = prev_block_num ? (0) : (1);
esp_err_t res = ESP_OK;
res = proto->hw->swap_start(proto->state.in_block);
if (res != ESP_OK) {
return res;
}
proto->state.markers[new_block_num] = 0;
// switch to new block
proto->state.in_block++;
proto->hw->swap(new_block_num);
// handle data from host
esp_hostdata_hdr_t *hdr = (esp_hostdata_hdr_t *)proto->blocks[new_block_num].start;
// ESP_APPTRACE_LOGV("Host data %d, sz %d @ %p", proto->hw->host_data_pending(), hdr->block_sz, hdr);
if (proto->hw->host_data_pending() && hdr->block_sz > 0) {
// TODO: add support for multiple blocks from host, currently there is no need for that
uint8_t *p = proto->blocks[new_block_num].start + proto->blocks[new_block_num].sz;
ESP_APPTRACE_LOGD("Recvd %d bytes from host (@ 0x%x) [%x %x %x %x %x %x %x %x .. %x %x %x %x %x %x %x %x]",
hdr->block_sz, proto->blocks[new_block_num].start,
*(proto->blocks[new_block_num].start+0), *(proto->blocks[new_block_num].start+1),
*(proto->blocks[new_block_num].start+2), *(proto->blocks[new_block_num].start+3),
*(proto->blocks[new_block_num].start+4), *(proto->blocks[new_block_num].start+5),
*(proto->blocks[new_block_num].start+6), *(proto->blocks[new_block_num].start+7),
*(p-8), *(p-7), *(p-6), *(p-5), *(p-4), *(p-3), *(p-2), *(p-1));
uint32_t sz = esp_apptrace_membufs_down_buffer_write_nolock(proto, (uint8_t *)(hdr+1), hdr->block_sz);
if (sz != hdr->block_sz) {
ESP_APPTRACE_LOGE("Failed to write %d bytes to down buffer (%d %d)!", hdr->block_sz - sz, hdr->block_sz, sz);
}
hdr->block_sz = 0;
}
#if CONFIG_APPTRACE_PENDING_DATA_SIZE_MAX > 0
// copy pending data to block if any
while (proto->state.markers[new_block_num] < proto->blocks[new_block_num].sz) {
uint32_t read_sz = esp_apptrace_rb_read_size_get(&proto->rb_pend);
if (read_sz == 0) {
break; // no more data in pending buffer
}
if (read_sz > proto->blocks[new_block_num].sz - proto->state.markers[new_block_num]) {
read_sz = proto->blocks[new_block_num].sz - proto->state.markers[new_block_num];
}
uint8_t *ptr = esp_apptrace_rb_consume(&proto->rb_pend, read_sz);
if (!ptr) {
assert(false && "Failed to consume pended bytes!!");
break;
}
ESP_APPTRACE_LOGD("Pump %d pend bytes [%x %x %x %x : %x %x %x %x : %x %x %x %x : %x %x...%x %x]",
read_sz, *(ptr+0), *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4),
*(ptr+5), *(ptr+6), *(ptr+7), *(ptr+8), *(ptr+9), *(ptr+10), *(ptr+11), *(ptr+12), *(ptr+13), *(ptr+read_sz-2), *(ptr+read_sz-1));
memcpy(proto->blocks[new_block_num].start + proto->state.markers[new_block_num], ptr, read_sz);
proto->state.markers[new_block_num] += read_sz;
}
#endif
proto->hw->swap_end(proto->state.in_block, proto->state.markers[prev_block_num]);
return res;
}
static esp_err_t esp_apptrace_membufs_swap_waitus(esp_apptrace_membufs_proto_data_t *proto, esp_apptrace_tmo_t *tmo)
{
int res;
while ((res = esp_apptrace_membufs_swap(proto)) != ESP_OK) {
res = esp_apptrace_tmo_check(tmo);
if (res != ESP_OK) {
break;
}
}
return res;
}
uint8_t *esp_apptrace_membufs_down_buffer_get(esp_apptrace_membufs_proto_data_t *proto, uint32_t *size, esp_apptrace_tmo_t *tmo)
{
uint8_t *ptr = NULL;
while (1) {
uint32_t sz = esp_apptrace_rb_read_size_get(&proto->rb_down);
if (sz != 0) {
*size = MIN(*size, sz);
ptr = esp_apptrace_rb_consume(&proto->rb_down, *size);
if (!ptr) {
assert(false && "Failed to consume bytes from down buffer!");
}
break;
}
// may need to flush
if (proto->hw->host_data_pending()) {
ESP_APPTRACE_LOGD("force flush");
int res = esp_apptrace_membufs_swap_waitus(proto, tmo);
if (res != ESP_OK) {
ESP_APPTRACE_LOGE("Failed to switch to another block to recv data from host!");
/*do not return error because data can be in down buffer already*/
}
} else {
// check tmo only if there is no data from host
int res = esp_apptrace_tmo_check(tmo);
if (res != ESP_OK) {
return NULL;
}
}
}
return ptr;
}
esp_err_t esp_apptrace_membufs_down_buffer_put(esp_apptrace_membufs_proto_data_t *proto, uint8_t *ptr, esp_apptrace_tmo_t *tmo)
{
/* nothing todo */
return ESP_OK;
}
static uint32_t esp_apptrace_membufs_down_buffer_write_nolock(esp_apptrace_membufs_proto_data_t *proto, uint8_t *data, uint32_t size)
{
uint32_t total_sz = 0;
while (total_sz < size) {
ESP_APPTRACE_LOGD("esp_apptrace_trax_down_buffer_write_nolock WRS %d-%d-%d %d", proto->rb_down.wr, proto->rb_down.rd,
proto->rb_down.cur_size, size);
uint32_t wr_sz = esp_apptrace_rb_write_size_get(&proto->rb_down);
if (wr_sz == 0) {
break;
}
if (wr_sz > size - total_sz) {
wr_sz = size - total_sz;
}
ESP_APPTRACE_LOGD("esp_apptrace_trax_down_buffer_write_nolock wr %d", wr_sz);
uint8_t *ptr = esp_apptrace_rb_produce(&proto->rb_down, wr_sz);
if (!ptr) {
assert(false && "Failed to produce bytes to down buffer!");
}
ESP_APPTRACE_LOGD("esp_apptrace_trax_down_buffer_write_nolock wr %d to 0x%x from 0x%x", wr_sz, ptr, data + total_sz + wr_sz);
memcpy(ptr, data + total_sz, wr_sz);
total_sz += wr_sz;
ESP_APPTRACE_LOGD("esp_apptrace_trax_down_buffer_write_nolock wr %d/%d", wr_sz, total_sz);
}
return total_sz;
}
static inline uint8_t *esp_apptrace_membufs_wait4buf(esp_apptrace_membufs_proto_data_t *proto, uint16_t size, esp_apptrace_tmo_t *tmo, int *pended)
{
uint8_t *ptr = NULL;
int res = esp_apptrace_membufs_swap_waitus(proto, tmo);
if (res != ESP_OK) {
return NULL;
}
#if CONFIG_APPTRACE_PENDING_DATA_SIZE_MAX > 0
// check if we still have pending data
if (esp_apptrace_rb_read_size_get(&proto->rb_pend) > 0) {
// if after block switch we still have pending data (not all pending data have been pumped to block)
// alloc new pending buffer
*pended = 1;
ptr = esp_apptrace_rb_produce(&proto->rb_pend, size);
if (!ptr) {
ESP_APPTRACE_LOGE("Failed to alloc pend buf 1: w-r-s %d-%d-%d!", proto->rb_pend.wr, proto->rb_pend.rd, proto->rb_pend.cur_size);
}
} else
#endif
{
// update block pointers
if (ESP_APPTRACE_INBLOCK_MARKER(proto) + size > ESP_APPTRACE_INBLOCK(proto)->sz) {
#if CONFIG_APPTRACE_PENDING_DATA_SIZE_MAX > 0
*pended = 1;
ptr = esp_apptrace_rb_produce(&proto->rb_pend, size);
if (ptr == NULL) {
ESP_APPTRACE_LOGE("Failed to alloc pend buf 2: w-r-s %d-%d-%d!", proto->rb_pend.wr, proto->rb_pend.rd, proto->rb_pend.cur_size);
}
#endif
} else {
*pended = 0;
ptr = ESP_APPTRACE_INBLOCK(proto)->start + ESP_APPTRACE_INBLOCK_MARKER(proto);
}
}
return ptr;
}
static inline uint8_t *esp_apptrace_membufs_pkt_start(uint8_t *ptr, uint16_t size)
{
// it is safe to use cpu_hal_get_core_id() in macro call because arg is used only once inside it
((esp_tracedata_hdr_t *)ptr)->block_sz = ESP_APPTRACE_USR_BLOCK_CORE(cpu_hal_get_core_id()) | size;
((esp_tracedata_hdr_t *)ptr)->wr_sz = 0;
return ptr + sizeof(esp_tracedata_hdr_t);
}
static inline void esp_apptrace_membufs_pkt_end(uint8_t *ptr)
{
esp_tracedata_hdr_t *hdr = (esp_tracedata_hdr_t *)(ptr - sizeof(esp_tracedata_hdr_t));
// update written size
hdr->wr_sz = hdr->block_sz;
}
uint8_t *esp_apptrace_membufs_up_buffer_get(esp_apptrace_membufs_proto_data_t *proto, uint32_t size, esp_apptrace_tmo_t *tmo)
{
uint8_t *buf_ptr = NULL;
if (size > ESP_APPTRACE_USR_DATA_LEN_MAX(proto)) {
ESP_APPTRACE_LOGE("Too large user data size %d!", size);
return NULL;
}
// check for data in the pending buffer
#if CONFIG_APPTRACE_PENDING_DATA_SIZE_MAX > 0
if (esp_apptrace_rb_read_size_get(&proto->rb_pend) > 0) {
// if we have buffered data try to switch block
esp_apptrace_membufs_swap(proto);
// if switch was successful, part or all pended data have been copied to block
}
if (esp_apptrace_rb_read_size_get(&proto->rb_pend) > 0) {
// if we have buffered data alloc new pending buffer
ESP_APPTRACE_LOGD("Get %d bytes from PEND buffer", size);
buf_ptr = esp_apptrace_rb_produce(&proto->rb_pend, ESP_APPTRACE_USR_BLOCK_RAW_SZ(size));
if (buf_ptr == NULL) {
int pended_buf;
buf_ptr = esp_apptrace_membufs_wait4buf(proto, ESP_APPTRACE_USR_BLOCK_RAW_SZ(size), tmo, &pended_buf);
if (buf_ptr && !pended_buf) {
ESP_APPTRACE_LOGD("Get %d bytes from block", size);
// update cur block marker
ESP_APPTRACE_INBLOCK_MARKER_UPD(proto, ESP_APPTRACE_USR_BLOCK_RAW_SZ(size));
}
}
} else {
#else
if (1) {
#endif
if (ESP_APPTRACE_INBLOCK_MARKER(proto) + ESP_APPTRACE_USR_BLOCK_RAW_SZ(size) > ESP_APPTRACE_INBLOCK(proto)->sz) {
#if CONFIG_APPTRACE_PENDING_DATA_SIZE_MAX > 0
ESP_APPTRACE_LOGD("Block full. Get %d bytes from PEND buffer", size);
buf_ptr = esp_apptrace_rb_produce(&proto->rb_pend, ESP_APPTRACE_USR_BLOCK_RAW_SZ(size));
#endif
if (buf_ptr == NULL) {
int pended_buf;
ESP_APPTRACE_LOGD(" full. Get %d bytes from pend buffer", size);
buf_ptr = esp_apptrace_membufs_wait4buf(proto, ESP_APPTRACE_USR_BLOCK_RAW_SZ(size), tmo, &pended_buf);
if (buf_ptr && !pended_buf) {
ESP_APPTRACE_LOGD("Got %d bytes from block", size);
// update cur block marker
ESP_APPTRACE_INBLOCK_MARKER_UPD(proto, ESP_APPTRACE_USR_BLOCK_RAW_SZ(size));
}
}
} else {
ESP_APPTRACE_LOGD("Get %d bytes from buffer", size);
// fit to curr nlock
buf_ptr = ESP_APPTRACE_INBLOCK(proto)->start + ESP_APPTRACE_INBLOCK_MARKER(proto);
// update cur block marker
ESP_APPTRACE_INBLOCK_MARKER_UPD(proto, ESP_APPTRACE_USR_BLOCK_RAW_SZ(size));
}
}
if (buf_ptr) {
buf_ptr = esp_apptrace_membufs_pkt_start(buf_ptr, size);
}
return buf_ptr;
}
esp_err_t esp_apptrace_membufs_up_buffer_put(esp_apptrace_membufs_proto_data_t *proto, uint8_t *ptr, esp_apptrace_tmo_t *tmo)
{
esp_apptrace_membufs_pkt_end(ptr);
// TODO: mark block as busy in order not to re-use it for other tracing calls until it is completely written
// TODO: avoid potential situation when all memory is consumed by low prio tasks which can not complete writing due to
// higher prio tasks and the latter can not allocate buffers at all
// this is abnormal situation can be detected on host which will receive only uncompleted buffers
// workaround: use own memcpy which will kick-off dead tracing calls
return ESP_OK;
}
esp_err_t esp_apptrace_membufs_flush_nolock(esp_apptrace_membufs_proto_data_t *proto, uint32_t min_sz, esp_apptrace_tmo_t *tmo)
{
int res = ESP_OK;
if (ESP_APPTRACE_INBLOCK_MARKER(proto) < min_sz) {
ESP_APPTRACE_LOGI("Ignore flush request for min %d bytes. Bytes in block: %d.", min_sz, ESP_APPTRACE_INBLOCK_MARKER(proto));
return ESP_OK;
}
// switch block while size of data (including that in pending buffer) is more than min size
while (ESP_APPTRACE_INBLOCK_MARKER(proto) > min_sz) {
ESP_APPTRACE_LOGD("Try to flush %d bytes. Wait until block switch for %lld us", ESP_APPTRACE_INBLOCK_MARKER(proto), tmo->tmo);
res = esp_apptrace_membufs_swap_waitus(proto, tmo);
if (res != ESP_OK) {
if (tmo->tmo != ESP_APPTRACE_TMO_INFINITE)
ESP_APPTRACE_LOGW("Failed to switch to another block in %lld us!", tmo->tmo);
else
ESP_APPTRACE_LOGE("Failed to switch to another block in %lld us!", tmo->tmo);
return res;
}
}
return res;
}

View File

@@ -1,49 +1,39 @@
/*
* SPDX-FileCopyrightText: 2017-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
// Copyright 2017 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_app_trace_util.h"
#include "sdkconfig.h"
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////// Locks /////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
#if ESP_APPTRACE_PRINT_LOCK
static esp_apptrace_lock_t s_log_lock = {.irq_stat = 0, .portmux = portMUX_INITIALIZER_UNLOCKED};
#endif
int esp_apptrace_log_lock(void)
{
#if ESP_APPTRACE_PRINT_LOCK
esp_apptrace_tmo_t tmo;
esp_apptrace_tmo_init(&tmo, ESP_APPTRACE_TMO_INFINITE);
int ret = esp_apptrace_lock_take(&s_log_lock, &tmo);
return ret;
#else
return 0;
#endif
}
void esp_apptrace_log_unlock(void)
{
#if ESP_APPTRACE_PRINT_LOCK
esp_apptrace_lock_give(&s_log_lock);
#endif
}
#include "esp_clk.h"
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////// TIMEOUT /////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
#define ESP_APPTRACE_CPUTICKS2US(_t_, _cpu_freq_) ((_t_)/(_cpu_freq_/1000000))
#define ESP_APPTRACE_US2CPUTICKS(_t_, _cpu_freq_) ((_t_)*(_cpu_freq_/1000000))
esp_err_t esp_apptrace_tmo_check(esp_apptrace_tmo_t *tmo)
{
if (tmo->tmo != (int64_t)-1) {
tmo->elapsed = esp_timer_get_time() - tmo->start;
int cpu_freq = esp_clk_cpu_freq();
if (tmo->tmo != ESP_APPTRACE_TMO_INFINITE) {
unsigned cur = portGET_RUN_TIME_COUNTER_VALUE();
if (tmo->start <= cur) {
tmo->elapsed = ESP_APPTRACE_CPUTICKS2US(cur - tmo->start, cpu_freq);
} else {
tmo->elapsed = ESP_APPTRACE_CPUTICKS2US(0xFFFFFFFF - tmo->start + cur, cpu_freq);
}
if (tmo->elapsed >= tmo->tmo) {
return ESP_ERR_TIMEOUT;
}
@@ -60,16 +50,22 @@ esp_err_t esp_apptrace_lock_take(esp_apptrace_lock_t *lock, esp_apptrace_tmo_t *
int res;
while (1) {
//Todo: Replace the current locking mechanism and int_state with portTRY_ENTER_CRITICAL() instead.
// do not overwrite lock->int_state before we actually acquired the mux
unsigned int_state = portSET_INTERRUPT_MASK_FROM_ISR();
unsigned int_state = portENTER_CRITICAL_NESTED();
// FIXME: if mux is busy it is not good idea to loop during the whole tmo with disabled IRQs.
// So we check mux state using zero tmo, restore IRQs and let others tasks/IRQs to run on this CPU
// while we are doing our own tmo check.
#ifdef CONFIG_FREERTOS_PORTMUX_DEBUG
bool success = vPortCPUAcquireMutexTimeout(&lock->mux, 0, __FUNCTION__, __LINE__);
#else
bool success = vPortCPUAcquireMutexTimeout(&lock->mux, 0);
#endif
if (success) {
lock->int_state = int_state;
return ESP_OK;
}
portCLEAR_INTERRUPT_MASK_FROM_ISR(int_state);
// we can be preempted from this place till the next call (above) to portSET_INTERRUPT_MASK_FROM_ISR()
portEXIT_CRITICAL_NESTED(int_state);
// we can be preempted from this place till the next call (above) to portENTER_CRITICAL_NESTED()
res = esp_apptrace_tmo_check(tmo);
if (res != ESP_OK) {
break;
@@ -84,8 +80,12 @@ esp_err_t esp_apptrace_lock_give(esp_apptrace_lock_t *lock)
unsigned int_state = lock->int_state;
// after call to the following func we can not be sure that lock->int_state
// is not overwritten by other CPU who has acquired the mux just after we released it. See esp_apptrace_lock_take().
#ifdef CONFIG_FREERTOS_PORTMUX_DEBUG
vPortCPUReleaseMutex(&lock->mux, __FUNCTION__, __LINE__);
#else
vPortCPUReleaseMutex(&lock->mux);
portCLEAR_INTERRUPT_MASK_FROM_ISR(int_state);
#endif
portEXIT_CRITICAL_NESTED(int_state);
return ESP_OK;
}

View File

@@ -4,21 +4,14 @@
COMPONENT_SRCDIRS := .
ifdef CONFIG_APPTRACE_MEMBUFS_APPTRACE_PROTO_ENABLE
COMPONENT_SRCDIRS += port/xtensa
endif
COMPONENT_ADD_INCLUDEDIRS = include
COMPONENT_PRIV_INCLUDEDIRS = private_include \
port/include
COMPONENT_ADD_LDFLAGS = -lapp_trace
# do not produce gcov info for this module, it is used as transport for gcov
CFLAGS := $(subst --coverage,,$(CFLAGS))
ifdef CONFIG_APPTRACE_SV_ENABLE
ifdef CONFIG_SYSVIEW_ENABLE
COMPONENT_ADD_INCLUDEDIRS += \
sys_view/Config \
@@ -30,8 +23,7 @@ COMPONENT_SRCDIRS += \
sys_view/SEGGER \
sys_view/Sample/OS \
sys_view/Sample/Config \
sys_view/esp \
sys_view/ext
sys_view/esp32
else
COMPONENT_SRCDIRS += gcov
endif

View File

@@ -1,143 +1,162 @@
/*
* SPDX-FileCopyrightText: 2017-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
// Copyright 2017 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// This module implements runtime file I/O API for GCOV.
#include <string.h>
#include "esp_task_wdt.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/semphr.h"
#include "soc/cpu.h"
#include "soc/timer_periph.h"
#include "soc/timer_group_struct.h"
#include "soc/timer_group_reg.h"
#include "esp_app_trace.h"
#include "esp_freertos_hooks.h"
#include "esp_private/dbg_stubs.h"
#include "esp_ipc.h"
#include "hal/wdt_hal.h"
#if CONFIG_IDF_TARGET_ESP32
#include "esp32/rom/libc_stubs.h"
#elif CONFIG_IDF_TARGET_ESP32S2
#include "esp32s2/rom/libc_stubs.h"
#endif
#include "esp_dbg_stubs.h"
#if CONFIG_APPTRACE_GCOV_ENABLE
#if CONFIG_ESP32_GCOV_ENABLE
#define ESP_GCOV_DOWN_BUF_SIZE 4200
#define LOG_LOCAL_LEVEL CONFIG_LOG_DEFAULT_LEVEL
#include "esp_log.h"
const static char *TAG = "esp_gcov_rtio";
static volatile bool s_create_gcov_task = false;
static volatile bool s_gcov_task_running = false;
extern void __gcov_dump(void);
extern void __gcov_reset(void);
#if GCC_NOT_5_2_0
void __gcov_dump(void);
void __gcov_reset(void);
#else
/* The next code for old GCC */
void gcov_dump_task(void *pvParameter)
static void (*s_gcov_exit)(void);
/* Root of a program/shared-object state */
struct gcov_root
{
int dump_result = 0;
bool *running = (bool *)pvParameter;
void *list;
unsigned dumped : 1; /* counts have been dumped. */
unsigned run_counted : 1; /* run has been accounted for. */
struct gcov_root *next;
struct gcov_root *prev;
};
ESP_EARLY_LOGV(TAG, "%s stack use in %d", __FUNCTION__, uxTaskGetStackHighWaterMark(NULL));
/* Per-dynamic-object gcov state. */
extern struct gcov_root __gcov_root;
static void esp_gcov_reset_status(void)
{
__gcov_root.dumped = 0;
__gcov_root.run_counted = 0;
}
#endif
static int esp_dbg_stub_gcov_dump_do(void)
{
int ret = ESP_OK;
ESP_EARLY_LOGV(TAG, "Alloc apptrace down buf %d bytes", ESP_GCOV_DOWN_BUF_SIZE);
void *down_buf = malloc(ESP_GCOV_DOWN_BUF_SIZE);
if (down_buf == NULL) {
ESP_EARLY_LOGE(TAG, "Could not allocate memory for the buffer");
dump_result = ESP_ERR_NO_MEM;
goto gcov_exit;
return ESP_ERR_NO_MEM;
}
ESP_EARLY_LOGV(TAG, "Config apptrace down buf");
esp_apptrace_down_buffer_config(down_buf, ESP_GCOV_DOWN_BUF_SIZE);
ESP_EARLY_LOGV(TAG, "Dump data...");
#if GCC_NOT_5_2_0
__gcov_dump();
// reset dump status to allow incremental data accumulation
__gcov_reset();
#else
ESP_EARLY_LOGV(TAG, "Check for dump handler %p", s_gcov_exit);
if (s_gcov_exit) {
s_gcov_exit();
// reset dump status to allow incremental data accumulation
esp_gcov_reset_status();
}
#endif
ESP_EARLY_LOGV(TAG, "Free apptrace down buf");
free(down_buf);
ESP_EARLY_LOGV(TAG, "Finish file transfer session");
dump_result = esp_apptrace_fstop(ESP_APPTRACE_DEST_TRAX);
if (dump_result != ESP_OK) {
ESP_EARLY_LOGE(TAG, "Failed to send files transfer stop cmd (%d)!", dump_result);
}
gcov_exit:
ESP_EARLY_LOGV(TAG, "dump_result %d", dump_result);
if (running) {
*running = false;
}
ESP_EARLY_LOGV(TAG, "%s stack use out %d", __FUNCTION__, uxTaskGetStackHighWaterMark(NULL));
vTaskDelete(NULL);
}
void gcov_create_task(void *arg)
{
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
xTaskCreatePinnedToCore(&gcov_dump_task, "gcov_dump_task", 2048, (void *)&s_gcov_task_running, configMAX_PRIORITIES - 1, NULL, 0);
}
void gcov_create_task_tick_hook(void)
{
extern esp_err_t esp_ipc_start_gcov_from_isr(uint32_t cpu_id, esp_ipc_func_t func, void* arg);
if (s_create_gcov_task) {
if (esp_ipc_start_gcov_from_isr(xPortGetCoreID(), &gcov_create_task, NULL) == ESP_OK) {
s_create_gcov_task = false;
}
ret = esp_apptrace_fstop(ESP_APPTRACE_DEST_TRAX);
if (ret != ESP_OK) {
ESP_EARLY_LOGE(TAG, "Failed to send files transfer stop cmd (%d)!", ret);
}
return ret;
}
/**
* @brief Triggers gcov info dump task
* @brief Triggers gcov info dump.
* This function is to be called by OpenOCD, not by normal user code.
* TODO: what about interrupted flash access (when cache disabled)
* TODO: what about interrupted flash access (when cache disabled)???
*
* @return ESP_OK on success, otherwise see esp_err_t
*/
static int esp_dbg_stub_gcov_entry(void)
{
/* we are in isr context here */
s_create_gcov_task = true;
return ESP_OK;
#if GCC_NOT_5_2_0
return esp_dbg_stub_gcov_dump_do();
#else
int ret = ESP_OK;
// disable IRQs on this CPU, other CPU is halted by OpenOCD
unsigned irq_state = portENTER_CRITICAL_NESTED();
ret = esp_dbg_stub_gcov_dump_do();
portEXIT_CRITICAL_NESTED(irq_state);
return ret;
#endif
}
void esp_gcov_dump()
{
// disable IRQs on this CPU, other CPU is halted by OpenOCD
unsigned irq_state = portENTER_CRITICAL_NESTED();
#if !CONFIG_FREERTOS_UNICORE
int other_core = xPortGetCoreID() ? 0 : 1;
esp_cpu_stall(other_core);
#endif
while (!esp_apptrace_host_is_connected(ESP_APPTRACE_DEST_TRAX)) {
// to avoid complains that task watchdog got triggered for other tasks
TIMERG0.wdt_wprotect=TIMG_WDT_WKEY_VALUE;
TIMERG0.wdt_feed=1;
TIMERG0.wdt_wprotect=0;
// to avoid reboot on INT_WDT
TIMERG1.wdt_wprotect=TIMG_WDT_WKEY_VALUE;
TIMERG1.wdt_feed=1;
TIMERG1.wdt_wprotect=0;
}
esp_dbg_stub_gcov_dump_do();
#if !CONFIG_FREERTOS_UNICORE
esp_cpu_unstall(other_core);
#endif
portEXIT_CRITICAL_NESTED(irq_state);
}
int gcov_rtio_atexit(void (*function)(void) __attribute__ ((unused)))
{
uint32_t capabilities = 0;
#if GCC_NOT_5_2_0
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
#else
ESP_EARLY_LOGV(TAG, "%s %p", __FUNCTION__, function);
s_gcov_exit = function;
#endif
esp_dbg_stub_entry_set(ESP_DBG_STUB_ENTRY_GCOV, (uint32_t)&esp_dbg_stub_gcov_entry);
if (esp_dbg_stub_entry_get(ESP_DBG_STUB_ENTRY_CAPABILITIES, &capabilities) == ESP_OK) {
esp_dbg_stub_entry_set(ESP_DBG_STUB_ENTRY_CAPABILITIES, capabilities | ESP_DBG_STUB_CAP_GCOV_TASK);
}
esp_register_freertos_tick_hook(gcov_create_task_tick_hook);
return ESP_OK;
}
void esp_gcov_dump(void)
{
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
while (!esp_apptrace_host_is_connected(ESP_APPTRACE_DEST_TRAX)) {
vTaskDelay(pdMS_TO_TICKS(10));
}
/* We are not in isr context here. Waiting for the completion is safe */
s_gcov_task_running = true;
s_create_gcov_task = true;
while (s_gcov_task_running) {
vTaskDelay(pdMS_TO_TICKS(10));
}
return 0;
}
void *gcov_rtio_fopen(const char *path, const char *mode)
{
ESP_EARLY_LOGV(TAG, "%s '%s' '%s'", __FUNCTION__, path, mode);
void *f = esp_apptrace_fopen(ESP_APPTRACE_DEST_TRAX, path, mode);
ESP_EARLY_LOGV(TAG, "%s ret %p", __FUNCTION__, f);
return f;
return esp_apptrace_fopen(ESP_APPTRACE_DEST_TRAX, path, mode);
}
int gcov_rtio_fclose(void *stream)
@@ -148,7 +167,7 @@ int gcov_rtio_fclose(void *stream)
size_t gcov_rtio_fread(void *ptr, size_t size, size_t nmemb, void *stream)
{
ESP_EARLY_LOGV(TAG, "%s read %u", __FUNCTION__, size * nmemb);
ESP_EARLY_LOGV(TAG, "%s read %u", __FUNCTION__, size*nmemb);
size_t sz = esp_apptrace_fread(ESP_APPTRACE_DEST_TRAX, ptr, size, nmemb, stream);
ESP_EARLY_LOGV(TAG, "%s actually read %u", __FUNCTION__, sz);
return sz;

View File

@@ -1,105 +0,0 @@
/*
* SPDX-FileCopyrightText: 2018-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <sdkconfig.h>
#define HEAP_TRACE_SRCFILE /* don't warn on inclusion here */
#include "esp_heap_trace.h"
#undef HEAP_TRACE_SRCFILE
#if CONFIG_APPTRACE_SV_ENABLE
#include "esp_app_trace.h"
#include "esp_sysview_trace.h"
#endif
#define STACK_DEPTH CONFIG_HEAP_TRACING_STACK_DEPTH
#ifdef CONFIG_HEAP_TRACING_TOHOST
#if !CONFIG_APPTRACE_SV_ENABLE
#error None of the heap tracing backends is enabled! You must enable SystemView compatible tracing to use this feature.
#endif
static bool s_tracing;
esp_err_t heap_trace_init_tohost(void)
{
if (s_tracing) {
return ESP_ERR_INVALID_STATE;
}
return ESP_OK;
}
esp_err_t heap_trace_start(heap_trace_mode_t mode_param)
{
#if CONFIG_APPTRACE_SV_ENABLE
esp_err_t ret = esp_sysview_heap_trace_start((uint32_t)-1);
if (ret != ESP_OK) {
return ret;
}
#endif
s_tracing = true;
return ESP_OK;
}
esp_err_t heap_trace_stop(void)
{
esp_err_t ret = ESP_ERR_NOT_SUPPORTED;
#if CONFIG_APPTRACE_SV_ENABLE
ret = esp_sysview_heap_trace_stop();
#endif
s_tracing = false;
return ret;
}
esp_err_t heap_trace_resume(void)
{
return heap_trace_start(HEAP_TRACE_ALL);
}
size_t heap_trace_get_count(void)
{
return 0;
}
esp_err_t heap_trace_get(size_t index, heap_trace_record_t *record)
{
return ESP_ERR_NOT_SUPPORTED;
}
void heap_trace_dump(void)
{
return;
}
/* Add a new allocation to the heap trace records */
static IRAM_ATTR void record_allocation(const heap_trace_record_t *record)
{
if (!s_tracing) {
return;
}
#if CONFIG_APPTRACE_SV_ENABLE
esp_sysview_heap_trace_alloc(record->address, record->size, record->alloced_by);
#endif
}
/* record a free event in the heap trace log
For HEAP_TRACE_ALL, this means filling in the freed_by pointer.
For HEAP_TRACE_LEAKS, this means removing the record from the log.
*/
static IRAM_ATTR void record_free(void *p, void **callers)
{
if (!s_tracing) {
return;
}
#if CONFIG_APPTRACE_SV_ENABLE
esp_sysview_heap_trace_free(p, callers);
#endif
}
#include "heap_trace.inc"
#endif /*CONFIG_HEAP_TRACING_TOHOST*/

View File

@@ -1,8 +1,16 @@
/*
* SPDX-FileCopyrightText: 2017-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
// Copyright 2017 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Hot It Works
// ************
@@ -17,8 +25,9 @@
#include <string.h>
#include "esp_app_trace.h"
#if CONFIG_APPTRACE_ENABLE
#if CONFIG_ESP32_APPTRACE_ENABLE
#define LOG_LOCAL_LEVEL CONFIG_LOG_DEFAULT_LEVEL
#include "esp_log.h"
const static char *TAG = "esp_host_file_io";
@@ -136,9 +145,6 @@ void *esp_apptrace_fopen(esp_apptrace_dest_t dest, const char *path, const char
esp_apptrace_fopen_args_t cmd_args;
ESP_EARLY_LOGV(TAG, "esp_apptrace_fopen '%s' '%s'", path, mode);
if (path == NULL || mode == NULL) {
return 0;
}
cmd_args.path = path;
cmd_args.path_len = strlen(path) + 1;
@@ -207,10 +213,6 @@ size_t esp_apptrace_fwrite(esp_apptrace_dest_t dest, const void *ptr, size_t siz
ESP_EARLY_LOGV(TAG, "esp_apptrace_fwrite f %p l %d", stream, size*nmemb);
if (ptr == NULL) {
return 0;
}
cmd_args.buf = (void *)ptr;
cmd_args.size = size * nmemb;
cmd_args.file = stream;
@@ -246,10 +248,6 @@ size_t esp_apptrace_fread(esp_apptrace_dest_t dest, void *ptr, size_t size, size
ESP_EARLY_LOGV(TAG, "esp_apptrace_fread f %p l %d", stream, size*nmemb);
if (ptr == NULL) {
return 0;
}
cmd_args.size = size * nmemb;
cmd_args.file = stream;
esp_err_t ret = esp_apptrace_file_cmd_send(dest, ESP_APPTRACE_FILE_CMD_FREAD, esp_apptrace_fread_args_prepare,

View File

@@ -1,8 +1,16 @@
/*
* SPDX-FileCopyrightText: 2017-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
// Copyright 2017 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef ESP_APP_TRACE_H_
#define ESP_APP_TRACE_H_
@@ -10,19 +18,12 @@
#include "esp_err.h"
#include "esp_app_trace_util.h" // ESP_APPTRACE_TMO_INFINITE
#ifdef __cplusplus
extern "C" {
#endif
/**
* Application trace data destinations bits.
*/
typedef enum {
ESP_APPTRACE_DEST_JTAG = 1, ///< JTAG destination
ESP_APPTRACE_DEST_TRAX = ESP_APPTRACE_DEST_JTAG, ///< xxx_TRAX name is obsolete, use more common xxx_JTAG
ESP_APPTRACE_DEST_UART0, ///< UART0 destination
ESP_APPTRACE_DEST_MAX = ESP_APPTRACE_DEST_UART0,
ESP_APPTRACE_DEST_NUM
ESP_APPTRACE_DEST_TRAX = 0x1, ///< JTAG destination
ESP_APPTRACE_DEST_UART0 = 0x2, ///< UART destination
} esp_apptrace_dest_t;
/**
@@ -32,7 +33,7 @@ typedef enum {
*
* @return ESP_OK on success, otherwise see esp_err_t
*/
esp_err_t esp_apptrace_init(void);
esp_err_t esp_apptrace_init();
/**
* @brief Configures down buffer.
@@ -261,8 +262,4 @@ int esp_apptrace_fstop(esp_apptrace_dest_t dest);
*/
void esp_gcov_dump(void);
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -1,31 +1,34 @@
/*
* SPDX-FileCopyrightText: 2017-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
// Copyright 2017 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef ESP_APP_TRACE_UTIL_H_
#define ESP_APP_TRACE_UTIL_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "freertos/FreeRTOS.h"
#include "esp_err.h"
#include "esp_timer.h"
/** Infinite waiting timeout */
#define ESP_APPTRACE_TMO_INFINITE ((uint32_t)-1)
/** Structure which holds data necessary for measuring time intervals.
/** Structure which holds data necessary for measuring time intervals.
*
* After initialization via esp_apptrace_tmo_init() user needs to call esp_apptrace_tmo_check()
* periodically to check timeout for expiration.
*/
typedef struct {
int64_t start; ///< time interval start (in us)
int64_t tmo; ///< timeout value (in us)
int64_t elapsed; ///< elapsed time (in us)
uint32_t start; ///< time interval start (in CPU ticks)
uint32_t tmo; ///< timeout value (in us)
uint32_t elapsed; ///< elapsed time (in us)
} esp_apptrace_tmo_t;
/**
@@ -36,23 +39,23 @@ typedef struct {
*/
static inline void esp_apptrace_tmo_init(esp_apptrace_tmo_t *tmo, uint32_t user_tmo)
{
tmo->start = esp_timer_get_time();
tmo->tmo = user_tmo == ESP_APPTRACE_TMO_INFINITE ? (int64_t)-1 : (int64_t)user_tmo;
tmo->start = portGET_RUN_TIME_COUNTER_VALUE();
tmo->tmo = user_tmo;
tmo->elapsed = 0;
}
/**
* @brief Checks timeout for expiration.
*
* @param tmo Pointer to timeout structure.
* @param tmo Pointer to timeout structure to be initialized.
*
* @return number of remaining us till tmo.
* @return ESP_OK on success, otherwise \see esp_err_t
*/
esp_err_t esp_apptrace_tmo_check(esp_apptrace_tmo_t *tmo);
static inline uint32_t esp_apptrace_tmo_remaining_us(esp_apptrace_tmo_t *tmo)
{
return tmo->tmo != (int64_t)-1 ? (tmo->elapsed - tmo->tmo) : ESP_APPTRACE_TMO_INFINITE;
return tmo->tmo != ESP_APPTRACE_TMO_INFINITE ? (tmo->elapsed - tmo->tmo) : ESP_APPTRACE_TMO_INFINITE;
}
/** Tracing module synchronization lock */
@@ -68,7 +71,7 @@ typedef struct {
*/
static inline void esp_apptrace_lock_init(esp_apptrace_lock_t *lock)
{
portMUX_INITIALIZE(&lock->mux);
vPortCPUInitializeMutex(&lock->mux);
lock->int_state = 0;
}
@@ -93,7 +96,7 @@ esp_err_t esp_apptrace_lock_give(esp_apptrace_lock_t *lock);
/** Ring buffer control structure.
*
* @note For purposes of application tracing module if there is no enough space for user data and write pointer can be wrapped
* @note For purposes of application tracing module if there is no enough space for user data and write pointer can be wrapped
* current ring buffer size can be temporarily shrinked in order to provide buffer with requested size.
*/
typedef struct {
@@ -161,32 +164,4 @@ uint32_t esp_apptrace_rb_read_size_get(esp_apptrace_rb_t *rb);
*/
uint32_t esp_apptrace_rb_write_size_get(esp_apptrace_rb_t *rb);
int esp_apptrace_log_lock(void);
void esp_apptrace_log_unlock(void);
#define ESP_APPTRACE_LOG( format, ... ) \
do { \
esp_apptrace_log_lock(); \
esp_rom_printf(format, ##__VA_ARGS__); \
esp_apptrace_log_unlock(); \
} while(0)
#define ESP_APPTRACE_LOG_LEV( _L_, level, format, ... ) \
do { \
if (LOG_LOCAL_LEVEL >= level) { \
ESP_APPTRACE_LOG(LOG_FORMAT(_L_, format), esp_log_early_timestamp(), TAG, ##__VA_ARGS__); \
} \
} while(0)
#define ESP_APPTRACE_LOGE( format, ... ) ESP_APPTRACE_LOG_LEV(E, ESP_LOG_ERROR, format, ##__VA_ARGS__)
#define ESP_APPTRACE_LOGW( format, ... ) ESP_APPTRACE_LOG_LEV(W, ESP_LOG_WARN, format, ##__VA_ARGS__)
#define ESP_APPTRACE_LOGI( format, ... ) ESP_APPTRACE_LOG_LEV(I, ESP_LOG_INFO, format, ##__VA_ARGS__)
#define ESP_APPTRACE_LOGD( format, ... ) ESP_APPTRACE_LOG_LEV(D, ESP_LOG_DEBUG, format, ##__VA_ARGS__)
#define ESP_APPTRACE_LOGV( format, ... ) ESP_APPTRACE_LOG_LEV(V, ESP_LOG_VERBOSE, format, ##__VA_ARGS__)
#define ESP_APPTRACE_LOGO( format, ... ) ESP_APPTRACE_LOG_LEV(E, ESP_LOG_NONE, format, ##__VA_ARGS__)
#ifdef __cplusplus
}
#endif
#endif //ESP_APP_TRACE_UTIL_H_

View File

@@ -1,80 +0,0 @@
/*
* SPDX-FileCopyrightText: 2018-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ESP_SYSVIEW_TRACE_H_
#define ESP_SYSVIEW_TRACE_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <stdarg.h>
#include "esp_err.h"
#include "SEGGER_RTT.h" // SEGGER_RTT_ESP_Flush
#include "esp_app_trace_util.h" // ESP_APPTRACE_TMO_INFINITE
/**
* @brief Flushes remaining data in SystemView trace buffer to host.
*
* @param tmo Timeout for operation (in us). Use ESP_APPTRACE_TMO_INFINITE to wait indefinetly.
*
* @return ESP_OK.
*/
static inline esp_err_t esp_sysview_flush(uint32_t tmo)
{
SEGGER_RTT_ESP_Flush(0, tmo);
return ESP_OK;
}
/**
* @brief vprintf-like function to sent log messages to the host.
*
* @param format Address of format string.
* @param args List of arguments.
*
* @return Number of bytes written.
*/
int esp_sysview_vprintf(const char * format, va_list args);
/**
* @brief Starts SystemView heap tracing.
*
* @param tmo Timeout (in us) to wait for the host to be connected. Use -1 to wait forever.
*
* @return ESP_OK on success, ESP_ERR_TIMEOUT if operation has been timed out.
*/
esp_err_t esp_sysview_heap_trace_start(uint32_t tmo);
/**
* @brief Stops SystemView heap tracing.
*
* @return ESP_OK.
*/
esp_err_t esp_sysview_heap_trace_stop(void);
/**
* @brief Sends heap allocation event to the host.
*
* @param addr Address of allocated block.
* @param size Size of allocated block.
* @param callers Pointer to array with callstack addresses.
* Array size must be CONFIG_HEAP_TRACING_STACK_DEPTH.
*/
void esp_sysview_heap_trace_alloc(void *addr, uint32_t size, const void *callers);
/**
* @brief Sends heap de-allocation event to the host.
*
* @param addr Address of de-allocated block.
* @param callers Pointer to array with callstack addresses.
* Array size must be CONFIG_HEAP_TRACING_STACK_DEPTH.
*/
void esp_sysview_heap_trace_free(void *addr, const void *callers);
#ifdef __cplusplus
}
#endif
#endif //ESP_SYSVIEW_TRACE_H_

View File

@@ -1,23 +1,12 @@
[mapping:app_trace]
[mapping]
archive: libapp_trace.a
entries:
app_trace (noflash)
app_trace_util (noflash)
if APPTRACE_MEMBUFS_APPTRACE_PROTO_ENABLE:
app_trace_membufs_proto (noflash)
if APPTRACE_DEST_JTAG = y:
port (noflash)
if APPTRACE_SV_ENABLE = y:
SEGGER_SYSVIEW (noflash)
SEGGER_RTT_esp (noflash)
SEGGER_SYSVIEW_Config_FreeRTOS (noflash)
SEGGER_SYSVIEW_FreeRTOS (noflash)
entries:
* (noflash)
[mapping:app_trace_driver]
[mapping]
archive: libdriver.a
entries:
if APPTRACE_SV_TS_SOURCE_TIMER_00 = y || APPTRACE_SV_TS_SOURCE_TIMER_01 = y
|| APPTRACE_SV_TS_SOURCE_TIMER_10 = y || APPTRACE_SV_TS_SOURCE_TIMER_11 = y:
timer (noflash)
else:
* (default)
: SYSVIEW_TS_SOURCE_TIMER_00 = y || SYSVIEW_TS_SOURCE_TIMER_01 = y
|| SYSVIEW_TS_SOURCE_TIMER_10 = y || SYSVIEW_TS_SOURCE_TIMER_11 = y
timer (noflash)

View File

@@ -1,43 +0,0 @@
// Copyright 2020 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef ESP_APP_TRACE_PORT_H_
#define ESP_APP_TRACE_PORT_H_
#include "esp_app_trace_util.h"
#ifdef __cplusplus
extern "C" {
#endif
/** Apptrace HW interface. */
typedef struct {
esp_err_t (*init)(void *hw_data);
uint8_t *(*get_up_buffer)(void *hw_data, uint32_t, esp_apptrace_tmo_t *);
esp_err_t (*put_up_buffer)(void *hw_data, uint8_t *, esp_apptrace_tmo_t *);
esp_err_t (*flush_up_buffer_nolock)(void *hw_data, uint32_t, esp_apptrace_tmo_t *);
esp_err_t (*flush_up_buffer)(void *hw_data, esp_apptrace_tmo_t *);
void (*down_buffer_config)(void *hw_data, uint8_t *buf, uint32_t size);
uint8_t *(*get_down_buffer)(void *hw_data, uint32_t *, esp_apptrace_tmo_t *);
esp_err_t (*put_down_buffer)(void *hw_data, uint8_t *, esp_apptrace_tmo_t *);
bool (*host_is_connected)(void *hw_data);
} esp_apptrace_hw_t;
esp_apptrace_hw_t *esp_apptrace_jtag_hw_get(void **data);
esp_apptrace_hw_t *esp_apptrace_uart_hw_get(int num, void **data);
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -1,364 +0,0 @@
/*
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "esp_log.h"
#include "esp_app_trace_membufs_proto.h"
#include "esp_app_trace_port.h"
#include "riscv/semihosting.h"
/** RISCV HW transport data */
typedef struct {
uint8_t inited; // initialization state flags for every core
#if CONFIG_APPTRACE_LOCK_ENABLE
esp_apptrace_lock_t lock; // sync lock
#endif
esp_apptrace_membufs_proto_data_t membufs;
} esp_apptrace_riscv_data_t;
/** RISCV memory host iface control block */
typedef struct {
uint32_t ctrl;
// - Guard field. If this register is not zero then CPU is changing this struct and
// this guard field holds address of the instruction which application will execute when CPU finishes with those modifications.
uint32_t stat;
esp_apptrace_mem_block_t * mem_blocks;
} esp_apptrace_riscv_ctrl_block_t;
#define ESP_APPTRACE_RISCV_BLOCK_LEN_MSK 0x7FFFUL
#define ESP_APPTRACE_RISCV_BLOCK_LEN(_l_) ((_l_) & ESP_APPTRACE_RISCV_BLOCK_LEN_MSK)
#define ESP_APPTRACE_RISCV_BLOCK_LEN_GET(_v_) ((_v_) & ESP_APPTRACE_RISCV_BLOCK_LEN_MSK)
#define ESP_APPTRACE_RISCV_BLOCK_ID_MSK 0x7FUL
#define ESP_APPTRACE_RISCV_BLOCK_ID(_id_) (((_id_) & ESP_APPTRACE_RISCV_BLOCK_ID_MSK) << 15)
#define ESP_APPTRACE_RISCV_BLOCK_ID_GET(_v_) (((_v_) >> 15) & ESP_APPTRACE_RISCV_BLOCK_ID_MSK)
#define ESP_APPTRACE_RISCV_HOST_DATA (1 << 22)
#define ESP_APPTRACE_RISCV_HOST_CONNECT (1 << 23)
#define ESP_APPTRACE_RISCV_INITED(_hw_) ((_hw_)->inited & (1 << 0/*cpu_hal_get_core_id()*/))
static esp_err_t esp_apptrace_riscv_init(esp_apptrace_riscv_data_t *hw_data);
static esp_err_t esp_apptrace_riscv_flush(esp_apptrace_riscv_data_t *hw_data, esp_apptrace_tmo_t *tmo);
static esp_err_t esp_apptrace_riscv_flush_nolock(esp_apptrace_riscv_data_t *hw_data, uint32_t min_sz, esp_apptrace_tmo_t *tmo);
static uint8_t *esp_apptrace_riscv_up_buffer_get(esp_apptrace_riscv_data_t *hw_data, uint32_t size, esp_apptrace_tmo_t *tmo);
static esp_err_t esp_apptrace_riscv_up_buffer_put(esp_apptrace_riscv_data_t *hw_data, uint8_t *ptr, esp_apptrace_tmo_t *tmo);
static void esp_apptrace_riscv_down_buffer_config(esp_apptrace_riscv_data_t *hw_data, uint8_t *buf, uint32_t size);
static uint8_t *esp_apptrace_riscv_down_buffer_get(esp_apptrace_riscv_data_t *hw_data, uint32_t *size, esp_apptrace_tmo_t *tmo);
static esp_err_t esp_apptrace_riscv_down_buffer_put(esp_apptrace_riscv_data_t *hw_data, uint8_t *ptr, esp_apptrace_tmo_t *tmo);
static bool esp_apptrace_riscv_host_is_connected(esp_apptrace_riscv_data_t *hw_data);
static esp_err_t esp_apptrace_riscv_buffer_swap_start(uint32_t curr_block_id);
static esp_err_t esp_apptrace_riscv_buffer_swap(uint32_t new_block_id);
static esp_err_t esp_apptrace_riscv_buffer_swap_end(uint32_t new_block_id, uint32_t prev_block_len);
static bool esp_apptrace_riscv_host_data_pending(void);
const static char *TAG = "esp_apptrace";
static esp_apptrace_riscv_ctrl_block_t s_tracing_ctrl[portNUM_PROCESSORS];
esp_apptrace_hw_t *esp_apptrace_uart_hw_get(int num, void **data)
{
return NULL;
}
esp_apptrace_hw_t *esp_apptrace_jtag_hw_get(void **data)
{
#if CONFIG_APPTRACE_DEST_JTAG
static esp_apptrace_membufs_proto_hw_t s_trace_proto_hw = {
.swap_start = esp_apptrace_riscv_buffer_swap_start,
.swap = esp_apptrace_riscv_buffer_swap,
.swap_end = esp_apptrace_riscv_buffer_swap_end,
.host_data_pending = esp_apptrace_riscv_host_data_pending,
};
static esp_apptrace_riscv_data_t s_trace_hw_data = {
.membufs = {
.hw = &s_trace_proto_hw,
},
};
static esp_apptrace_hw_t s_trace_hw = {
.init = (esp_err_t (*)(void *))esp_apptrace_riscv_init,
.get_up_buffer = (uint8_t *(*)(void *, uint32_t, esp_apptrace_tmo_t *))esp_apptrace_riscv_up_buffer_get,
.put_up_buffer = (esp_err_t (*)(void *, uint8_t *, esp_apptrace_tmo_t *))esp_apptrace_riscv_up_buffer_put,
.flush_up_buffer_nolock = (esp_err_t (*)(void *, uint32_t, esp_apptrace_tmo_t *))esp_apptrace_riscv_flush_nolock,
.flush_up_buffer = (esp_err_t (*)(void *, esp_apptrace_tmo_t *))esp_apptrace_riscv_flush,
.down_buffer_config = (void (*)(void *, uint8_t *, uint32_t ))esp_apptrace_riscv_down_buffer_config,
.get_down_buffer = (uint8_t *(*)(void *, uint32_t *, esp_apptrace_tmo_t *))esp_apptrace_riscv_down_buffer_get,
.put_down_buffer = (esp_err_t (*)(void *, uint8_t *, esp_apptrace_tmo_t *))esp_apptrace_riscv_down_buffer_put,
.host_is_connected = (bool (*)(void *))esp_apptrace_riscv_host_is_connected,
};
*data = &s_trace_hw_data;
return &s_trace_hw;
#else
return NULL;
#endif
}
/* Advertises apptrace control block address to host.
This function can be overriden with custom implementation,
e.g. OpenOCD flasher stub use own implementation of it. */
__attribute__((weak)) int esp_apptrace_advertise_ctrl_block(void *ctrl_block_addr)
{
if (!esp_cpu_in_ocd_debug_mode()) {
return 0;
}
return (int) semihosting_call_noerrno(ESP_SEMIHOSTING_SYS_APPTRACE_INIT, (long*)ctrl_block_addr);
}
/* Returns up buffers config.
This function can be overriden with custom implementation,
e.g. OpenOCD flasher stub use own implementation of it. */
__attribute__((weak)) void esp_apptrace_get_up_buffers(esp_apptrace_mem_block_t mem_blocks_cfg[2])
{
static uint8_t s_mem_blocks[2][CONFIG_APPTRACE_BUF_SIZE];
mem_blocks_cfg[0].start = s_mem_blocks[0];
mem_blocks_cfg[0].sz = CONFIG_APPTRACE_BUF_SIZE;
mem_blocks_cfg[1].start = s_mem_blocks[1];
mem_blocks_cfg[1].sz = CONFIG_APPTRACE_BUF_SIZE;
}
static esp_err_t esp_apptrace_riscv_lock(esp_apptrace_riscv_data_t *hw_data, esp_apptrace_tmo_t *tmo)
{
#if CONFIG_APPTRACE_LOCK_ENABLE
esp_err_t ret = esp_apptrace_lock_take(&hw_data->lock, tmo);
if (ret != ESP_OK) {
return ESP_FAIL;
}
#endif
return ESP_OK;
}
static esp_err_t esp_apptrace_riscv_unlock(esp_apptrace_riscv_data_t *hw_data)
{
esp_err_t ret = ESP_OK;
#if CONFIG_APPTRACE_LOCK_ENABLE
ret = esp_apptrace_lock_give(&hw_data->lock);
#endif
return ret;
}
/*****************************************************************************************/
/***************************** Apptrace HW iface *****************************************/
/*****************************************************************************************/
static esp_err_t esp_apptrace_riscv_init(esp_apptrace_riscv_data_t *hw_data)
{
int core_id = cpu_hal_get_core_id();
if (hw_data->inited == 0) {
esp_apptrace_mem_block_t mem_blocks_cfg[2];
esp_apptrace_get_up_buffers(mem_blocks_cfg);
esp_err_t res = esp_apptrace_membufs_init(&hw_data->membufs, mem_blocks_cfg);
if (res != ESP_OK) {
ESP_APPTRACE_LOGE("Failed to init membufs proto (%d)!", res);
return res;
}
#if CONFIG_APPTRACE_LOCK_ENABLE
esp_apptrace_lock_init(&hw_data->lock);
#endif
}
hw_data->inited |= 1 << core_id;
ESP_APPTRACE_LOGI("Apptrace initialized on CPU%d. Tracing control block @ %p.", core_id, &s_tracing_ctrl[core_id]);
s_tracing_ctrl[core_id].mem_blocks = hw_data->membufs.blocks;
for (int i = 0; i < 2; i++) {
ESP_APPTRACE_LOGD("Mem buf[%d] %d bytes @ %p (%p/%p)", i,
s_tracing_ctrl[core_id].mem_blocks[i].sz, s_tracing_ctrl[core_id].mem_blocks[i].start,
&(s_tracing_ctrl[core_id].mem_blocks[i].start), &(s_tracing_ctrl[core_id].mem_blocks[i].sz));
}
// notify host about control block address
int res = esp_apptrace_advertise_ctrl_block(&s_tracing_ctrl[core_id]);
assert(res == 0 && "Falied to send config to host!");
return ESP_OK;
}
static uint8_t *esp_apptrace_riscv_up_buffer_get(esp_apptrace_riscv_data_t *hw_data, uint32_t size, esp_apptrace_tmo_t *tmo)
{
uint8_t *ptr;
if (!ESP_APPTRACE_RISCV_INITED(hw_data)) {
return NULL;
}
esp_err_t res = esp_apptrace_riscv_lock(hw_data, tmo);
if (res != ESP_OK) {
return NULL;
}
ptr = esp_apptrace_membufs_up_buffer_get(&hw_data->membufs, size, tmo);
// now we can safely unlock apptrace to allow other tasks/ISRs to get other buffers and write their data
if (esp_apptrace_riscv_unlock(hw_data) != ESP_OK) {
assert(false && "Failed to unlock apptrace data!");
}
return ptr;
}
static esp_err_t esp_apptrace_riscv_up_buffer_put(esp_apptrace_riscv_data_t *hw_data, uint8_t *ptr, esp_apptrace_tmo_t *tmo)
{
if (!ESP_APPTRACE_RISCV_INITED(hw_data)) {
return ESP_ERR_INVALID_STATE;
}
// Can avoid locking because esp_apptrace_membufs_up_buffer_put() just modifies buffer's header
esp_err_t res = esp_apptrace_membufs_up_buffer_put(&hw_data->membufs, ptr, tmo);
return res;
}
static void esp_apptrace_riscv_down_buffer_config(esp_apptrace_riscv_data_t *hw_data, uint8_t *buf, uint32_t size)
{
if (!ESP_APPTRACE_RISCV_INITED(hw_data)) {
return;
}
esp_apptrace_membufs_down_buffer_config(&hw_data->membufs, buf, size);
}
static uint8_t *esp_apptrace_riscv_down_buffer_get(esp_apptrace_riscv_data_t *hw_data, uint32_t *size, esp_apptrace_tmo_t *tmo)
{
uint8_t *ptr;
if (!ESP_APPTRACE_RISCV_INITED(hw_data)) {
return NULL;
}
esp_err_t res = esp_apptrace_riscv_lock(hw_data, tmo);
if (res != ESP_OK) {
return NULL;
}
ptr = esp_apptrace_membufs_down_buffer_get(&hw_data->membufs, size, tmo);
// now we can safely unlock apptrace to allow other tasks/ISRs to get other buffers and write their data
if (esp_apptrace_riscv_unlock(hw_data) != ESP_OK) {
assert(false && "Failed to unlock apptrace data!");
}
return ptr;
}
static esp_err_t esp_apptrace_riscv_down_buffer_put(esp_apptrace_riscv_data_t *hw_data, uint8_t *ptr, esp_apptrace_tmo_t *tmo)
{
if (!ESP_APPTRACE_RISCV_INITED(hw_data)) {
return ESP_ERR_INVALID_STATE;
}
// Can avoid locking because esp_apptrace_membufs_down_buffer_put() does nothing
/*esp_err_t res = esp_apptrace_riscv_lock(hw_data, tmo);
if (res != ESP_OK) {
return res;
}*/
esp_err_t res = esp_apptrace_membufs_down_buffer_put(&hw_data->membufs, ptr, tmo);
// now we can safely unlock apptrace to allow other tasks/ISRs to get other buffers and write their data
/*if (esp_apptrace_riscv_unlock(hw_data) != ESP_OK) {
assert(false && "Failed to unlock apptrace data!");
}*/
return res;
}
static bool esp_apptrace_riscv_host_is_connected(esp_apptrace_riscv_data_t *hw_data)
{
if (!ESP_APPTRACE_RISCV_INITED(hw_data)) {
return false;
}
return s_tracing_ctrl[cpu_hal_get_core_id()].ctrl & ESP_APPTRACE_RISCV_HOST_CONNECT ? true : false;
}
static esp_err_t esp_apptrace_riscv_flush_nolock(esp_apptrace_riscv_data_t *hw_data, uint32_t min_sz, esp_apptrace_tmo_t *tmo)
{
if (!ESP_APPTRACE_RISCV_INITED(hw_data)) {
return ESP_ERR_INVALID_STATE;
}
return esp_apptrace_membufs_flush_nolock(&hw_data->membufs, min_sz, tmo);
}
static esp_err_t esp_apptrace_riscv_flush(esp_apptrace_riscv_data_t *hw_data, esp_apptrace_tmo_t *tmo)
{
if (!ESP_APPTRACE_RISCV_INITED(hw_data)) {
return ESP_ERR_INVALID_STATE;
}
esp_err_t res = esp_apptrace_riscv_lock(hw_data, tmo);
if (res != ESP_OK) {
return res;
}
res = esp_apptrace_membufs_flush_nolock(&hw_data->membufs, 0, tmo);
// now we can safely unlock apptrace to allow other tasks/ISRs to get other buffers and write their data
if (esp_apptrace_riscv_unlock(hw_data) != ESP_OK) {
assert(false && "Failed to unlock apptrace data!");
}
return res;
}
/*****************************************************************************************/
/************************** Membufs proto HW iface ***************************************/
/*****************************************************************************************/
static inline void esp_apptrace_riscv_buffer_swap_lock(void)
{
extern uint32_t __esp_apptrace_riscv_updated;
// indicate to host that we are about to update.
// this is used only to place CPU into streaming mode at tracing startup
// before starting streaming host can halt us after we read ESP_APPTRACE_RISCV_CTRL_REG and before we updated it
// HACK: in this case host will set breakpoint just after ESP_APPTRACE_RISCV_CTRL_REG update,
// here we set address to set bp at
// enter ERI update critical section
s_tracing_ctrl[cpu_hal_get_core_id()].stat = (uint32_t)&__esp_apptrace_riscv_updated;
}
static __attribute__((noinline)) void esp_apptrace_riscv_buffer_swap_unlock(void)
{
// exit ERI update critical section
s_tracing_ctrl[cpu_hal_get_core_id()].stat = 0;
// TODO: currently host sets breakpoint, use break instruction to stop;
// it will allow to use ESP_APPTRACE_RISCV_STAT_REG for other purposes
asm volatile (
" .global __esp_apptrace_riscv_updated\n"
"__esp_apptrace_riscv_updated:\n"); // host will set bp here to resolve collision at streaming start
}
static esp_err_t esp_apptrace_riscv_buffer_swap_start(uint32_t curr_block_id)
{
esp_err_t res = ESP_OK;
esp_apptrace_riscv_buffer_swap_lock();
uint32_t ctrl_reg = s_tracing_ctrl[cpu_hal_get_core_id()].ctrl;
uint32_t host_connected = ESP_APPTRACE_RISCV_HOST_CONNECT & ctrl_reg;
if (host_connected) {
uint32_t acked_block = ESP_APPTRACE_RISCV_BLOCK_ID_GET(ctrl_reg);
uint32_t host_to_read = ESP_APPTRACE_RISCV_BLOCK_LEN_GET(ctrl_reg);
if (host_to_read != 0 || acked_block != (curr_block_id & ESP_APPTRACE_RISCV_BLOCK_ID_MSK)) {
ESP_APPTRACE_LOGD("[%d]: Can not switch %x %d %x %x/%lx", cpu_hal_get_core_id(), ctrl_reg, host_to_read, acked_block,
curr_block_id & ESP_APPTRACE_RISCV_BLOCK_ID_MSK, curr_block_id);
res = ESP_ERR_NO_MEM;
goto _on_err;
}
}
return ESP_OK;
_on_err:
esp_apptrace_riscv_buffer_swap_unlock();
return res;
}
static esp_err_t esp_apptrace_riscv_buffer_swap_end(uint32_t new_block_id, uint32_t prev_block_len)
{
uint32_t ctrl_reg = s_tracing_ctrl[cpu_hal_get_core_id()].ctrl;
uint32_t host_connected = ESP_APPTRACE_RISCV_HOST_CONNECT & ctrl_reg;
s_tracing_ctrl[cpu_hal_get_core_id()].ctrl = ESP_APPTRACE_RISCV_BLOCK_ID(new_block_id) |
host_connected | ESP_APPTRACE_RISCV_BLOCK_LEN(prev_block_len);
esp_apptrace_riscv_buffer_swap_unlock();
return ESP_OK;
}
static esp_err_t esp_apptrace_riscv_buffer_swap(uint32_t new_block_id)
{
/* do nothing */
return ESP_OK;
}
static bool esp_apptrace_riscv_host_data_pending(void)
{
uint32_t ctrl_reg = s_tracing_ctrl[cpu_hal_get_core_id()].ctrl;
// ESP_APPTRACE_LOGV("%s() 0x%x", __func__, ctrl_reg);
return (ctrl_reg & ESP_APPTRACE_RISCV_HOST_DATA) ? true : false;
}

View File

@@ -1,539 +0,0 @@
/*
* SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
//
// How It Works
// ************
// 1. Components Overview
// ======================
// Xtensa has useful feature: TRAX debug module. It allows recording program execution flow at run-time without disturbing CPU.
// Exectution flow data are written to configurable Trace RAM block. Besides accessing Trace RAM itself TRAX module also allows to read/write
// trace memory via its registers by means of JTAG, APB or ERI transactions.
// ESP32 has two Xtensa cores with separate TRAX modules on them and provides two special memory regions to be used as trace memory.
// Chip allows muxing access to those trace memory blocks in such a way that while one block is accessed by CPUs another one can be accessed by host
// by means of reading/writing TRAX registers via JTAG. Blocks muxing is configurable at run-time and allows switching trace memory blocks between
// accessors in round-robin fashion so they can read/write separate memory blocks without disturbing each other.
// This module implements application tracing feature based on above mechanisms. It allows to transfer arbitrary user data to/from
// host via JTAG with minimal impact on system performance. This module is implied to be used in the following tracing scheme.
// ------>------ ----- (host components) -----
// | | | |
// ------------------- ----------------------- ----------------------- ---------------- ------ --------- -----------------
// |trace data source|-->|target tracing module|<--->|TRAX_MEM0 | TRAX_MEM1|---->|TRAX_DATA_REGS|<-->|JTAG|<--->|OpenOCD|-->|trace data sink|
// ------------------- ----------------------- ----------------------- ---------------- ------ --------- -----------------
// | | | |
// | ------<------ ---------------- |
// |<------------------------------------------->|TRAX_CTRL_REGS|<---->|
// ----------------
// In general tracing goes in the following way. User application requests tracing module to send some data by calling esp_apptrace_buffer_get(),
// module allocates necessary buffer in current input trace block. Then user fills received buffer with data and calls esp_apptrace_buffer_put().
// When current input trace block is filled with app data it is exposed to host and the second block becomes input one and buffer filling restarts.
// While target application fills one TRAX block host reads another one via JTAG.
// This module also allows communication in the opposite direction: from host to target. As it was said ESP32 and host can access different TRAX blocks
// simultaneously, so while target writes trace data to one block host can write its own data (e.g. tracing commands) to another one then when
// blocks are switched host receives trace data and target receives data written by host application. Target user application can read host data
// by calling esp_apptrace_read() API.
// To control buffer switching and for other communication purposes this implementation uses some TRAX registers. It is safe since HW TRAX tracing
// can not be used along with application tracing feature so these registers are freely readable/writeable via JTAG from host and via ERI from ESP32 cores.
// Overhead of this implementation on target CPU is produced only by allocating/managing buffers and copying of data.
// On the host side special OpenOCD command must be used to read trace data.
// 2. TRAX Registers layout
// ========================
// This module uses two TRAX HW registers to communicate with host SW (OpenOCD).
// - Control register uses TRAX_DELAYCNT as storage. Only lower 24 bits of TRAX_DELAYCNT are writable. Control register has the following bitfields:
// | 31..XXXXXX..24 | 23 .(host_connect). 23| 22..(block_id)..15 | 14..(block_len)..0 |
// 14..0 bits - actual length of user data in trace memory block. Target updates it every time it fills memory block and exposes it to host.
// Host writes zero to this field when it finishes reading exposed block;
// 21..15 bits - trace memory block transfer ID. Block counter. It can overflow. Updated by target, host should not modify it. Actually can be 2 bits;
// 22 bit - 'host data present' flag. If set to one there is data from host, otherwise - no host data;
// 23 bit - 'host connected' flag. If zero then host is not connected and tracing module works in post-mortem mode, otherwise in streaming mode;
// - Status register uses TRAX_TRIGGERPC as storage. If this register is not zero then current CPU is changing TRAX registers and
// this register holds address of the instruction which application will execute when it finishes with those registers modifications.
// See 'Targets Connection' setion for details.
// 3. Modes of operation
// =====================
// This module supports two modes of operation:
// - Post-mortem mode. This is the default mode. In this mode application tracing module does not check whether host has read all the data from block
// exposed to it and switches block in any case. The mode does not need host interaction for operation and so can be useful when only the latest
// trace data are necessary, e.g. for analyzing crashes. On panic the latest data from current input block are exposed to host and host can read them.
// It can happen that system panic occurs when there are very small amount of data which are not exposed to host yet (e.g. crash just after the
// TRAX block switch). In this case the previous 16KB of collected data will be dropped and host will see the latest, but very small piece of trace.
// It can be insufficient to diagnose the problem. To avoid such situations there is menuconfig option
// CONFIG_APPTRACE_POSTMORTEM_FLUSH_THRESH
// which controls the threshold for flushing data in case of panic.
// - Streaming mode. Tracing module enters this mode when host connects to target and sets respective bits in control registers (per core).
// In this mode before switching the block tracing module waits for the host to read all the data from the previously exposed block.
// On panic tracing module also waits (timeout is configured via menuconfig via CONFIG_APPTRACE_ONPANIC_HOST_FLUSH_TMO) for the host to read all data.
// 4. Communication Protocol
// =========================
// 4.1 Trace Memory Blocks
// -----------------------
// Communication is controlled via special register. Host periodically polls control register on each core to find out if there are any data available.
// When current input memory block is filled it is exposed to host and 'block_len' and 'block_id' fields are updated in the control register.
// Host reads new register value and according to it's value starts reading data from exposed block. Meanwhile target starts filling another trace block.
// When host finishes reading the block it clears 'block_len' field in control register indicating to the target that it is ready to accept the next one.
// If the host has some data to transfer to the target it writes them to trace memory block before clearing 'block_len' field. Then it sets
// 'host_data_present' bit and clears 'block_len' field in control register. Upon every block switch target checks 'host_data_present' bit and if it is set
// reads them to down buffer before writing any trace data to switched TRAX block.
// 4.2 User Data Chunks Level
// --------------------------
// Since trace memory block is shared between user data chunks and data copying is performed on behalf of the API user (in its normal context) in
// multithreading environment it can happen that task/ISR which copies data is preempted by another high prio task/ISR. So it is possible situation
// that task/ISR will fail to complete filling its data chunk before the whole trace block is exposed to the host. To handle such conditions tracing
// module prepends all user data chunks with header which contains allocated buffer size and actual data length within it. OpenOCD command
// which reads application traces reports error when it reads incomplete user data block.
// Data which are transffered from host to target are also prepended with a header. Down channel data header is simple and consists of one two bytes field
// containing length of host data following the header.
// 4.3 Data Buffering
// ------------------
// It takes some time for the host to read TRAX memory block via JTAG. In streaming mode it can happen that target has filled its TRAX block, but host
// has not completed reading of the previous one yet. So in this case time critical tracing calls (which can not be delayed for too long time due to
// the lack of free memory in TRAX block) can be dropped. To avoid such scenarios tracing module implements data buffering. Buffered data will be sent
// to the host later when TRAX block switch occurs. The maximum size of the buffered data is controlled by menuconfig option
// CONFIG_APPTRACE_PENDING_DATA_SIZE_MAX.
// 4.4 Target Connection/Disconnection
// -----------------------------------
// When host is going to start tracing in streaming mode it needs to put both ESP32 cores into initial state when 'host connected' bit is set
// on both cores. To accomplish this host halts both cores and sets this bit in TRAX registers. But target code can be halted in state when it has read control
// register but has not updated its value. To handle such situations target code indicates to the host that it is updating control register by writing
// non-zero value to status register. Actually it writes address of the instruction which it will execute when it finishes with
// the registers update. When target is halted during control register update host sets breakpoint at the address from status register and resumes CPU.
// After target code finishes with register update it is halted on breakpoint, host detects it and safely sets 'host connected' bit. When both cores
// are set up they are resumed. Tracing starts without further intrusion into CPUs work.
// When host is going to stop tracing in streaming mode it needs to disconnect targets. Disconnection process is done using the same algorithm
// as for connecting, but 'host connected' bits are cleared on ESP32 cores.
// 5. Module Access Synchronization
// ================================
// Access to internal module's data is synchronized with custom mutex. Mutex is a wrapper for portMUX_TYPE and uses almost the same sync mechanism as in
// vPortCPUAcquireMutex/vPortCPUReleaseMutex. The mechanism uses S32C1I Xtensa instruction to implement exclusive access to module's data from tasks and
// ISRs running on both cores. Also custom mutex allows specifying timeout for locking operation. Locking routine checks underlaying mutex in cycle until
// it gets its ownership or timeout expires. The differences of application tracing module's mutex implementation from vPortCPUAcquireMutex/vPortCPUReleaseMutex are:
// - Support for timeouts.
// - Local IRQs for CPU which owns the mutex are disabled till the call to unlocking routine. This is made to avoid possible task's prio inversion.
// When low prio task takes mutex and enables local IRQs gets preempted by high prio task which in its turn can try to acquire mutex using infinite timeout.
// So no local task switch occurs when mutex is locked. But this does not apply to tasks on another CPU.
// WARNING: Priority inversion can happen when low prio task works on one CPU and medium and high prio tasks work on another.
// WARNING: Care must be taken when selecting timeout values for trace calls from ISRs. Tracing module does not care about watchdogs when waiting
// on internal locks and for host to complete previous block reading, so if timeout value exceeds watchdog's one it can lead to the system reboot.
// 6. Timeouts
// ===========
// Timeout mechanism is based on xthal_get_ccount() routine and supports timeout values in microseconds.
// There are two situations when task/ISR can be delayed by tracing API call. Timeout mechanism takes into account both conditions:
// - Trace data are locked by another task/ISR. When wating on trace data lock.
// - Current TRAX memory input block is full when working in streaming mode (host is connected). When waiting for host to complete previous block reading.
// When wating for any of above conditions xthal_get_ccount() is called periodically to calculate time elapsed from trace API routine entry. When elapsed
// time exceeds specified timeout value operation is canceled and ESP_ERR_TIMEOUT code is returned.
#include "sdkconfig.h"
#include "soc/soc.h"
#include "soc/dport_access.h"
#include "soc/dport_reg.h"
#include "soc/tracemem_config.h"
#if CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
#include "soc/sensitive_reg.h"
#endif
#include "eri.h"
#include "trax.h"
#include "esp_log.h"
#include "esp_app_trace_membufs_proto.h"
#include "esp_app_trace_port.h"
// TRAX is disabled, so we use its registers for our own purposes
// | 31..XXXXXX..24 | 23 .(host_connect). 23 | 22 .(host_data). 22| 21..(block_id)..15 | 14..(block_len)..0 |
#define ESP_APPTRACE_TRAX_CTRL_REG ERI_TRAX_DELAYCNT
#define ESP_APPTRACE_TRAX_STAT_REG ERI_TRAX_TRIGGERPC
#define ESP_APPTRACE_TRAX_BLOCK_LEN_MSK 0x7FFFUL
#define ESP_APPTRACE_TRAX_BLOCK_LEN(_l_) ((_l_) & ESP_APPTRACE_TRAX_BLOCK_LEN_MSK)
#define ESP_APPTRACE_TRAX_BLOCK_LEN_GET(_v_) ((_v_) & ESP_APPTRACE_TRAX_BLOCK_LEN_MSK)
#define ESP_APPTRACE_TRAX_BLOCK_ID_MSK 0x7FUL
#define ESP_APPTRACE_TRAX_BLOCK_ID(_id_) (((_id_) & ESP_APPTRACE_TRAX_BLOCK_ID_MSK) << 15)
#define ESP_APPTRACE_TRAX_BLOCK_ID_GET(_v_) (((_v_) >> 15) & ESP_APPTRACE_TRAX_BLOCK_ID_MSK)
#define ESP_APPTRACE_TRAX_HOST_DATA (1 << 22)
#define ESP_APPTRACE_TRAX_HOST_CONNECT (1 << 23)
#define ESP_APPTRACE_TRAX_INITED(_hw_) ((_hw_)->inited & (1 << cpu_hal_get_core_id()))
#define ESP_APPTRACE_TRAX_BLOCK_SIZE (0x4000UL)
/** TRAX HW transport data */
typedef struct {
uint8_t inited;
#if CONFIG_APPTRACE_LOCK_ENABLE
esp_apptrace_lock_t lock; // sync lock
#endif
esp_apptrace_membufs_proto_data_t membufs;
} esp_apptrace_trax_data_t;
static esp_err_t esp_apptrace_trax_init(esp_apptrace_trax_data_t *hw_data);
static esp_err_t esp_apptrace_trax_flush(esp_apptrace_trax_data_t *hw_data, esp_apptrace_tmo_t *tmo);
static esp_err_t esp_apptrace_trax_flush_nolock(esp_apptrace_trax_data_t *hw_data, uint32_t min_sz, esp_apptrace_tmo_t *tmo);
static uint8_t *esp_apptrace_trax_up_buffer_get(esp_apptrace_trax_data_t *hw_data, uint32_t size, esp_apptrace_tmo_t *tmo);
static esp_err_t esp_apptrace_trax_up_buffer_put(esp_apptrace_trax_data_t *hw_data, uint8_t *ptr, esp_apptrace_tmo_t *tmo);
static void esp_apptrace_trax_down_buffer_config(esp_apptrace_trax_data_t *hw_data, uint8_t *buf, uint32_t size);
static uint8_t *esp_apptrace_trax_down_buffer_get(esp_apptrace_trax_data_t *hw_data, uint32_t *size, esp_apptrace_tmo_t *tmo);
static esp_err_t esp_apptrace_trax_down_buffer_put(esp_apptrace_trax_data_t *hw_data, uint8_t *ptr, esp_apptrace_tmo_t *tmo);
static bool esp_apptrace_trax_host_is_connected(esp_apptrace_trax_data_t *hw_data);
static esp_err_t esp_apptrace_trax_buffer_swap_start(uint32_t curr_block_id);
static esp_err_t esp_apptrace_trax_buffer_swap(uint32_t new_block_id);
static esp_err_t esp_apptrace_trax_buffer_swap_end(uint32_t new_block_id, uint32_t prev_block_len);
static bool esp_apptrace_trax_host_data_pending(void);
const static char *TAG = "esp_apptrace";
static uint8_t * const s_trax_blocks[] = {
(uint8_t *)TRACEMEM_BLK0_ADDR,
(uint8_t *)TRACEMEM_BLK1_ADDR
};
esp_apptrace_hw_t *esp_apptrace_uart_hw_get(int num, void **data)
{
return NULL;
}
esp_apptrace_hw_t *esp_apptrace_jtag_hw_get(void **data)
{
#if CONFIG_APPTRACE_DEST_JTAG
static esp_apptrace_membufs_proto_hw_t s_trax_proto_hw = {
.swap_start = esp_apptrace_trax_buffer_swap_start,
.swap = esp_apptrace_trax_buffer_swap,
.swap_end = esp_apptrace_trax_buffer_swap_end,
.host_data_pending = esp_apptrace_trax_host_data_pending,
};
static esp_apptrace_trax_data_t s_trax_hw_data = {
.membufs = {
.hw = &s_trax_proto_hw,
},
};
static esp_apptrace_hw_t s_trax_hw = {
.init = (esp_err_t (*)(void *))esp_apptrace_trax_init,
.get_up_buffer = (uint8_t *(*)(void *, uint32_t, esp_apptrace_tmo_t *))esp_apptrace_trax_up_buffer_get,
.put_up_buffer = (esp_err_t (*)(void *, uint8_t *, esp_apptrace_tmo_t *))esp_apptrace_trax_up_buffer_put,
.flush_up_buffer_nolock = (esp_err_t (*)(void *, uint32_t, esp_apptrace_tmo_t *))esp_apptrace_trax_flush_nolock,
.flush_up_buffer = (esp_err_t (*)(void *, esp_apptrace_tmo_t *))esp_apptrace_trax_flush,
.down_buffer_config = (void (*)(void *, uint8_t *, uint32_t ))esp_apptrace_trax_down_buffer_config,
.get_down_buffer = (uint8_t *(*)(void *, uint32_t *, esp_apptrace_tmo_t *))esp_apptrace_trax_down_buffer_get,
.put_down_buffer = (esp_err_t (*)(void *, uint8_t *, esp_apptrace_tmo_t *))esp_apptrace_trax_down_buffer_put,
.host_is_connected = (bool (*)(void *))esp_apptrace_trax_host_is_connected,
};
*data = &s_trax_hw_data;
return &s_trax_hw;
#else
return NULL;
#endif
}
static esp_err_t esp_apptrace_trax_lock(esp_apptrace_trax_data_t *hw_data, esp_apptrace_tmo_t *tmo)
{
#if CONFIG_APPTRACE_LOCK_ENABLE
esp_err_t ret = esp_apptrace_lock_take(&hw_data->lock, tmo);
if (ret != ESP_OK) {
return ESP_FAIL;
}
#endif
return ESP_OK;
}
static esp_err_t esp_apptrace_trax_unlock(esp_apptrace_trax_data_t *hw_data)
{
esp_err_t ret = ESP_OK;
#if CONFIG_APPTRACE_LOCK_ENABLE
ret = esp_apptrace_lock_give(&hw_data->lock);
#endif
return ret;
}
static inline void esp_apptrace_trax_hw_init(void)
{
// Stop trace, if any (on the current CPU)
eri_write(ERI_TRAX_TRAXCTRL, TRAXCTRL_TRSTP);
eri_write(ERI_TRAX_TRAXCTRL, TRAXCTRL_TMEN);
eri_write(ESP_APPTRACE_TRAX_CTRL_REG, ESP_APPTRACE_TRAX_BLOCK_ID(0));
// this is for OpenOCD to let him know where stub entries vector is resided
// must be read by host before any transfer using TRAX
eri_write(ESP_APPTRACE_TRAX_STAT_REG, 0);
ESP_APPTRACE_LOGI("Initialized TRAX on CPU%d", cpu_hal_get_core_id());
}
static inline void esp_apptrace_trax_select_memory_block(int block_num)
{
// select memory block to be exposed to the TRAX module (accessed by host)
#if CONFIG_IDF_TARGET_ESP32
DPORT_WRITE_PERI_REG(DPORT_TRACEMEM_MUX_MODE_REG, block_num ? TRACEMEM_MUX_BLK0_ONLY : TRACEMEM_MUX_BLK1_ONLY);
#elif CONFIG_IDF_TARGET_ESP32S2
WRITE_PERI_REG(DPORT_PMS_OCCUPY_3_REG, block_num ? BIT(TRACEMEM_MUX_BLK0_NUM-4) : BIT(TRACEMEM_MUX_BLK1_NUM-4));
#elif CONFIG_IDF_TARGET_ESP32S3
// select memory block to be exposed to the TRAX module (accessed by host)
uint32_t block_bits = block_num ? TRACEMEM_CORE0_MUX_BLK_BITS(TRACEMEM_MUX_BLK0_NUM)
: TRACEMEM_CORE0_MUX_BLK_BITS(TRACEMEM_MUX_BLK1_NUM);
block_bits |= block_num ? TRACEMEM_CORE1_MUX_BLK_BITS(TRACEMEM_MUX_BLK0_NUM)
: TRACEMEM_CORE1_MUX_BLK_BITS(TRACEMEM_MUX_BLK1_NUM);
ESP_EARLY_LOGV(TAG, "Select block %d @ %p (bits 0x%x)", block_num, s_trax_blocks[block_num], block_bits);
DPORT_WRITE_PERI_REG(SENSITIVE_INTERNAL_SRAM_USAGE_2_REG, block_bits);
#endif
}
static inline void esp_apptrace_trax_memory_enable(void)
{
#if CONFIG_IDF_TARGET_ESP32
/* Enable trace memory on PRO CPU */
DPORT_WRITE_PERI_REG(DPORT_PRO_TRACEMEM_ENA_REG, DPORT_PRO_TRACEMEM_ENA_M);
#if CONFIG_FREERTOS_UNICORE == 0
/* Enable trace memory on APP CPU */
DPORT_WRITE_PERI_REG(DPORT_APP_TRACEMEM_ENA_REG, DPORT_APP_TRACEMEM_ENA_M);
#endif
#endif
}
/*****************************************************************************************/
/***************************** Apptrace HW iface *****************************************/
/*****************************************************************************************/
static esp_err_t esp_apptrace_trax_init(esp_apptrace_trax_data_t *hw_data)
{
int core_id = cpu_hal_get_core_id();
// 'esp_apptrace_trax_init()' is called on every core, so ensure to do main initialization only once
if (core_id == 0) {
esp_apptrace_mem_block_t mem_blocks_cfg[2] = {
{
.start = s_trax_blocks[0],
.sz = ESP_APPTRACE_TRAX_BLOCK_SIZE
},
{
.start = s_trax_blocks[1],
.sz = ESP_APPTRACE_TRAX_BLOCK_SIZE
},
};
esp_err_t res = esp_apptrace_membufs_init(&hw_data->membufs, mem_blocks_cfg);
if (res != ESP_OK) {
ESP_APPTRACE_LOGE("Failed to init membufs proto (%d)!", res);
return res;
}
#if CONFIG_APPTRACE_LOCK_ENABLE
esp_apptrace_lock_init(&hw_data->lock);
#endif
esp_apptrace_trax_memory_enable();
esp_apptrace_trax_select_memory_block(0);
}
// init TRAX on this CPU
esp_apptrace_trax_hw_init();
hw_data->inited |= 1 << core_id;
return ESP_OK;
}
static uint8_t *esp_apptrace_trax_up_buffer_get(esp_apptrace_trax_data_t *hw_data, uint32_t size, esp_apptrace_tmo_t *tmo)
{
uint8_t *ptr;
if (!ESP_APPTRACE_TRAX_INITED(hw_data)) {
return NULL;
}
esp_err_t res = esp_apptrace_trax_lock(hw_data, tmo);
if (res != ESP_OK) {
return NULL;
}
ptr = esp_apptrace_membufs_up_buffer_get(&hw_data->membufs, size, tmo);
// now we can safely unlock apptrace to allow other tasks/ISRs to get other buffers and write their data
if (esp_apptrace_trax_unlock(hw_data) != ESP_OK) {
assert(false && "Failed to unlock apptrace data!");
}
return ptr;
}
static esp_err_t esp_apptrace_trax_up_buffer_put(esp_apptrace_trax_data_t *hw_data, uint8_t *ptr, esp_apptrace_tmo_t *tmo)
{
if (!ESP_APPTRACE_TRAX_INITED(hw_data)) {
return ESP_ERR_INVALID_STATE;
}
// Can avoid locking because esp_apptrace_membufs_up_buffer_put() just modifies buffer's header
esp_err_t res = esp_apptrace_membufs_up_buffer_put(&hw_data->membufs, ptr, tmo);
return res;
}
static void esp_apptrace_trax_down_buffer_config(esp_apptrace_trax_data_t *hw_data, uint8_t *buf, uint32_t size)
{
if (!ESP_APPTRACE_TRAX_INITED(hw_data)) {
return;
}
esp_apptrace_membufs_down_buffer_config(&hw_data->membufs, buf, size);
}
static uint8_t *esp_apptrace_trax_down_buffer_get(esp_apptrace_trax_data_t *hw_data, uint32_t *size, esp_apptrace_tmo_t *tmo)
{
uint8_t *ptr;
if (!ESP_APPTRACE_TRAX_INITED(hw_data)) {
return NULL;
}
esp_err_t res = esp_apptrace_trax_lock(hw_data, tmo);
if (res != ESP_OK) {
return NULL;
}
ptr = esp_apptrace_membufs_down_buffer_get(&hw_data->membufs, size, tmo);
// now we can safely unlock apptrace to allow other tasks/ISRs to get other buffers and write their data
if (esp_apptrace_trax_unlock(hw_data) != ESP_OK) {
assert(false && "Failed to unlock apptrace data!");
}
return ptr;
}
static esp_err_t esp_apptrace_trax_down_buffer_put(esp_apptrace_trax_data_t *hw_data, uint8_t *ptr, esp_apptrace_tmo_t *tmo)
{
if (!ESP_APPTRACE_TRAX_INITED(hw_data)) {
return ESP_ERR_INVALID_STATE;
}
// Can avoid locking because esp_apptrace_membufs_down_buffer_put() does nothing
/*esp_err_t res = esp_apptrace_trax_lock(hw_data, tmo);
if (res != ESP_OK) {
return res;
}*/
esp_err_t res = esp_apptrace_membufs_down_buffer_put(&hw_data->membufs, ptr, tmo);
// now we can safely unlock apptrace to allow other tasks/ISRs to get other buffers and write their data
/*if (esp_apptrace_trax_unlock(hw_data) != ESP_OK) {
assert(false && "Failed to unlock apptrace data!");
}*/
return res;
}
static bool esp_apptrace_trax_host_is_connected(esp_apptrace_trax_data_t *hw_data)
{
if (!ESP_APPTRACE_TRAX_INITED(hw_data)) {
return false;
}
return eri_read(ESP_APPTRACE_TRAX_CTRL_REG) & ESP_APPTRACE_TRAX_HOST_CONNECT ? true : false;
}
static esp_err_t esp_apptrace_trax_flush_nolock(esp_apptrace_trax_data_t *hw_data, uint32_t min_sz, esp_apptrace_tmo_t *tmo)
{
if (!ESP_APPTRACE_TRAX_INITED(hw_data)) {
return ESP_ERR_INVALID_STATE;
}
return esp_apptrace_membufs_flush_nolock(&hw_data->membufs, min_sz, tmo);
}
static esp_err_t esp_apptrace_trax_flush(esp_apptrace_trax_data_t *hw_data, esp_apptrace_tmo_t *tmo)
{
if (!ESP_APPTRACE_TRAX_INITED(hw_data)) {
return ESP_ERR_INVALID_STATE;
}
esp_err_t res = esp_apptrace_trax_lock(hw_data, tmo);
if (res != ESP_OK) {
return res;
}
res = esp_apptrace_membufs_flush_nolock(&hw_data->membufs, 0, tmo);
// now we can safely unlock apptrace to allow other tasks/ISRs to get other buffers and write their data
if (esp_apptrace_trax_unlock(hw_data) != ESP_OK) {
assert(false && "Failed to unlock apptrace data!");
}
return res;
}
/*****************************************************************************************/
/************************** Membufs proto HW iface ***************************************/
/*****************************************************************************************/
static inline void esp_apptrace_trax_buffer_swap_lock(void)
{
extern uint32_t __esp_apptrace_trax_eri_updated;
// indicate to host that we are about to update.
// this is used only to place CPU into streaming mode at tracing startup
// before starting streaming host can halt us after we read ESP_APPTRACE_TRAX_CTRL_REG and before we updated it
// HACK: in this case host will set breakpoint just after ESP_APPTRACE_TRAX_CTRL_REG update,
// here we set address to set bp at
// enter ERI update critical section
eri_write(ESP_APPTRACE_TRAX_STAT_REG, (uint32_t)&__esp_apptrace_trax_eri_updated);
}
static __attribute__((noinline)) void esp_apptrace_trax_buffer_swap_unlock(void)
{
// exit ERI update critical section
eri_write(ESP_APPTRACE_TRAX_STAT_REG, 0x0);
// TODO: currently host sets breakpoint, use break instruction to stop;
// it will allow to use ESP_APPTRACE_TRAX_STAT_REG for other purposes
asm volatile (
" .global __esp_apptrace_trax_eri_updated\n"
"__esp_apptrace_trax_eri_updated:\n"); // host will set bp here to resolve collision at streaming start
}
static esp_err_t esp_apptrace_trax_buffer_swap_start(uint32_t curr_block_id)
{
esp_err_t res = ESP_OK;
esp_apptrace_trax_buffer_swap_lock();
uint32_t ctrl_reg = eri_read(ESP_APPTRACE_TRAX_CTRL_REG);
uint32_t host_connected = ESP_APPTRACE_TRAX_HOST_CONNECT & ctrl_reg;
if (host_connected) {
uint32_t acked_block = ESP_APPTRACE_TRAX_BLOCK_ID_GET(ctrl_reg);
uint32_t host_to_read = ESP_APPTRACE_TRAX_BLOCK_LEN_GET(ctrl_reg);
if (host_to_read != 0 || acked_block != (curr_block_id & ESP_APPTRACE_TRAX_BLOCK_ID_MSK)) {
ESP_APPTRACE_LOGD("HC[%d]: Can not switch %x %d %x %x/%lx", cpu_hal_get_core_id(), ctrl_reg, host_to_read, acked_block,
curr_block_id & ESP_APPTRACE_TRAX_BLOCK_ID_MSK, curr_block_id);
res = ESP_ERR_NO_MEM;
goto _on_err;
}
}
return ESP_OK;
_on_err:
esp_apptrace_trax_buffer_swap_unlock();
return res;
}
static esp_err_t esp_apptrace_trax_buffer_swap_end(uint32_t new_block_id, uint32_t prev_block_len)
{
uint32_t ctrl_reg = eri_read(ESP_APPTRACE_TRAX_CTRL_REG);
uint32_t host_connected = ESP_APPTRACE_TRAX_HOST_CONNECT & ctrl_reg;
eri_write(ESP_APPTRACE_TRAX_CTRL_REG, ESP_APPTRACE_TRAX_BLOCK_ID(new_block_id) |
host_connected | ESP_APPTRACE_TRAX_BLOCK_LEN(prev_block_len));
esp_apptrace_trax_buffer_swap_unlock();
return ESP_OK;
}
static esp_err_t esp_apptrace_trax_buffer_swap(uint32_t new_block_id)
{
esp_apptrace_trax_select_memory_block(new_block_id);
return ESP_OK;
}
static bool esp_apptrace_trax_host_data_pending(void)
{
uint32_t ctrl_reg = eri_read(ESP_APPTRACE_TRAX_CTRL_REG);
return (ctrl_reg & ESP_APPTRACE_TRAX_HOST_DATA) ? true : false;
}

View File

@@ -1,70 +0,0 @@
// Copyright 2020 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef ESP_APP_TRACE_MEMBUFS_PROTO_H_
#define ESP_APP_TRACE_MEMBUFS_PROTO_H_
#include "esp_app_trace_util.h"
#ifdef __cplusplus
extern "C" {
#endif
/** TRAX HW transport state */
typedef struct {
uint32_t in_block; // input block ID
// TODO: change to uint16_t
uint32_t markers[2]; // block filling level markers
} esp_apptrace_membufs_state_t;
/** memory block parameters,
* should be packed, because it is read from the host */
typedef struct {
uint8_t *start; // start address
uint32_t sz; // size
} esp_apptrace_mem_block_t;
typedef struct {
esp_err_t (*swap_start)(uint32_t curr_block_id);
esp_err_t (*swap)(uint32_t new_block_id);
esp_err_t (*swap_end)(uint32_t new_block_id, uint32_t prev_block_len);
bool (*host_data_pending)(void);
} esp_apptrace_membufs_proto_hw_t;
typedef struct {
esp_apptrace_membufs_proto_hw_t * hw;
volatile esp_apptrace_membufs_state_t state; // state
esp_apptrace_mem_block_t blocks[2]; // memory blocks
#if CONFIG_APPTRACE_PENDING_DATA_SIZE_MAX > 0
// ring buffer control struct for pending user blocks
esp_apptrace_rb_t rb_pend;
// storage for pending user blocks
uint8_t pending_data[CONFIG_APPTRACE_PENDING_DATA_SIZE_MAX + 1];
#endif
// ring buffer control struct for data from host (down buffer)
esp_apptrace_rb_t rb_down;
} esp_apptrace_membufs_proto_data_t;
esp_err_t esp_apptrace_membufs_init(esp_apptrace_membufs_proto_data_t *proto, const esp_apptrace_mem_block_t blocks_cfg[2]);
void esp_apptrace_membufs_down_buffer_config(esp_apptrace_membufs_proto_data_t *data, uint8_t *buf, uint32_t size);
uint8_t *esp_apptrace_membufs_down_buffer_get(esp_apptrace_membufs_proto_data_t *proto, uint32_t *size, esp_apptrace_tmo_t *tmo);
esp_err_t esp_apptrace_membufs_down_buffer_put(esp_apptrace_membufs_proto_data_t *proto, uint8_t *ptr, esp_apptrace_tmo_t *tmo);
uint8_t *esp_apptrace_membufs_up_buffer_get(esp_apptrace_membufs_proto_data_t *proto, uint32_t size, esp_apptrace_tmo_t *tmo);
esp_err_t esp_apptrace_membufs_up_buffer_put(esp_apptrace_membufs_proto_data_t *proto, uint8_t *ptr, esp_apptrace_tmo_t *tmo);
esp_err_t esp_apptrace_membufs_flush_nolock(esp_apptrace_membufs_proto_data_t *proto, uint32_t min_sz, esp_apptrace_tmo_t *tmo);
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -1,35 +0,0 @@
# idf_create_lcov_report
#
# Create coverage report.
function(idf_create_coverage_report report_dir)
set(gcov_tool ${CONFIG_SDK_TOOLPREFIX}gcov)
idf_build_get_property(project_name PROJECT_NAME)
add_custom_target(pre-cov-report
COMMENT "Generating coverage report in: ${report_dir}"
COMMAND ${CMAKE_COMMAND} -E echo "Using gcov: ${gcov_tool}"
COMMAND ${CMAKE_COMMAND} -E make_directory ${report_dir}/html
)
add_custom_target(lcov-report
COMMENT "WARNING: lcov-report is deprecated. Please use gcovr-report instead."
COMMAND lcov --gcov-tool ${gcov_tool} -c -d ${CMAKE_CURRENT_BINARY_DIR} -o ${report_dir}/${project_name}.info
COMMAND genhtml -o ${report_dir}/html ${report_dir}/${project_name}.info
DEPENDS pre-cov-report
)
add_custom_target(gcovr-report
COMMAND gcovr -r ${project_dir} --gcov-executable ${gcov_tool} -s --html-details ${report_dir}/html/index.html
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS pre-cov-report
)
endfunction()
# idf_clean_coverage_report
#
# Clean coverage report.
function(idf_clean_coverage_report report_dir)
add_custom_target(cov-data-clean
COMMENT "Clean coverage report in: ${report_dir}"
COMMAND ${CMAKE_COMMAND} -E remove_directory ${report_dir})
endfunction()

View File

@@ -1,36 +0,0 @@
# sdkconfig replacement configurations for deprecated options formatted as
# CONFIG_DEPRECATED_OPTION CONFIG_NEW_OPTION
CONFIG_ESP32_APPTRACE_DESTINATION CONFIG_APPTRACE_DESTINATION
CONFIG_ESP32_APPTRACE_DEST_NONE CONFIG_APPTRACE_DEST_NONE
CONFIG_ESP32_APPTRACE_DEST_TRAX CONFIG_APPTRACE_DEST_JTAG
CONFIG_ESP32_APPTRACE_ENABLE CONFIG_APPTRACE_ENABLE
CONFIG_ESP32_APPTRACE_LOCK_ENABLE CONFIG_APPTRACE_LOCK_ENABLE
CONFIG_ESP32_APPTRACE_ONPANIC_HOST_FLUSH_TMO CONFIG_APPTRACE_ONPANIC_HOST_FLUSH_TMO
CONFIG_ESP32_APPTRACE_POSTMORTEM_FLUSH_TRAX_THRESH CONFIG_APPTRACE_POSTMORTEM_FLUSH_THRESH
CONFIG_ESP32_APPTRACE_PENDING_DATA_SIZE_MAX CONFIG_APPTRACE_PENDING_DATA_SIZE_MAX
CONFIG_ESP32_GCOV_ENABLE CONFIG_APPTRACE_GCOV_ENABLE
CONFIG_SYSVIEW_ENABLE CONFIG_APPTRACE_SV_ENABLE
CONFIG_SYSVIEW_TS_SOURCE CONFIG_APPTRACE_SV_TS_SOURCE
CONFIG_SYSVIEW_TS_SOURCE_CCOUNT CONFIG_APPTRACE_SV_TS_SOURCE_CCOUNT
CONFIG_SYSVIEW_TS_SOURCE_TIMER_00 CONFIG_APPTRACE_SV_TS_SOURCE_TIMER_00
CONFIG_SYSVIEW_TS_SOURCE_TIMER_01 CONFIG_APPTRACE_SV_TS_SOURCE_TIMER_01
CONFIG_SYSVIEW_TS_SOURCE_TIMER_10 CONFIG_APPTRACE_SV_TS_SOURCE_TIMER_10
CONFIG_SYSVIEW_TS_SOURCE_TIMER_11 CONFIG_APPTRACE_SV_TS_SOURCE_TIMER_11
CONFIG_SYSVIEW_TS_SOURCE_ESP_TIMER CONFIG_APPTRACE_SV_TS_SOURCE_ESP_TIMER
CONFIG_SYSVIEW_MAX_TASKS CONFIG_APPTRACE_SV_MAX_TASKS
CONFIG_SYSVIEW_BUF_WAIT_TMO CONFIG_APPTRACE_SV_BUF_WAIT_TMO
CONFIG_SYSVIEW_EVT_OVERFLOW_ENABLE CONFIG_APPTRACE_SV_EVT_OVERFLOW_ENABLE
CONFIG_SYSVIEW_EVT_ISR_ENTER_ENABLE CONFIG_APPTRACE_SV_EVT_ISR_ENTER_ENABLE
CONFIG_SYSVIEW_EVT_ISR_EXIT_ENABLE CONFIG_APPTRACE_SV_EVT_ISR_EXIT_ENABLE
CONFIG_SYSVIEW_EVT_ISR_TO_SCHEDULER_ENABLE CONFIG_APPTRACE_SV_EVT_ISR_TO_SCHED_ENABLE
CONFIG_SYSVIEW_EVT_TASK_START_EXEC_ENABLE CONFIG_APPTRACE_SV_EVT_TASK_START_EXEC_ENABLE
CONFIG_SYSVIEW_EVT_TASK_STOP_EXEC_ENABLE CONFIG_APPTRACE_SV_EVT_TASK_STOP_EXEC_ENABLE
CONFIG_SYSVIEW_EVT_TASK_START_READY_ENABLE CONFIG_APPTRACE_SV_EVT_TASK_START_READY_ENABLE
CONFIG_SYSVIEW_EVT_TASK_STOP_READY_ENABLE CONFIG_APPTRACE_SV_EVT_TASK_STOP_READY_ENABLE
CONFIG_SYSVIEW_EVT_TASK_CREATE_ENABLE CONFIG_APPTRACE_SV_EVT_TASK_CREATE_ENABLE
CONFIG_SYSVIEW_EVT_TASK_TERMINATE_ENABLE CONFIG_APPTRACE_SV_EVT_TASK_TERMINATE_ENABLE
CONFIG_SYSVIEW_EVT_IDLE_ENABLE CONFIG_APPTRACE_SV_EVT_IDLE_ENABLE
CONFIG_SYSVIEW_EVT_TIMER_ENTER_ENABLE CONFIG_APPTRACE_SV_EVT_TIMER_ENTER_ENABLE
CONFIG_SYSVIEW_EVT_TIMER_EXIT_ENABLE CONFIG_APPTRACE_SV_EVT_TIMER_EXIT_ENABLE

View File

@@ -88,7 +88,7 @@ Purpose : Global types
#else
#define U64_C(x) x##ULL
#endif
#else
#else
//
// C99 compliant compiler
//

View File

@@ -285,12 +285,12 @@ Revision: $Rev: 5626 $
* RTT lock configuration fallback
*/
#ifndef SEGGER_RTT_LOCK
void SEGGER_SYSVIEW_X_RTT_Lock(void);
void SEGGER_SYSVIEW_X_RTT_Lock();
#define SEGGER_RTT_LOCK() SEGGER_SYSVIEW_X_RTT_Lock() // Lock RTT (nestable) (i.e. disable interrupts)
#endif
#ifndef SEGGER_RTT_UNLOCK
void SEGGER_SYSVIEW_X_RTT_Unlock(void);
void SEGGER_SYSVIEW_X_RTT_Unlock();
#define SEGGER_RTT_UNLOCK() SEGGER_SYSVIEW_X_RTT_Unlock() // Unlock RTT (nestable) (i.e. enable previous interrupt lock state)
#endif

View File

@@ -65,8 +65,6 @@ Revision: $Rev: 5927 $
#ifndef SEGGER_SYSVIEW_CONF_H
#define SEGGER_SYSVIEW_CONF_H
#include "soc/soc.h"
/*********************************************************************
*
* Defines, fixed
@@ -149,7 +147,7 @@ Revision: $Rev: 5927 $
* SystemView Id configuration
*/
//TODO: optimise it
#define SEGGER_SYSVIEW_ID_BASE SOC_DROM_LOW // Default value for the lowest Id reported by the application. Can be overridden by the application via SEGGER_SYSVIEW_SetRAMBase(). (i.e. 0x20000000 when all Ids are an address in this RAM)
#define SEGGER_SYSVIEW_ID_BASE 0x3F400000 // Default value for the lowest Id reported by the application. Can be overridden by the application via SEGGER_SYSVIEW_SetRAMBase(). (i.e. 0x20000000 when all Ids are an address in this RAM)
#define SEGGER_SYSVIEW_ID_SHIFT 0 // Number of bits to shift the Id to save bandwidth. (i.e. 2 when Ids are 4 byte aligned)
/*********************************************************************
@@ -168,7 +166,7 @@ Revision: $Rev: 5927 $
#define SEGGER_SYSVIEW_GET_INTERRUPT_ID() SEGGER_SYSVIEW_X_GetInterruptId() // Get the currently active interrupt Id from the user-provided function.
#endif
unsigned SEGGER_SYSVIEW_X_SysView_Lock(void);
unsigned SEGGER_SYSVIEW_X_SysView_Lock();
void SEGGER_SYSVIEW_X_SysView_Unlock(unsigned int_state);
// to be recursive save IRQ status on the stack of the caller
#define SEGGER_SYSVIEW_LOCK() unsigned _SYSVIEW_int_state = SEGGER_SYSVIEW_X_SysView_Lock()

View File

@@ -58,7 +58,7 @@
---------------------------END-OF-HEADER------------------------------
File : SEGGER_RTT.h
Purpose : Implementation of SEGGER real-time transfer which allows
real-time communication on targets which support debugger
real-time communication on targets which support debugger
memory accesses while the CPU is running.
Revision: $Rev: 5626 $
----------------------------------------------------------------------
@@ -159,8 +159,7 @@ unsigned SEGGER_RTT_WriteNoLock (unsigned BufferIndex, const voi
unsigned SEGGER_RTT_WriteSkipNoLock (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
unsigned SEGGER_RTT_WriteString (unsigned BufferIndex, const char* s);
void SEGGER_RTT_WriteWithOverwriteNoLock(unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
void SEGGER_RTT_ESP_FlushNoLock (unsigned long min_sz, unsigned long tmo);
void SEGGER_RTT_ESP_Flush (unsigned long min_sz, unsigned long tmo);
void SEGGER_RTT_ESP32_FlushNoLock (unsigned long min_sz, unsigned long tmo);
//
// Function macro for performance optimization
//

View File

@@ -69,7 +69,7 @@ Additional information:
Packets with IDs 24..31 are standard packets with extendible
structure and contain a length field.
<ID><Length><Data><TimeStampDelta>
<ID><Lenght><Data><TimeStampDelta>
Packets with IDs >= 32 always contain a length field.
<ID><Length><Data><TimeStampDelta>
@@ -402,7 +402,7 @@ static U8 *_EncodeStr(U8 *pPayload, const char *pText, unsigned int Limit) {
// Write Len
//
if (Len < 255) {
*pPayload++ = Len;
*pPayload++ = Len;
} else {
*pPayload++ = 255;
*pPayload++ = (Len & 255);
@@ -556,7 +556,7 @@ static int _TrySendOverflowPacket(void) {
* _SendSyncInfo()
*
* Function description
* Send SystemView sync packet and system information in
* Send SystemView sync packet and system information in
* post mortem mode.
*
* Additional information
@@ -792,7 +792,7 @@ static void _VPrintHost(const char* s, U32 Options, va_list* pParamList) {
U32 aParas[SEGGER_SYSVIEW_MAX_ARGUMENTS];
U32 NumArguments;
const char* p;
p = s;
NumArguments = 0;
while (*p) {
@@ -1689,10 +1689,6 @@ void SEGGER_SYSVIEW_Stop(void) {
RECORD_END();
}
U8 SEGGER_SYSVIEW_Started(void) {
return _SYSVIEW_Globals.EnableState;
}
/*********************************************************************
*
* SEGGER_SYSVIEW_GetSysDesc()
@@ -2682,7 +2678,7 @@ void SEGGER_SYSVIEW_ErrorfTarget(const char* s, ...) {
void SEGGER_SYSVIEW_Print(const char* s) {
U8* pPayload;
U8* pPayloadStart;
RECORD_START(SEGGER_SYSVIEW_INFO_SIZE + 2 * SEGGER_SYSVIEW_QUANTA_U32 + SEGGER_SYSVIEW_MAX_STRING_LEN + 3/*1 or 3 bytes for string length*/);
RECORD_START(SEGGER_SYSVIEW_INFO_SIZE + 2 * SEGGER_SYSVIEW_QUANTA_U32 + SEGGER_SYSVIEW_MAX_STRING_LEN);
//
pPayload = _EncodeStr(pPayloadStart, s, SEGGER_SYSVIEW_MAX_STRING_LEN);
ENCODE_U32(pPayload, SEGGER_SYSVIEW_LOG);

View File

@@ -230,8 +230,6 @@ void SEGGER_SYSVIEW_GetSysDesc (void);
void SEGGER_SYSVIEW_SendTaskList (void);
void SEGGER_SYSVIEW_SendTaskInfo (const SEGGER_SYSVIEW_TASKINFO* pInfo);
void SEGGER_SYSVIEW_SendSysDesc (const char* sSysDesc);
// Checks whether tracing has been started
U8 SEGGER_SYSVIEW_Started(void);
/*********************************************************************
*

View File

@@ -118,7 +118,7 @@ extern "C" {
#endif
// Lowest Id reported by the Application.
#ifndef SEGGER_SYSVIEW_ID_BASE
#ifndef SEGGER_SYSVIEW_ID_BASE
#define SEGGER_SYSVIEW_ID_BASE 0
#endif

View File

@@ -61,24 +61,13 @@ File : SEGGER_SYSVIEW_Config_FreeRTOS.c
Purpose : Sample setup configuration of SystemView with FreeRTOS.
Revision: $Rev: 3734 $
*/
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "SEGGER_SYSVIEW.h"
#include "rom/ets_sys.h"
#include "esp_app_trace.h"
#include "esp_app_trace_util.h"
#include "esp_intr_alloc.h"
#include "soc/soc.h"
#include "soc/interrupts.h"
#if CONFIG_IDF_TARGET_ESP32
#include "esp32/clk.h"
#elif CONFIG_IDF_TARGET_ESP32S2
#include "esp32s2/clk.h"
#elif CONFIG_IDF_TARGET_ESP32S3
#include "esp32s3/clk.h"
#elif CONFIG_IDF_TARGET_ESP32C3
#include "esp32c3/clk.h"
#endif
#include "esp_clk.h"
extern const SEGGER_SYSVIEW_OS_API SYSVIEW_X_OS_TraceAPI;
@@ -92,18 +81,12 @@ extern const SEGGER_SYSVIEW_OS_API SYSVIEW_X_OS_TraceAPI;
#define SYSVIEW_APP_NAME "FreeRTOS Application"
// The target device name
#define SYSVIEW_DEVICE_NAME CONFIG_IDF_TARGET
// The target core name
#if CONFIG_IDF_TARGET_ARCH_XTENSA
#define SYSVIEW_CORE_NAME "xtensa"
#elif CONFIG_IDF_TARGET_ARCH_RISCV
#define SYSVIEW_CORE_NAME "riscv"
#endif
#define SYSVIEW_DEVICE_NAME "ESP32"
// Determine which timer to use as timestamp source
#if CONFIG_APPTRACE_SV_TS_SOURCE_CCOUNT
#if CONFIG_SYSVIEW_TS_SOURCE_CCOUNT
#define TS_USE_CCOUNT 1
#elif CONFIG_APPTRACE_SV_TS_SOURCE_ESP_TIMER
#elif CONFIG_SYSVIEW_TS_SOURCE_ESP_TIMER
#define TS_USE_ESP_TIMER 1
#else
#define TS_USE_TIMERGROUP 1
@@ -119,13 +102,13 @@ extern const SEGGER_SYSVIEW_OS_API SYSVIEW_X_OS_TraceAPI;
#define SYSVIEW_TIMESTAMP_FREQ (esp_clk_apb_freq() / SYSVIEW_TIMER_DIV)
// Timer ID and group ID
#if defined(CONFIG_APPTRACE_SV_TS_SOURCE_TIMER_00) || defined(CONFIG_APPTRACE_SV_TS_SOURCE_TIMER_10)
#if defined(CONFIG_SYSVIEW_TS_SOURCE_TIMER_00) || defined(CONFIG_SYSVIEW_TS_SOURCE_TIMER_01)
#define TS_TIMER_ID 0
#else
#define TS_TIMER_ID 1
#endif // TIMER_00 || TIMER_01
#if defined(CONFIG_APPTRACE_SV_TS_SOURCE_TIMER_00) || defined(CONFIG_APPTRACE_SV_TS_SOURCE_TIMER_01)
#if defined(CONFIG_SYSVIEW_TS_SOURCE_TIMER_00) || defined(CONFIG_SYSVIEW_TS_SOURCE_TIMER_10)
#define TS_TIMER_GROUP 0
#else
#define TS_TIMER_GROUP 1
@@ -140,22 +123,15 @@ extern const SEGGER_SYSVIEW_OS_API SYSVIEW_X_OS_TraceAPI;
#if TS_USE_CCOUNT
// CCOUNT is incremented at CPU frequency
#if CONFIG_IDF_TARGET_ESP32
#define SYSVIEW_TIMESTAMP_FREQ (CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ * 1000000)
#elif CONFIG_IDF_TARGET_ESP32S2
#define SYSVIEW_TIMESTAMP_FREQ (CONFIG_ESP32S2_DEFAULT_CPU_FREQ_MHZ * 1000000)
#elif CONFIG_IDF_TARGET_ESP32S3
#define SYSVIEW_TIMESTAMP_FREQ (CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ * 1000000)
#endif
#endif // TS_USE_CCOUNT
// System Frequency.
#define SYSVIEW_CPU_FREQ (esp_clk_cpu_freq())
// The lowest RAM address used for IDs (pointers)
#define SYSVIEW_RAM_BASE (SOC_DROM_LOW)
#define SYSVIEW_RAM_BASE (0x3F400000)
#ifdef CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER
#if CONFIG_FREERTOS_CORETIMER_0
#define SYSTICK_INTR_ID (ETS_INTERNAL_TIMER0_INTR_SOURCE+ETS_INTERNAL_INTR_SOURCE_OFF)
#endif
@@ -163,10 +139,6 @@ extern const SEGGER_SYSVIEW_OS_API SYSVIEW_X_OS_TraceAPI;
#define SYSTICK_INTR_ID (ETS_INTERNAL_TIMER1_INTR_SOURCE+ETS_INTERNAL_INTR_SOURCE_OFF)
#endif
#elif CONFIG_FREERTOS_SYSTICK_USES_SYSTIMER
#define SYSTICK_INTR_ID (ETS_SYSTIMER_TARGET0_EDGE_INTR_SOURCE)
#endif // CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER
// SystemView is single core specific: it implies that SEGGER_SYSVIEW_LOCK()
// disables IRQs (disables rescheduling globally). So we can not use finite timeouts for locks and return error
// in case of expiration, because error will not be handled and SEGGER's code will go further implying that
@@ -175,6 +147,78 @@ extern const SEGGER_SYSVIEW_OS_API SYSVIEW_X_OS_TraceAPI;
static esp_apptrace_lock_t s_sys_view_lock = {.mux = portMUX_INITIALIZER_UNLOCKED, .int_state = 0};
static const char * const s_isr_names[] = {
[0] = "WIFI_MAC",
[1] = "WIFI_NMI",
[2] = "WIFI_BB",
[3] = "BT_MAC",
[4] = "BT_BB",
[5] = "BT_BB_NMI",
[6] = "RWBT",
[7] = "RWBLE",
[8] = "RWBT_NMI",
[9] = "RWBLE_NMI",
[10] = "SLC0",
[11] = "SLC1",
[12] = "UHCI0",
[13] = "UHCI1",
[14] = "TG0_T0_LEVEL",
[15] = "TG0_T1_LEVEL",
[16] = "TG0_WDT_LEVEL",
[17] = "TG0_LACT_LEVEL",
[18] = "TG1_T0_LEVEL",
[19] = "TG1_T1_LEVEL",
[20] = "TG1_WDT_LEVEL",
[21] = "TG1_LACT_LEVEL",
[22] = "GPIO",
[23] = "GPIO_NMI",
[24] = "FROM_CPU0",
[25] = "FROM_CPU1",
[26] = "FROM_CPU2",
[27] = "FROM_CPU3",
[28] = "SPI0",
[29] = "SPI1",
[30] = "SPI2",
[31] = "SPI3",
[32] = "I2S0",
[33] = "I2S1",
[34] = "UART0",
[35] = "UART1",
[36] = "UART2",
[37] = "SDIO_HOST",
[38] = "ETH_MAC",
[39] = "PWM0",
[40] = "PWM1",
[41] = "PWM2",
[42] = "PWM3",
[43] = "LEDC",
[44] = "EFUSE",
[45] = "CAN",
[46] = "RTC_CORE",
[47] = "RMT",
[48] = "PCNT",
[49] = "I2C_EXT0",
[50] = "I2C_EXT1",
[51] = "RSA",
[52] = "SPI1_DMA",
[53] = "SPI2_DMA",
[54] = "SPI3_DMA",
[55] = "WDT",
[56] = "TIMER1",
[57] = "TIMER2",
[58] = "TG0_T0_EDGE",
[59] = "TG0_T1_EDGE",
[60] = "TG0_WDT_EDGE",
[61] = "TG0_LACT_EDGE",
[62] = "TG1_T0_EDGE",
[63] = "TG1_T1_EDGE",
[64] = "TG1_WDT_EDGE",
[65] = "TG1_LACT_EDGE",
[66] = "MMU_IA",
[67] = "MPU_IA",
[68] = "CACHE_IA",
};
/*********************************************************************
*
* _cbSendSystemDesc()
@@ -184,14 +228,12 @@ static esp_apptrace_lock_t s_sys_view_lock = {.mux = portMUX_INITIALIZER_UNLOCKE
*/
static void _cbSendSystemDesc(void) {
char irq_str[32];
SEGGER_SYSVIEW_SendSysDesc("N="SYSVIEW_APP_NAME",D="SYSVIEW_DEVICE_NAME",C="SYSVIEW_CORE_NAME",O=FreeRTOS");
SEGGER_SYSVIEW_SendSysDesc("N="SYSVIEW_APP_NAME",D="SYSVIEW_DEVICE_NAME",C=Xtensa,O=FreeRTOS");
snprintf(irq_str, sizeof(irq_str), "I#%d=SysTick", SYSTICK_INTR_ID);
SEGGER_SYSVIEW_SendSysDesc(irq_str);
size_t isr_count = sizeof(esp_isr_names)/sizeof(esp_isr_names[0]);
size_t isr_count = sizeof(s_isr_names)/sizeof(s_isr_names[0]);
for (size_t i = 0; i < isr_count; ++i) {
if (esp_isr_names[i] == NULL || (ETS_INTERNAL_INTR_SOURCE_OFF + i) == SYSTICK_INTR_ID)
continue;
snprintf(irq_str, sizeof(irq_str), "I#%d=%s", ETS_INTERNAL_INTR_SOURCE_OFF + i, esp_isr_names[i]);
snprintf(irq_str, sizeof(irq_str), "I#%d=%s", ETS_INTERNAL_INTR_SOURCE_OFF + i, s_isr_names[i]);
SEGGER_SYSVIEW_SendSysDesc(irq_str);
}
}
@@ -202,7 +244,7 @@ static void _cbSendSystemDesc(void) {
*
**********************************************************************
*/
static void SEGGER_SYSVIEW_TS_Init(void)
static void SEGGER_SYSVIEW_TS_Init()
{
/* We only need to initialize something if we use Timer Group.
* esp_timer and ccount can be used as is.
@@ -232,49 +274,49 @@ void SEGGER_SYSVIEW_Conf(void) {
&SYSVIEW_X_OS_TraceAPI, _cbSendSystemDesc);
SEGGER_SYSVIEW_SetRAMBase(SYSVIEW_RAM_BASE);
#if !CONFIG_APPTRACE_SV_EVT_OVERFLOW_ENABLE
#if !CONFIG_SYSVIEW_EVT_OVERFLOW_ENABLE
disable_evts |= SYSVIEW_EVTMASK_OVERFLOW;
#endif
#if !CONFIG_APPTRACE_SV_EVT_ISR_ENTER_ENABLE
#if !CONFIG_SYSVIEW_EVT_ISR_ENTER_ENABLE
disable_evts |= SYSVIEW_EVTMASK_ISR_ENTER;
#endif
#if !CONFIG_APPTRACE_SV_EVT_ISR_EXIT_ENABLE
#if !CONFIG_SYSVIEW_EVT_ISR_EXIT_ENABLE
disable_evts |= SYSVIEW_EVTMASK_ISR_EXIT;
#endif
#if !CONFIG_APPTRACE_SV_EVT_TASK_START_EXEC_ENABLE
#if !CONFIG_SYSVIEW_EVT_TASK_START_EXEC_ENABLE
disable_evts |= SYSVIEW_EVTMASK_TASK_START_EXEC;
#endif
#if !CONFIG_APPTRACE_SV_EVT_TASK_STOP_EXEC_ENABLE
#if !CONFIG_SYSVIEW_EVT_TASK_STOP_EXEC_ENABLE
disable_evts |= SYSVIEW_EVTMASK_TASK_STOP_EXEC;
#endif
#if !CONFIG_APPTRACE_SV_EVT_TASK_START_READY_ENABLE
#if !CONFIG_SYSVIEW_EVT_TASK_START_READY_ENABLE
disable_evts |= SYSVIEW_EVTMASK_TASK_START_READY;
#endif
#if !CONFIG_APPTRACE_SV_EVT_TASK_STOP_READY_ENABLE
#if !CONFIG_SYSVIEW_EVT_TASK_STOP_READY_ENABLE
disable_evts |= SYSVIEW_EVTMASK_TASK_STOP_READY;
#endif
#if !CONFIG_APPTRACE_SV_EVT_TASK_CREATE_ENABLE
#if !CONFIG_SYSVIEW_EVT_TASK_CREATE_ENABLE
disable_evts |= SYSVIEW_EVTMASK_TASK_CREATE;
#endif
#if !CONFIG_APPTRACE_SV_EVT_TASK_TERMINATE_ENABLE
#if !CONFIG_SYSVIEW_EVT_TASK_TERMINATE_ENABLE
disable_evts |= SYSVIEW_EVTMASK_TASK_TERMINATE;
#endif
#if !CONFIG_APPTRACE_SV_EVT_IDLE_ENABLE
#if !CONFIG_SYSVIEW_EVT_IDLE_ENABLE
disable_evts |= SYSVIEW_EVTMASK_IDLE;
#endif
#if !CONFIG_APPTRACE_SV_EVT_ISR_TO_SCHED_ENABLE
#if !CONFIG_SYSVIEW_EVT_ISR_TO_SCHEDULER_ENABLE
disable_evts |= SYSVIEW_EVTMASK_ISR_TO_SCHEDULER;
#endif
#if !CONFIG_APPTRACE_SV_EVT_TIMER_ENTER_ENABLE
#if !CONFIG_SYSVIEW_EVT_TIMER_ENTER_ENABLE
disable_evts |= SYSVIEW_EVTMASK_TIMER_ENTER;
#endif
#if !CONFIG_APPTRACE_SV_EVT_TIMER_EXIT_ENABLE
#if !CONFIG_SYSVIEW_EVT_TIMER_EXIT_ENABLE
disable_evts |= SYSVIEW_EVTMASK_TIMER_EXIT;
#endif
SEGGER_SYSVIEW_DisableEvents(disable_evts);
}
U32 SEGGER_SYSVIEW_X_GetTimestamp(void)
U32 SEGGER_SYSVIEW_X_GetTimestamp()
{
#if TS_USE_TIMERGROUP
uint64_t ts = 0;
@@ -287,15 +329,15 @@ U32 SEGGER_SYSVIEW_X_GetTimestamp(void)
#endif
}
void SEGGER_SYSVIEW_X_RTT_Lock(void)
void SEGGER_SYSVIEW_X_RTT_Lock()
{
}
void SEGGER_SYSVIEW_X_RTT_Unlock(void)
void SEGGER_SYSVIEW_X_RTT_Unlock()
{
}
unsigned SEGGER_SYSVIEW_X_SysView_Lock(void)
unsigned SEGGER_SYSVIEW_X_SysView_Lock()
{
esp_apptrace_tmo_t tmo;
esp_apptrace_tmo_init(&tmo, SEGGER_LOCK_WAIT_TMO);

View File

@@ -136,11 +136,11 @@ static U64 _cbGetTime(void) {
*/
void SYSVIEW_AddTask(U32 xHandle, const char* pcTaskName, unsigned uxCurrentPriority, U32 pxStack, unsigned uStackHighWaterMark) {
unsigned n;
if (memcmp(pcTaskName, "IDLE", 5) == 0) {
return;
}
for (n = 0; n < SYSVIEW_FREERTOS_MAX_NOF_TASKS; n++) {
if (_aTasks[n].xHandle == 0) {
break;
@@ -170,7 +170,7 @@ void SYSVIEW_AddTask(U32 xHandle, const char* pcTaskName, unsigned uxCurrentPrio
*/
void SYSVIEW_UpdateTask(U32 xHandle, const char* pcTaskName, unsigned uxCurrentPriority, U32 pxStack, unsigned uStackHighWaterMark) {
unsigned n;
if (memcmp(pcTaskName, "IDLE", 5) == 0) {
return;
}

View File

@@ -76,8 +76,11 @@ Notes:
*
**********************************************************************
*/
#ifndef portSTACK_GROWTH
#define portSTACK_GROWTH ( -1 )
#endif
#define SYSVIEW_FREERTOS_MAX_NOF_TASKS CONFIG_APPTRACE_SV_MAX_TASKS
#define SYSVIEW_FREERTOS_MAX_NOF_TASKS CONFIG_SYSVIEW_MAX_TASKS
/*********************************************************************
*
@@ -206,7 +209,7 @@ Notes:
#define apiID_VEVENTGROUPDELETE (72u)
#define apiID_UXEVENTGROUPGETNUMBER (73u)
#define traceTASK_NOTIFY_TAKE( uxIndexToWait ) SEGGER_SYSVIEW_RecordU32x2(apiFastID_OFFSET + apiID_ULTASKNOTIFYTAKE, xClearCountOnExit, xTicksToWait)
#define traceTASK_NOTIFY_TAKE() SEGGER_SYSVIEW_RecordU32x2(apiFastID_OFFSET + apiID_ULTASKNOTIFYTAKE, xClearCountOnExit, xTicksToWait)
#define traceTASK_DELAY() SEGGER_SYSVIEW_RecordU32(apiFastID_OFFSET + apiID_VTASKDELAY, xTicksToDelay)
#define traceTASK_DELAY_UNTIL() SEGGER_SYSVIEW_RecordVoid(apiFastID_OFFSET + apiID_VTASKDELAYUNTIL)
#define traceTASK_DELETE( pxTCB ) if (pxTCB != NULL) { \
@@ -214,25 +217,24 @@ Notes:
SEGGER_SYSVIEW_ShrinkId((U32)pxTCB)); \
SYSVIEW_DeleteTask((U32)pxTCB); \
}
#define traceTASK_NOTIFY_GIVE_FROM_ISR( uxIndexToNotify ) SEGGER_SYSVIEW_RecordU32x2(apiFastID_OFFSET + apiID_VTASKNOTIFYGIVEFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxTCB), (U32)pxHigherPriorityTaskWoken)
#define traceTASK_NOTIFY_GIVE_FROM_ISR() SEGGER_SYSVIEW_RecordU32x2(apiFastID_OFFSET + apiID_VTASKNOTIFYGIVEFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxTCB), (U32)pxHigherPriorityTaskWoken)
#define traceTASK_PRIORITY_INHERIT( pxTCB, uxPriority ) SEGGER_SYSVIEW_RecordU32(apiFastID_OFFSET + apiID_VTASKPRIORITYINHERIT, (U32)pxMutexHolder)
#define traceTASK_RESUME( pxTCB ) SEGGER_SYSVIEW_RecordU32(apiFastID_OFFSET + apiID_VTASKRESUME, SEGGER_SYSVIEW_ShrinkId((U32)pxTCB))
#define traceINCREASE_TICK_COUNT( xTicksToJump ) SEGGER_SYSVIEW_RecordU32(apiFastID_OFFSET + apiID_VTASKSTEPTICK, xTicksToJump)
#define traceTASK_SUSPEND( pxTCB ) SEGGER_SYSVIEW_RecordU32(apiFastID_OFFSET + apiID_VTASKSUSPEND, SEGGER_SYSVIEW_ShrinkId((U32)pxTCB))
#define traceTASK_PRIORITY_DISINHERIT( pxTCB, uxBasePriority ) SEGGER_SYSVIEW_RecordU32(apiFastID_OFFSET + apiID_XTASKPRIORITYDISINHERIT, (U32)pxMutexHolder)
#define traceTASK_RESUME_FROM_ISR( pxTCB ) SEGGER_SYSVIEW_RecordU32(apiFastID_OFFSET + apiID_XTASKRESUMEFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxTCB))
#define traceTASK_NOTIFY( uxIndexToNotify ) SYSVIEW_RecordU32x4(apiFastID_OFFSET + apiID_XTASKGENERICNOTIFY, SEGGER_SYSVIEW_ShrinkId((U32)pxTCB), ulValue, eAction, (U32)pulPreviousNotificationValue)
#define traceTASK_NOTIFY_FROM_ISR( uxIndexToNotify ) SYSVIEW_RecordU32x5(apiFastID_OFFSET + apiID_XTASKGENERICNOTIFYFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxTCB), ulValue, eAction, (U32)pulPreviousNotificationValue, (U32)pxHigherPriorityTaskWoken)
#define traceTASK_NOTIFY_WAIT( uxIndexToWait ) SYSVIEW_RecordU32x4(apiFastID_OFFSET + apiID_XTASKNOTIFYWAIT, ulBitsToClearOnEntry, ulBitsToClearOnExit, (U32)pulNotificationValue, xTicksToWait)
#define traceTASK_NOTIFY() SYSVIEW_RecordU32x4(apiFastID_OFFSET + apiID_XTASKGENERICNOTIFY, SEGGER_SYSVIEW_ShrinkId((U32)pxTCB), ulValue, eAction, (U32)pulPreviousNotificationValue)
#define traceTASK_NOTIFY_FROM_ISR() SYSVIEW_RecordU32x5(apiFastID_OFFSET + apiID_XTASKGENERICNOTIFYFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxTCB), ulValue, eAction, (U32)pulPreviousNotificationValue, (U32)pxHigherPriorityTaskWoken)
#define traceTASK_NOTIFY_WAIT() SYSVIEW_RecordU32x4(apiFastID_OFFSET + apiID_XTASKNOTIFYWAIT, ulBitsToClearOnEntry, ulBitsToClearOnExit, (U32)pulNotificationValue, xTicksToWait)
#define traceQUEUE_CREATE( pxNewQueue ) SEGGER_SYSVIEW_RecordU32x3(apiFastID_OFFSET + apiID_XQUEUEGENERICCREATE, uxQueueLength, uxItemSize, ucQueueType)
#define traceQUEUE_DELETE( pxQueue ) SEGGER_SYSVIEW_RecordU32(apiFastID_OFFSET + apiID_VQUEUEDELETE, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue))
#define traceQUEUE_PEEK( pxQueue ) SYSVIEW_RecordU32x4(apiFastID_OFFSET + apiID_XQUEUEGENERICRECEIVE, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)pvBuffer), xTicksToWait, 0)
#define traceQUEUE_PEEK( pxQueue ) SYSVIEW_RecordU32x4(apiFastID_OFFSET + apiID_XQUEUEGENERICRECEIVE, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)pvBuffer), xTicksToWait, xJustPeeking)
#define traceQUEUE_PEEK_FROM_ISR( pxQueue ) SEGGER_SYSVIEW_RecordU32x2(apiFastID_OFFSET + apiID_XQUEUEPEEKFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)pvBuffer))
#define traceQUEUE_PEEK_FROM_ISR_FAILED( pxQueue ) SEGGER_SYSVIEW_RecordU32x2(apiFastID_OFFSET + apiID_XQUEUEPEEKFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)pvBuffer))
#define traceQUEUE_RECEIVE( pxQueue ) SEGGER_SYSVIEW_RecordU32x4(apiFastID_OFFSET + apiID_XQUEUEGENERICRECEIVE, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)0), xTicksToWait, 1)
#define traceQUEUE_RECEIVE_FAILED( pxQueue ) SEGGER_SYSVIEW_RecordU32x4(apiFastID_OFFSET + apiID_XQUEUEGENERICRECEIVE, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)0), xTicksToWait, 1)
#define traceQUEUE_SEMAPHORE_RECEIVE( pxQueue ) SEGGER_SYSVIEW_RecordU32x4(apiFastID_OFFSET + apiID_XQUEUEGENERICRECEIVE, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)0), xTicksToWait, 0)
#define traceQUEUE_RECEIVE( pxQueue ) SYSVIEW_RecordU32x4(apiFastID_OFFSET + apiID_XQUEUEGENERICRECEIVE, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)pvBuffer), xTicksToWait, xJustPeeking)
#define traceQUEUE_RECEIVE_FAILED( pxQueue ) SYSVIEW_RecordU32x4(apiFastID_OFFSET + apiID_XQUEUEGENERICRECEIVE, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)pvBuffer), xTicksToWait, xJustPeeking)
#define traceQUEUE_RECEIVE_FROM_ISR( pxQueue ) SEGGER_SYSVIEW_RecordU32x3(apiFastID_OFFSET + apiID_XQUEUERECEIVEFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)pvBuffer), (U32)pxHigherPriorityTaskWoken)
#define traceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue ) SEGGER_SYSVIEW_RecordU32x3(apiFastID_OFFSET + apiID_XQUEUERECEIVEFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)pvBuffer), (U32)pxHigherPriorityTaskWoken)
#define traceQUEUE_REGISTRY_ADD( xQueue, pcQueueName ) SEGGER_SYSVIEW_RecordU32x2(apiFastID_OFFSET + apiID_VQUEUEADDTOREGISTRY, SEGGER_SYSVIEW_ShrinkId((U32)xQueue), (U32)pcQueueName)
@@ -242,10 +244,8 @@ Notes:
#define traceQUEUE_SEND( pxQueue ) SYSVIEW_RecordU32x4(apiFastID_OFFSET + apiID_XQUEUEGENERICSEND, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), 0, 0, xCopyPosition)
#endif
#define traceQUEUE_SEND_FAILED( pxQueue ) SYSVIEW_RecordU32x4(apiFastID_OFFSET + apiID_XQUEUEGENERICSEND, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), (U32)pvItemToQueue, xTicksToWait, xCopyPosition)
#define traceQUEUE_SEND_FROM_ISR( pxQueue ) SEGGER_SYSVIEW_RecordU32x4(apiFastID_OFFSET + apiID_XQUEUEGENERICSENDFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), (U32)pvItemToQueue, (U32)pxHigherPriorityTaskWoken, xCopyPosition)
#define traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue ) SEGGER_SYSVIEW_RecordU32x4(apiFastID_OFFSET + apiID_XQUEUEGENERICSENDFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), (U32)pvItemToQueue, (U32)pxHigherPriorityTaskWoken, xCopyPosition)
#define traceQUEUE_GIVE_FROM_ISR( pxQueue ) SEGGER_SYSVIEW_RecordU32x2(apiFastID_OFFSET + apiID_XQUEUEGIVEFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), (U32)pxHigherPriorityTaskWoken)
#define traceQUEUE_GIVE_FROM_ISR_FAILED( pxQueue ) SEGGER_SYSVIEW_RecordU32x2(apiFastID_OFFSET + apiID_XQUEUEGIVEFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), (U32)pxHigherPriorityTaskWoken)
#define traceQUEUE_SEND_FROM_ISR( pxQueue ) SEGGER_SYSVIEW_RecordU32x2(apiFastID_OFFSET + apiID_XQUEUEGENERICSENDFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), (U32)pxHigherPriorityTaskWoken)
#define traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue ) SEGGER_SYSVIEW_RecordU32x2(apiFastID_OFFSET + apiID_XQUEUEGENERICSENDFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), (U32)pxHigherPriorityTaskWoken)
#if( portSTACK_GROWTH < 0 )
#define traceTASK_CREATE(pxNewTCB) if (pxNewTCB != NULL) { \
@@ -287,12 +287,12 @@ Notes:
#define traceTASK_SWITCHED_IN() if(prvGetTCBFromHandle(NULL) == xTaskGetIdleTaskHandle()) { \
SEGGER_SYSVIEW_OnIdle(); \
} else { \
SEGGER_SYSVIEW_OnTaskStartExec((U32)pxCurrentTCB[cpu_hal_get_core_id()]); \
SEGGER_SYSVIEW_OnTaskStartExec((U32)pxCurrentTCB[xPortGetCoreID()]); \
}
#else
#define traceTASK_SWITCHED_IN() { \
if (memcmp(pxCurrentTCB[cpu_hal_get_core_id()]->pcTaskName, "IDLE", 5) != 0) { \
SEGGER_SYSVIEW_OnTaskStartExec((U32)pxCurrentTCB[cpu_hal_get_core_id()]); \
if (memcmp(pxCurrentTCB[xPortGetCoreID()]->pcTaskName, "IDLE", 5) != 0) { \
SEGGER_SYSVIEW_OnTaskStartExec((U32)pxCurrentTCB[xPortGetCoreID()]); \
} else { \
SEGGER_SYSVIEW_OnIdle(); \
} \
@@ -302,15 +302,14 @@ Notes:
#define traceMOVED_TASK_TO_READY_STATE(pxTCB) SEGGER_SYSVIEW_OnTaskStartReady((U32)pxTCB)
#define traceREADDED_TASK_TO_READY_STATE(pxTCB)
#define traceMOVED_TASK_TO_DELAYED_LIST() SEGGER_SYSVIEW_OnTaskStopReady((U32)pxCurrentTCB[cpu_hal_get_core_id()], (1u << 2))
#define traceMOVED_TASK_TO_OVERFLOW_DELAYED_LIST() SEGGER_SYSVIEW_OnTaskStopReady((U32)pxCurrentTCB[cpu_hal_get_core_id()], (1u << 2))
#define traceMOVED_TASK_TO_DELAYED_LIST() SEGGER_SYSVIEW_OnTaskStopReady((U32)pxCurrentTCB[xPortGetCoreID()], (1u << 2))
#define traceMOVED_TASK_TO_OVERFLOW_DELAYED_LIST() SEGGER_SYSVIEW_OnTaskStopReady((U32)pxCurrentTCB[xPortGetCoreID()], (1u << 2))
#define traceMOVED_TASK_TO_SUSPENDED_LIST(pxTCB) SEGGER_SYSVIEW_OnTaskStopReady((U32)pxTCB, ((3u << 3) | 3))
#define traceISR_EXIT_TO_SCHEDULER() SEGGER_SYSVIEW_RecordExitISRToScheduler()
#define traceISR_EXIT() SEGGER_SYSVIEW_RecordExitISR()
#define traceISR_ENTER(_n_) SEGGER_SYSVIEW_RecordEnterISR(_n_)
/*********************************************************************
*
* API functions

View File

@@ -1,235 +0,0 @@
/*
* SPDX-FileCopyrightText: 2017-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "string.h"
#include "freertos/FreeRTOS.h"
#include "SEGGER_RTT.h"
#include "SEGGER_SYSVIEW.h"
#include "SEGGER_SYSVIEW_Conf.h"
#include "esp_app_trace.h"
#include "esp_log.h"
const static char *TAG = "segger_rtt";
#define SYSVIEW_EVENTS_BUF_SZ 255U
// size of down channel data buf
#define SYSVIEW_DOWN_BUF_SIZE 32
#define SEGGER_STOP_WAIT_TMO 1000000 //us
#if CONFIG_APPTRACE_SV_BUF_WAIT_TMO == -1
#define SEGGER_HOST_WAIT_TMO ESP_APPTRACE_TMO_INFINITE
#else
#define SEGGER_HOST_WAIT_TMO CONFIG_APPTRACE_SV_BUF_WAIT_TMO
#endif
static uint8_t s_events_buf[SYSVIEW_EVENTS_BUF_SZ];
static uint16_t s_events_buf_filled;
static uint8_t s_down_buf[SYSVIEW_DOWN_BUF_SIZE];
/*********************************************************************
*
* Public code
*
**********************************************************************
*/
/*********************************************************************
*
* SEGGER_RTT_ESP_FlushNoLock()
*
* Function description
* Flushes buffered events.
*
* Parameters
* min_sz Threshold for flushing data. If current filling level is above this value, data will be flushed. TRAX destinations only.
* tmo Timeout for operation (in us). Use ESP_APPTRACE_TMO_INFINITE to wait indefinetly.
*
* Return value
* None.
*/
void SEGGER_RTT_ESP_FlushNoLock(unsigned long min_sz, unsigned long tmo)
{
esp_err_t res;
if (s_events_buf_filled > 0) {
res = esp_apptrace_write(ESP_APPTRACE_DEST_TRAX, s_events_buf, s_events_buf_filled, tmo);
if (res != ESP_OK) {
ESP_LOGE(TAG, "Failed to flush buffered events (%d)!\n", res);
}
}
// flush even if we failed to write buffered events, because no new events will be sent after STOP
res = esp_apptrace_flush_nolock(ESP_APPTRACE_DEST_TRAX, min_sz, tmo);
if (res != ESP_OK) {
ESP_LOGE(TAG, "Failed to flush apptrace data (%d)!\n", res);
}
s_events_buf_filled = 0;
}
/*********************************************************************
*
* SEGGER_RTT_ESP_Flush()
*
* Function description
* Flushes buffered events.
*
* Parameters
* min_sz Threshold for flushing data. If current filling level is above this value, data will be flushed. TRAX destinations only.
* tmo Timeout for operation (in us). Use ESP_APPTRACE_TMO_INFINITE to wait indefinetly.
*
* Return value
* None.
*/
void SEGGER_RTT_ESP_Flush(unsigned long min_sz, unsigned long tmo)
{
SEGGER_SYSVIEW_LOCK();
SEGGER_RTT_ESP_FlushNoLock(min_sz, tmo);
SEGGER_SYSVIEW_UNLOCK();
}
/*********************************************************************
*
* SEGGER_RTT_ReadNoLock()
*
* Function description
* Reads characters from SEGGER real-time-terminal control block
* which have been previously stored by the host.
* Do not lock against interrupts and multiple access.
*
* Parameters
* BufferIndex Index of Down-buffer to be used (e.g. 0 for "Terminal").
* pBuffer Pointer to buffer provided by target application, to copy characters from RTT-down-buffer to.
* BufferSize Size of the target application buffer.
*
* Return value
* Number of bytes that have been read.
*/
unsigned SEGGER_RTT_ReadNoLock(unsigned BufferIndex, void* pData, unsigned BufferSize) {
uint32_t size = BufferSize;
esp_err_t res = esp_apptrace_read(ESP_APPTRACE_DEST_TRAX, pData, &size, 0);
if (res != ESP_OK) {
return 0;
}
return size;
}
/*********************************************************************
*
* SEGGER_RTT_WriteSkipNoLock
*
* Function description
* Stores a specified number of characters in SEGGER RTT
* control block which is then read by the host.
* SEGGER_RTT_WriteSkipNoLock does not lock the application and
* skips all data, if the data does not fit into the buffer.
*
* Parameters
* BufferIndex Index of "Up"-buffer to be used (e.g. 0 for "Terminal").
* pBuffer Pointer to character array. Does not need to point to a \0 terminated string.
* NumBytes Number of bytes to be stored in the SEGGER RTT control block.
*
* Return value
* Number of bytes which have been stored in the "Up"-buffer.
*
* Notes
* (1) If there is not enough space in the "Up"-buffer, all data is dropped.
* (2) For performance reasons this function does not call Init()
* and may only be called after RTT has been initialized.
* Either by calling SEGGER_RTT_Init() or calling another RTT API function first.
*/
unsigned SEGGER_RTT_WriteSkipNoLock(unsigned BufferIndex, const void* pBuffer, unsigned NumBytes) {
uint8_t *pbuf = (uint8_t *)pBuffer;
uint8_t event_id = *pbuf;
if (NumBytes > SYSVIEW_EVENTS_BUF_SZ) {
ESP_LOGE(TAG, "Too large event %u bytes!", NumBytes);
return 0;
}
if (cpu_hal_get_core_id()) { // dual core specific code
// use the highest - 1 bit of event ID to indicate core ID
// the highest bit can not be used due to event ID encoding method
// this reduces supported ID range to [0..63] (for 1 byte IDs) plus [128..16383] (for 2 bytes IDs)
if (*pbuf & 0x80) { // 2 bytes ID
*(pbuf + 1) |= (1 << 6);
} else if (NumBytes != 10 || *pbuf != 0) { // ignore sync sequence
*pbuf |= (1 << 6);
}
}
if (s_events_buf_filled + NumBytes > SYSVIEW_EVENTS_BUF_SZ) {
esp_err_t res = esp_apptrace_write(ESP_APPTRACE_DEST_TRAX, s_events_buf, s_events_buf_filled, SEGGER_HOST_WAIT_TMO);
if (res != ESP_OK) {
return 0; // skip current data buffer only, accumulated events are kept
}
s_events_buf_filled = 0;
}
memcpy(&s_events_buf[s_events_buf_filled], pBuffer, NumBytes);
s_events_buf_filled += NumBytes;
if (event_id == SYSVIEW_EVTID_TRACE_STOP) {
SEGGER_RTT_ESP_FlushNoLock(0, SEGGER_STOP_WAIT_TMO);
}
return NumBytes;
}
/*********************************************************************
*
* SEGGER_RTT_ConfigUpBuffer
*
* Function description
* Run-time configuration of a specific up-buffer (T->H).
* Buffer to be configured is specified by index.
* This includes: Buffer address, size, name, flags, ...
*
* Parameters
* BufferIndex Index of the buffer to configure.
* sName Pointer to a constant name string.
* pBuffer Pointer to a buffer to be used.
* BufferSize Size of the buffer.
* Flags Operating modes. Define behavior if buffer is full (not enough space for entire message).
*
* Return value
* >= 0 - O.K.
* < 0 - Error
*
* Additional information
* Buffer 0 is configured on compile-time.
* May only be called once per buffer.
* Buffer name and flags can be reconfigured using the appropriate functions.
*/
int SEGGER_RTT_ConfigUpBuffer(unsigned BufferIndex, const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags) {
s_events_buf_filled = 0;
return 0;
}
/*********************************************************************
*
* SEGGER_RTT_ConfigDownBuffer
*
* Function description
* Run-time configuration of a specific down-buffer (H->T).
* Buffer to be configured is specified by index.
* This includes: Buffer address, size, name, flags, ...
*
* Parameters
* BufferIndex Index of the buffer to configure.
* sName Pointer to a constant name string.
* pBuffer Pointer to a buffer to be used.
* BufferSize Size of the buffer.
* Flags Operating modes. Define behavior if buffer is full (not enough space for entire message).
*
* Return value
* >= 0 O.K.
* < 0 Error
*
* Additional information
* Buffer 0 is configured on compile-time.
* May only be called once per buffer.
* Buffer name and flags can be reconfigured using the appropriate functions.
*/
int SEGGER_RTT_ConfigDownBuffer(unsigned BufferIndex, const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags) {
esp_apptrace_down_buffer_config(s_down_buf, sizeof(s_down_buf));
return 0;
}
/*************************** End of file ****************************/

View File

@@ -0,0 +1,215 @@
// Copyright 2017 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "string.h"
#include "freertos/FreeRTOS.h"
#include "SEGGER_RTT.h"
#include "SEGGER_SYSVIEW.h"
#include "rom/ets_sys.h"
#include "esp_app_trace.h"
#include "esp_log.h"
const static char *TAG = "segger_rtt";
#define SYSVIEW_EVENTS_BUF_SZ 255U
// size of down channel data buf
#define SYSVIEW_DOWN_BUF_SIZE 32
#define SEGGER_HOST_WAIT_TMO 500 //us
#define SEGGER_STOP_WAIT_TMO 1000000 //us
static uint8_t s_events_buf[SYSVIEW_EVENTS_BUF_SZ];
static uint16_t s_events_buf_filled;
static uint8_t s_down_buf[SYSVIEW_DOWN_BUF_SIZE];
/*********************************************************************
*
* Public code
*
**********************************************************************
*/
/*********************************************************************
*
* SEGGER_RTT_ESP32_FlushNoLock()
*
* Function description
* Flushes buffered events.
*
* Parameters
* min_sz Threshold for flushing data. If current filling level is above this value, data will be flushed. TRAX destinations only.
* tmo Timeout for operation (in us). Use ESP_APPTRACE_TMO_INFINITE to wait indefinetly.
*
* Return value
* None.
*/
void SEGGER_RTT_ESP32_FlushNoLock(unsigned long min_sz, unsigned long tmo)
{
esp_err_t res = esp_apptrace_write(ESP_APPTRACE_DEST_TRAX, s_events_buf, s_events_buf_filled, tmo);
if (res != ESP_OK) {
ESP_LOGE(TAG, "Failed to flush buffered events (%d)!\n", res);
}
// flush even if we failed to write buffered events, because no new events will be sent after STOP
res = esp_apptrace_flush_nolock(ESP_APPTRACE_DEST_TRAX, min_sz, tmo);
if (res != ESP_OK) {
ESP_LOGE(TAG, "Failed to flush apptrace data (%d)!\n", res);
}
s_events_buf_filled = 0;
}
/*********************************************************************
*
* SEGGER_RTT_ReadNoLock()
*
* Function description
* Reads characters from SEGGER real-time-terminal control block
* which have been previously stored by the host.
* Do not lock against interrupts and multiple access.
*
* Parameters
* BufferIndex Index of Down-buffer to be used (e.g. 0 for "Terminal").
* pBuffer Pointer to buffer provided by target application, to copy characters from RTT-down-buffer to.
* BufferSize Size of the target application buffer.
*
* Return value
* Number of bytes that have been read.
*/
unsigned SEGGER_RTT_ReadNoLock(unsigned BufferIndex, void* pData, unsigned BufferSize) {
uint32_t size = BufferSize;
esp_err_t res = esp_apptrace_read(ESP_APPTRACE_DEST_TRAX, pData, &size, 0);
if (res != ESP_OK) {
return 0;
}
return size;
}
/*********************************************************************
*
* SEGGER_RTT_WriteSkipNoLock
*
* Function description
* Stores a specified number of characters in SEGGER RTT
* control block which is then read by the host.
* SEGGER_RTT_WriteSkipNoLock does not lock the application and
* skips all data, if the data does not fit into the buffer.
*
* Parameters
* BufferIndex Index of "Up"-buffer to be used (e.g. 0 for "Terminal").
* pBuffer Pointer to character array. Does not need to point to a \0 terminated string.
* NumBytes Number of bytes to be stored in the SEGGER RTT control block.
*
* Return value
* Number of bytes which have been stored in the "Up"-buffer.
*
* Notes
* (1) If there is not enough space in the "Up"-buffer, all data is dropped.
* (2) For performance reasons this function does not call Init()
* and may only be called after RTT has been initialized.
* Either by calling SEGGER_RTT_Init() or calling another RTT API function first.
*/
unsigned SEGGER_RTT_WriteSkipNoLock(unsigned BufferIndex, const void* pBuffer, unsigned NumBytes) {
uint8_t *pbuf = (uint8_t *)pBuffer;
uint8_t event_id = *pbuf;
if (NumBytes > SYSVIEW_EVENTS_BUF_SZ) {
ESP_LOGE(TAG, "Too large event %u bytes!", NumBytes);
return 0;
}
if (xPortGetCoreID()) { // dual core specific code
// use the highest - 1 bit of event ID to indicate core ID
// the highest bit can not be used due to event ID encoding method
// this reduces supported ID range to [0..63] (for 1 byte IDs) plus [128..16383] (for 2 bytes IDs)
if (*pbuf & 0x80) { // 2 bytes ID
*(pbuf + 1) |= (1 << 6);
} else if (NumBytes != 10 || *pbuf != 0) { // ignore sync sequence
*pbuf |= (1 << 6);
}
}
if (s_events_buf_filled + NumBytes > SYSVIEW_EVENTS_BUF_SZ) {
esp_err_t res = esp_apptrace_write(ESP_APPTRACE_DEST_TRAX, s_events_buf, s_events_buf_filled, SEGGER_HOST_WAIT_TMO);
if (res != ESP_OK) {
return 0; // skip current data buffer only, accumulated events are kept
}
s_events_buf_filled = 0;
}
memcpy(&s_events_buf[s_events_buf_filled], pBuffer, NumBytes);
s_events_buf_filled += NumBytes;
if (event_id == SYSVIEW_EVTID_TRACE_STOP) {
SEGGER_RTT_ESP32_FlushNoLock(0, SEGGER_STOP_WAIT_TMO);
}
return NumBytes;
}
/*********************************************************************
*
* SEGGER_RTT_ConfigUpBuffer
*
* Function description
* Run-time configuration of a specific up-buffer (T->H).
* Buffer to be configured is specified by index.
* This includes: Buffer address, size, name, flags, ...
*
* Parameters
* BufferIndex Index of the buffer to configure.
* sName Pointer to a constant name string.
* pBuffer Pointer to a buffer to be used.
* BufferSize Size of the buffer.
* Flags Operating modes. Define behavior if buffer is full (not enough space for entire message).
*
* Return value
* >= 0 - O.K.
* < 0 - Error
*
* Additional information
* Buffer 0 is configured on compile-time.
* May only be called once per buffer.
* Buffer name and flags can be reconfigured using the appropriate functions.
*/
int SEGGER_RTT_ConfigUpBuffer(unsigned BufferIndex, const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags) {
s_events_buf_filled = 0;
return 0;
}
/*********************************************************************
*
* SEGGER_RTT_ConfigDownBuffer
*
* Function description
* Run-time configuration of a specific down-buffer (H->T).
* Buffer to be configured is specified by index.
* This includes: Buffer address, size, name, flags, ...
*
* Parameters
* BufferIndex Index of the buffer to configure.
* sName Pointer to a constant name string.
* pBuffer Pointer to a buffer to be used.
* BufferSize Size of the buffer.
* Flags Operating modes. Define behavior if buffer is full (not enough space for entire message).
*
* Return value
* >= 0 O.K.
* < 0 Error
*
* Additional information
* Buffer 0 is configured on compile-time.
* May only be called once per buffer.
* Buffer name and flags can be reconfigured using the appropriate functions.
*/
int SEGGER_RTT_ConfigDownBuffer(unsigned BufferIndex, const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags) {
esp_apptrace_down_buffer_config(s_down_buf, sizeof(s_down_buf));
return 0;
}
/*************************** End of file ****************************/

View File

@@ -1,92 +0,0 @@
/*
* SPDX-FileCopyrightText: 2018-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <stdint.h>
#include <sdkconfig.h>
#include "SEGGER_SYSVIEW.h"
#include "SEGGER_RTT.h"
#include "esp_app_trace.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
const static char *TAG = "sysview_heap_trace";
#ifdef CONFIG_HEAP_TRACING_STACK_DEPTH
#define CALLSTACK_SIZE CONFIG_HEAP_TRACING_STACK_DEPTH
#else
#define CALLSTACK_SIZE 0
#endif
static SEGGER_SYSVIEW_MODULE s_esp_sysview_heap_module = {
.sModule = "ESP32 SystemView Heap Tracing Module",
.NumEvents = 2,
};
static bool s_mod_registered;
esp_err_t esp_sysview_heap_trace_start(uint32_t tmo)
{
uint32_t tmo_ticks = tmo/(1000*portTICK_PERIOD_MS);
ESP_EARLY_LOGV(TAG, "%s", __func__);
do {
if (tmo != (uint32_t)-1) {
// Currently timeout implementation is simple and has granularity of 1 OS tick,
// so just count down the number of times to call vTaskDelay
if (tmo_ticks-- == 0) {
return ESP_ERR_TIMEOUT;
}
}
vTaskDelay(1);
} while(!SEGGER_SYSVIEW_Started());
SEGGER_SYSVIEW_RegisterModule(&s_esp_sysview_heap_module);
s_mod_registered = true;
return ESP_OK;
}
esp_err_t esp_sysview_heap_trace_stop(void)
{
ESP_EARLY_LOGV(TAG, "%s", __func__);
SEGGER_RTT_ESP_Flush(0, ESP_APPTRACE_TMO_INFINITE);
return ESP_OK;
}
void esp_sysview_heap_trace_alloc(const void *addr, uint32_t size, const void *callers)
{
U8 aPacket[SEGGER_SYSVIEW_INFO_SIZE + (2+CALLSTACK_SIZE)*SEGGER_SYSVIEW_QUANTA_U32];
U8* pPayload = SEGGER_SYSVIEW_PREPARE_PACKET(aPacket);
U32 *calls = (U32 *)callers;
if (!s_mod_registered) {
return;
}
ESP_EARLY_LOGV(TAG, "%s %p %lu", __func__, addr, size);
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, (U32)addr);
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, size);
for (int i = 0; i < CALLSTACK_SIZE; i++) {
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, calls[i]);
}
SEGGER_SYSVIEW_SendPacket(&aPacket[0], pPayload, s_esp_sysview_heap_module.EventOffset + 0);
}
void esp_sysview_heap_trace_free(const void *addr, const void *callers)
{
U8 aPacket[SEGGER_SYSVIEW_INFO_SIZE + (1+CALLSTACK_SIZE)*SEGGER_SYSVIEW_QUANTA_U32];
U8* pPayload = SEGGER_SYSVIEW_PREPARE_PACKET(aPacket);
U32 *calls = (U32 *)callers;
if (!s_mod_registered) {
return;
}
ESP_EARLY_LOGV(TAG, "%s %p", __func__, addr);
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, (U32)addr);
for (int i = 0; i < CALLSTACK_SIZE; i++) {
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, calls[i]);
}
SEGGER_SYSVIEW_SendPacket(&aPacket[0], pPayload, s_esp_sysview_heap_module.EventOffset + 1);
}

View File

@@ -1,26 +0,0 @@
/*
* SPDX-FileCopyrightText: 2018-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <stdio.h>
#include <stdarg.h>
#include <sdkconfig.h>
#include "SEGGER_SYSVIEW_Int.h"
#include "freertos/FreeRTOS.h"
static portMUX_TYPE s_log_mutex = portMUX_INITIALIZER_UNLOCKED;
int esp_sysview_vprintf(const char * format, va_list args)
{
static char log_buffer[SEGGER_SYSVIEW_MAX_STRING_LEN];
portENTER_CRITICAL(&s_log_mutex);
size_t len = vsnprintf(log_buffer, sizeof(log_buffer), format, args);
if (len > sizeof(log_buffer) - 1) {
log_buffer[sizeof(log_buffer - 1)] = 0;
}
SEGGER_SYSVIEW_Print(log_buffer);
portEXIT_CRITICAL(&s_log_mutex);
return len;
}

View File

@@ -1,3 +1,6 @@
idf_component_register(SRC_DIRS "."
PRIV_INCLUDE_DIRS "."
PRIV_REQUIRES cmock driver)
set(COMPONENT_SRCDIRS ".")
set(COMPONENT_ADD_INCLUDEDIRS ".")
set(COMPONENT_REQUIRES unity)
register_component()

View File

@@ -1,8 +1,3 @@
/*
* SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <stddef.h>
#include <stdint.h>
#include <string.h>
@@ -10,12 +5,11 @@
#include <stdarg.h>
#include "unity.h"
#include "driver/timer.h"
#include "esp_rom_sys.h"
#include "soc/cpu.h"
#include "freertos/FreeRTOS.h"
#include "freertos/semphr.h"
#include "freertos/task.h"
#if CONFIG_APPTRACE_ENABLE == 1
#if CONFIG_ESP32_APPTRACE_ENABLE == 1
#include "esp_app_trace.h"
#include "esp_app_trace_util.h"
@@ -37,7 +31,7 @@ const static char *TAG = "esp_apptrace_test";
else \
ret = xSemaphoreTake(s_print_lock, portMAX_DELAY); \
if (ret == pdTRUE) { \
esp_rom_printf(format, ##__VA_ARGS__); \
ets_printf(format, ##__VA_ARGS__); \
if (xPortInIsrContext()) \
xSemaphoreGiveFromISR(s_print_lock, NULL); \
else \
@@ -47,7 +41,7 @@ const static char *TAG = "esp_apptrace_test";
#else
#define ESP_APPTRACE_TEST_LOG( format, ... ) \
do { \
esp_rom_printf(format, ##__VA_ARGS__); \
ets_printf(format, ##__VA_ARGS__); \
} while(0)
#endif
@@ -88,7 +82,7 @@ static void esp_apptrace_test_timer_init(int timer_group, int timer_idx, uint32_
timer_enable_intr(timer_group, timer_idx);
}
#if CONFIG_APPTRACE_SV_ENABLE == 0
#if CONFIG_SYSVIEW_ENABLE == 0
#define ESP_APPTRACE_TEST_WRITE(_b_, _s_) esp_apptrace_write(ESP_APPTRACE_DEST_TRAX, _b_, _s_, ESP_APPTRACE_TMO_INFINITE)
#define ESP_APPTRACE_TEST_WRITE_FROM_ISR(_b_, _s_) esp_apptrace_write(ESP_APPTRACE_DEST_TRAX, _b_, _s_, 0UL)
#define ESP_APPTRACE_TEST_WRITE_NOWAIT(_b_, _s_) esp_apptrace_write(ESP_APPTRACE_DEST_TRAX, _b_, _s_, 0)
@@ -131,7 +125,7 @@ typedef struct {
static SemaphoreHandle_t s_print_lock;
#endif
static uint64_t esp_apptrace_test_ts_get(void);
static uint64_t esp_apptrace_test_ts_get();
static void esp_apptrace_test_timer_isr(void *arg)
{
@@ -144,32 +138,72 @@ static void esp_apptrace_test_timer_isr(void *arg)
if (res != ESP_OK) {
} else {
if (0) {
esp_rom_printf("tim-%d-%d: Written chunk%d %d bytes, %x\n",
ets_printf("tim-%d-%d: Written chunk%d %d bytes, %x\n",
tim_arg->group, tim_arg->id, tim_arg->data.wr_cnt, tim_arg->data.buf_sz, tim_arg->data.wr_cnt & tim_arg->data.mask);
}
tim_arg->data.wr_err = 0;
}
tim_arg->data.wr_cnt++;
timer_group_clr_intr_status_in_isr(tim_arg->group, tim_arg->id);
timer_group_enable_alarm_in_isr(tim_arg->group, tim_arg->id);
if (tim_arg->group == 0) {
if (tim_arg->id == 0) {
TIMERG0.int_clr_timers.t0 = 1;
TIMERG0.hw_timer[0].update = 1;
TIMERG0.hw_timer[0].config.alarm_en = 1;
} else {
TIMERG0.int_clr_timers.t1 = 1;
TIMERG0.hw_timer[1].update = 1;
TIMERG0.hw_timer[1].config.alarm_en = 1;
}
}
if (tim_arg->group == 1) {
if (tim_arg->id == 0) {
TIMERG1.int_clr_timers.t0 = 1;
TIMERG1.hw_timer[0].update = 1;
TIMERG1.hw_timer[0].config.alarm_en = 1;
} else {
TIMERG1.int_clr_timers.t1 = 1;
TIMERG1.hw_timer[1].update = 1;
TIMERG1.hw_timer[1].config.alarm_en = 1;
}
}
}
static void esp_apptrace_test_timer_isr_crash(void *arg)
{
esp_apptrace_test_timer_arg_t *tim_arg = (esp_apptrace_test_timer_arg_t *)arg;
timer_group_clr_intr_status_in_isr(tim_arg->group, tim_arg->id);
timer_group_enable_alarm_in_isr(tim_arg->group, tim_arg->id);
if (tim_arg->group == 0) {
if (tim_arg->id == 0) {
TIMERG0.int_clr_timers.t0 = 1;
TIMERG0.hw_timer[0].update = 1;
TIMERG0.hw_timer[0].config.alarm_en = 1;
} else {
TIMERG0.int_clr_timers.t1 = 1;
TIMERG0.hw_timer[1].update = 1;
TIMERG0.hw_timer[1].config.alarm_en = 1;
}
}
if (tim_arg->group == 1) {
if (tim_arg->id == 0) {
TIMERG1.int_clr_timers.t0 = 1;
TIMERG1.hw_timer[0].update = 1;
TIMERG1.hw_timer[0].config.alarm_en = 1;
} else {
TIMERG1.int_clr_timers.t1 = 1;
TIMERG1.hw_timer[1].update = 1;
TIMERG1.hw_timer[1].config.alarm_en = 1;
}
}
if (tim_arg->data.wr_cnt < ESP_APPTRACE_TEST_BLOCKS_BEFORE_CRASH) {
uint32_t *ts = (uint32_t *)(tim_arg->data.buf + sizeof(uint32_t));
*ts = (uint32_t)esp_apptrace_test_ts_get();//xthal_get_ccount();//xTaskGetTickCount();
memset(tim_arg->data.buf + 2 * sizeof(uint32_t), tim_arg->data.wr_cnt & tim_arg->data.mask, tim_arg->data.buf_sz - 2 * sizeof(uint32_t));
int res = ESP_APPTRACE_TEST_WRITE_FROM_ISR(tim_arg->data.buf, tim_arg->data.buf_sz);
if (res != ESP_OK) {
esp_rom_printf("tim-%d-%d: Failed to write trace %d %x!\n", tim_arg->group, tim_arg->id, res, tim_arg->data.wr_cnt & tim_arg->data.mask);
ets_printf("tim-%d-%d: Failed to write trace %d %x!\n", tim_arg->group, tim_arg->id, res, tim_arg->data.wr_cnt & tim_arg->data.mask);
} else {
esp_rom_printf("tim-%d-%d: Written chunk%d %d bytes, %x\n",
ets_printf("tim-%d-%d: Written chunk%d %d bytes, %x\n",
tim_arg->group, tim_arg->id, tim_arg->data.wr_cnt, tim_arg->data.buf_sz, tim_arg->data.wr_cnt & tim_arg->data.mask);
tim_arg->data.wr_cnt++;
}
@@ -214,7 +248,7 @@ static void esp_apptrace_dummy_task(void *p)
i = 0;
while (!arg->stop) {
ESP_APPTRACE_TEST_LOGD("%x: dummy task work %d.%d", xTaskGetCurrentTaskHandle(), cpu_hal_get_core_id(), i++);
ESP_APPTRACE_TEST_LOGD("%x: dummy task work %d.%d", xTaskGetCurrentTaskHandle(), xPortGetCoreID(), i++);
if (tmo_ticks) {
vTaskDelay(tmo_ticks);
}
@@ -259,7 +293,7 @@ static void esp_apptrace_test_task(void *p)
ESP_APPTRACE_TEST_LOGE("Failed to timer_isr_register (%d)!", res);
goto on_fail;
}
*(uint32_t *)arg->timers[i].data.buf = ((uint32_t)inth[i]) | (1 << 31) | (cpu_hal_get_core_id() ? 0x1 : 0);
*(uint32_t *)arg->timers[i].data.buf = ((uint32_t)inth[i]) | (1 << 31) | (xPortGetCoreID() ? 0x1 : 0);
ESP_APPTRACE_TEST_LOGI("%x: start timer %x period %u us", xTaskGetCurrentTaskHandle(), inth[i], arg->timers[i].data.period);
res = timer_start(arg->timers[i].group, arg->timers[i].id);
if (res != ESP_OK) {
@@ -269,7 +303,7 @@ static void esp_apptrace_test_task(void *p)
}
}
*(uint32_t *)arg->data.buf = (uint32_t)xTaskGetCurrentTaskHandle() | (cpu_hal_get_core_id() ? 0x1 : 0);
*(uint32_t *)arg->data.buf = (uint32_t)xTaskGetCurrentTaskHandle() | (xPortGetCoreID() ? 0x1 : 0);
arg->data.wr_cnt = 0;
arg->data.wr_err = 0;
while (!arg->stop) {
@@ -349,7 +383,7 @@ static void esp_apptrace_test_task_crash(void *p)
static int s_ts_timer_group, s_ts_timer_idx;
static uint64_t esp_apptrace_test_ts_get(void)
static uint64_t esp_apptrace_test_ts_get()
{
uint64_t ts = 0;
timer_get_counter_value(s_ts_timer_group, s_ts_timer_idx, &ts);
@@ -379,7 +413,7 @@ static void esp_apptrace_test_ts_init(int timer_group, int timer_idx)
timer_start(timer_group, timer_idx);
}
static void esp_apptrace_test_ts_cleanup(void)
static void esp_apptrace_test_ts_cleanup()
{
timer_config_t config;
@@ -410,7 +444,7 @@ static void esp_apptrace_test(esp_apptrace_test_cfg_t *test_cfg)
#if ESP_APPTRACE_TEST_USE_PRINT_LOCK == 1
s_print_lock = xSemaphoreCreateBinary();
if (!s_print_lock) {
esp_rom_printf("%s: Failed to create print lock!", TAG);
ets_printf("%s: Failed to create print lock!", TAG);
return;
}
xSemaphoreGive(s_print_lock);
@@ -749,7 +783,7 @@ static void esp_logtrace_task(void *p)
ESP_LOGI(TAG, "%p: sample print 4 %c", xTaskGetCurrentTaskHandle(), ((i & 0xFF) % 95) + 32);
ESP_LOGI(TAG, "%p: sample print 5 %f", xTaskGetCurrentTaskHandle(), 1.0);
ESP_LOGI(TAG, "%p: sample print 6 %f", xTaskGetCurrentTaskHandle(), 3.45);
ESP_LOGI(TAG, "%p: logtrace task work %d.%d", xTaskGetCurrentTaskHandle(), cpu_hal_get_core_id(), i);
ESP_LOGI(TAG, "%p: logtrace task work %d.%d", xTaskGetCurrentTaskHandle(), xPortGetCoreID(), i);
if (++i == 10000) {
break;
}
@@ -816,8 +850,28 @@ static void esp_sysview_test_timer_isr(void *arg)
//ESP_APPTRACE_TEST_LOGI("tim-%d: IRQ %d/%d\n", tim_arg->id, tim_arg->group, tim_arg->timer);
timer_group_clr_intr_status_in_isr(tim_arg->group, tim_arg->id);
timer_group_enable_alarm_in_isr(tim_arg->group, tim_arg->id);
if (tim_arg->group == 0) {
if (tim_arg->timer == 0) {
TIMERG0.int_clr_timers.t0 = 1;
TIMERG0.hw_timer[0].update = 1;
TIMERG0.hw_timer[0].config.alarm_en = 1;
} else {
TIMERG0.int_clr_timers.t1 = 1;
TIMERG0.hw_timer[1].update = 1;
TIMERG0.hw_timer[1].config.alarm_en = 1;
}
}
if (tim_arg->group == 1) {
if (tim_arg->timer == 0) {
TIMERG1.int_clr_timers.t0 = 1;
TIMERG1.hw_timer[0].update = 1;
TIMERG1.hw_timer[0].config.alarm_en = 1;
} else {
TIMERG1.int_clr_timers.t1 = 1;
TIMERG1.hw_timer[1].update = 1;
TIMERG1.hw_timer[1].config.alarm_en = 1;
}
}
}
static void esp_sysviewtrace_test_task(void *p)

View File

@@ -1,89 +1,40 @@
idf_component_register(SRCS "esp_ota_ops.c"
"esp_app_desc.c"
INCLUDE_DIRS "include"
REQUIRES spi_flash partition_table bootloader_support
PRIV_REQUIRES esptool_py efuse)
set(COMPONENT_SRCS "esp_ota_ops.c"
"esp_app_desc.c")
set(COMPONENT_ADD_INCLUDEDIRS "include")
# esp_app_desc structure is added as an undefined symbol because otherwise the
set(COMPONENT_REQUIRES spi_flash partition_table bootloader_support)
register_component()
# esp_app_desc structure is added as an undefined symbol because otherwise the
# linker will ignore this structure as it has no other files depending on it.
target_link_libraries(${COMPONENT_LIB} INTERFACE "-u esp_app_desc")
if(CONFIG_APP_PROJECT_VER_FROM_CONFIG)
# Ignore current PROJECT_VER (which was set in __project_get_revision()).
# Gets the version from the CONFIG_APP_PROJECT_VER.
idf_build_set_property(PROJECT_VER "${CONFIG_APP_PROJECT_VER}")
endif()
target_link_libraries(${COMPONENT_TARGET} "-u esp_app_desc")
# cut PROJECT_VER and PROJECT_NAME to required 32 characters.
idf_build_get_property(project_ver PROJECT_VER)
idf_build_get_property(project_name PROJECT_NAME)
string(SUBSTRING "${project_ver}" 0 31 PROJECT_VER_CUT)
string(SUBSTRING "${project_name}" 0 31 PROJECT_NAME_CUT)
message(STATUS "App \"${PROJECT_NAME_CUT}\" version: ${PROJECT_VER_CUT}")
string(SUBSTRING "${PROJECT_VER}" 0 31 PROJECT_VER_CUT)
string(SUBSTRING "${PROJECT_NAME}" 0 31 PROJECT_NAME_CUT)
set_source_files_properties(
SOURCE "esp_app_desc.c"
PROPERTIES COMPILE_DEFINITIONS
PROPERTIES COMPILE_DEFINITIONS
"PROJECT_VER=\"${PROJECT_VER_CUT}\"; PROJECT_NAME=\"${PROJECT_NAME_CUT}\"")
if(NOT BOOTLOADER_BUILD)
partition_table_get_partition_info(otadata_offset "--partition-type data --partition-subtype ota" "offset")
partition_table_get_partition_info(otadata_size "--partition-type data --partition-subtype ota" "size")
# Add custom target for generating empty otadata partition for flashing
if(OTADATA_PARTITION_OFFSET AND OTADATA_PARTITION_SIZE)
add_custom_command(OUTPUT "${IDF_BUILD_ARTIFACTS_DIR}/${BLANK_OTADATA_FILE}"
COMMAND ${PYTHON} ${IDF_PATH}/components/partition_table/parttool.py
--partition-type data --partition-subtype ota -q
--partition-table-file ${PARTITION_CSV_PATH} generate_blank_partition_file
--output "${IDF_BUILD_ARTIFACTS_DIR}/${BLANK_OTADATA_FILE}")
# Add custom target for generating empty otadata partition for flashing
if(otadata_size AND otadata_offset)
idf_build_get_property(build_dir BUILD_DIR)
set(blank_otadata_file ${build_dir}/ota_data_initial.bin)
idf_build_get_property(idf_path IDF_PATH)
idf_build_get_property(python PYTHON)
idf_component_get_property(partition_table_dir partition_table COMPONENT_DIR)
add_custom_command(OUTPUT ${blank_otadata_file}
COMMAND ${python} ${partition_table_dir}/gen_empty_partition.py
${otadata_size} ${blank_otadata_file})
add_custom_target(blank_ota_data ALL DEPENDS ${blank_otadata_file})
add_dependencies(flash blank_ota_data)
add_dependencies(encrypted-flash blank_ota_data)
set(otatool_py ${python} ${COMPONENT_DIR}/otatool.py)
set(esptool_args "--esptool-args;before=${CONFIG_ESPTOOLPY_BEFORE};after=${CONFIG_ESPTOOLPY_AFTER}")
set(otatool_args "--partition-table-file;${PARTITION_CSV_PATH}"
"--partition-table-offset;${PARTITION_TABLE_OFFSET}")
idf_component_get_property(esptool_py_dir esptool_py COMPONENT_DIR)
add_custom_target(read-otadata DEPENDS "${PARTITION_CSV_PATH}"
COMMAND ${CMAKE_COMMAND}
-D IDF_PATH="${idf_path}"
-D SERIAL_TOOL="${otatool_py}"
-D SERIAL_TOOL_ARGS="${esptool_args};${otatool_args};read_otadata"
-D WORKING_DIRECTORY="${build_dir}"
-P ${esptool_py_dir}/run_serial_tool.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
USES_TERMINAL
)
add_deprecated_target_alias(read_otadata read-otadata)
add_custom_target(erase-otadata DEPENDS "${PARTITION_CSV_PATH}"
COMMAND ${CMAKE_COMMAND}
-D IDF_PATH="${idf_path}"
-D SERIAL_TOOL="${otatool_py}"
-D SERIAL_TOOL_ARGS="${esptool_args};${otatool_args};erase_otadata"
-D WORKING_DIRECTORY="${build_dir}"
-P ${esptool_py_dir}/run_serial_tool.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
USES_TERMINAL
)
add_deprecated_target_alias(erase_otadata erase-otadata)
idf_component_get_property(main_args esptool_py FLASH_ARGS)
idf_component_get_property(sub_args esptool_py FLASH_SUB_ARGS)
esptool_py_flash_target(otadata-flash "${main_args}" "${sub_args}")
esptool_py_flash_target_image(otadata-flash otadata "${otadata_offset}" "${blank_otadata_file}")
esptool_py_flash_target_image(flash otadata "${otadata_offset}" "${blank_otadata_file}")
endif()
add_custom_target(blank_ota_data ALL DEPENDS "${IDF_BUILD_ARTIFACTS_DIR}/${BLANK_OTADATA_FILE}")
add_dependencies(flash blank_ota_data)
endif()
set(otatool_py ${PYTHON} ${COMPONENT_PATH}/otatool.py)
add_custom_target(read_otadata DEPENDS "${PARTITION_CSV_PATH}"
COMMAND ${otatool_py} --partition-table-file ${PARTITION_CSV_PATH} read_otadata)
add_custom_target(erase_otadata DEPENDS "${PARTITION_CSV_PATH}"
COMMAND ${otatool_py} --partition-table-file ${PARTITION_CSV_PATH} erase_otadata)

View File

@@ -22,20 +22,6 @@ menu "Application manager"
The PROJECT_NAME variable from the build system will not affect the firmware image.
This value will not be contained in the esp_app_desc structure.
config APP_PROJECT_VER_FROM_CONFIG
bool "Get the project version from Kconfig"
default n
help
If this is enabled, then config item APP_PROJECT_VER will be used for the variable PROJECT_VER.
Other ways to set PROJECT_VER will be ignored.
config APP_PROJECT_VER
string "Project version"
default "1"
depends on APP_PROJECT_VER_FROM_CONFIG
help
Project version
config APP_RETRIEVE_LEN_ELF_SHA
int "The length of APP ELF SHA is stored in RAM(chars)"
default 16

View File

@@ -17,34 +17,29 @@ endif
$(BLANK_OTA_DATA_FILE): partition_table_get_info $(PARTITION_TABLE_CSV_PATH) | check_python_dependencies
$(shell if [ "$(OTA_DATA_OFFSET)" != "" ] && [ "$(OTA_DATA_SIZE)" != "" ]; then \
$(PYTHON) $(IDF_PATH)/components/partition_table/gen_empty_partition.py $(OTA_DATA_SIZE) $(BLANK_OTA_DATA_FILE); \
$(PARTTOOL_PY) --partition-type data --partition-subtype ota --partition-table-file $(PARTITION_TABLE_CSV_PATH) \
-q generate_blank_partition_file --output $(BLANK_OTA_DATA_FILE); \
fi; )
$(eval BLANK_OTA_DATA_FILE = $(shell if [ "$(OTA_DATA_OFFSET)" != "" ] && [ "$(OTA_DATA_SIZE)" != "" ]; then \
echo $(BLANK_OTA_DATA_FILE); else echo " "; fi) )
blank_ota_data: $(BLANK_OTA_DATA_FILE)
# If there is no otadata partition, both OTA_DATA_OFFSET and BLANK_OTA_DATA_FILE
# If there is no otadata partition, both OTA_DATA_OFFSET and BLANK_OTA_DATA_FILE
# expand to empty values.
ESPTOOL_ALL_FLASH_ARGS += $(OTA_DATA_OFFSET) $(BLANK_OTA_DATA_FILE)
ESPTOOL_ARGS := --esptool-args port=$(CONFIG_ESPTOOLPY_PORT) baud=$(CONFIG_ESPTOOLPY_BAUD) before=$(CONFIG_ESPTOOLPY_BEFORE) after=$(CONFIG_ESPTOOLPY_AFTER)
erase_otadata: $(PARTITION_TABLE_CSV_PATH) partition_table_get_info | check_python_dependencies
$(OTATOOL_PY) $(ESPTOOL_ARGS) --partition-table-file $(PARTITION_TABLE_CSV_PATH) \
--partition-table-offset $(PARTITION_TABLE_OFFSET) \
erase_otadata
$(OTATOOL_PY) --partition-table-file $(PARTITION_TABLE_CSV_PATH) erase_otadata
read_otadata: $(PARTITION_TABLE_CSV_PATH) partition_table_get_info | check_python_dependencies
$(OTATOOL_PY) $(ESPTOOL_ARGS) --partition-table-file $(PARTITION_TABLE_CSV_PATH) \
--partition-table-offset $(partition_table_offset) \
read_otadata
$(OTATOOL_PY) --partition-table-file $(PARTITION_TABLE_CSV_PATH) read_otadata
erase_ota: erase_otadata
@echo "WARNING: erase_ota is deprecated. Use erase_otadata instead."
all: blank_ota_data
flash: blank_ota_data
ifdef CONFIG_SECURE_FLASH_ENCRYPTION_MODE_DEVELOPMENT
encrypted-flash: blank_ota_data
endif
TMP_DEFINES := $(BUILD_DIR_BASE)/app_update/tmp_cppflags.txt
export TMP_DEFINES

View File

@@ -3,54 +3,54 @@
#
# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.)
# esp_app_desc structure is added as an undefined symbol because otherwise the
# esp_app_desc structure is added as an undefined symbol because otherwise the
# linker will ignore this structure as it has no other files depending on it.
COMPONENT_ADD_LDFLAGS += -u esp_app_desc
ifndef IS_BOOTLOADER_BUILD
# If ``CONFIG_APP_PROJECT_VER_FROM_CONFIG`` option is set, the value of ``CONFIG_APP_PROJECT_VER`` will be used
# Else, if ``PROJECT_VER`` variable set in project Makefile file, its value will be used.
# Else, if the ``$PROJECT_PATH/version.txt`` exists, its contents will be used as ``PROJECT_VER``.
# Else, if the project is located inside a Git repository, the output of git describe will be used.
# Otherwise, ``PROJECT_VER`` will be "1".
ifdef CONFIG_APP_PROJECT_VER_FROM_CONFIG
PROJECT_VER:= $(CONFIG_APP_PROJECT_VER)
else
ifneq ("${PROJECT_VER}", "")
PROJECT_VER:= $(PROJECT_VER)
else
ifneq ("$(wildcard ${PROJECT_PATH}/version.txt)","")
PROJECT_VER := $(shell cat ${PROJECT_PATH}/version.txt)
else
GIT_PROJECT_VER := $(shell cd ${PROJECT_PATH} && git describe --always --tags --dirty 2> /dev/null)
ifeq ("${GIT_PROJECT_VER}", "")
PROJECT_VER := "1"
$(info Project is not inside a git repository, or git repository has no commits)
$(info will not use 'git describe' to determine PROJECT_VER.)
else
PROJECT_VER:= $(GIT_PROJECT_VER)
endif # a git repository
endif # version.txt
endif # PROJECT_VER
endif # CONFIG_APP_PROJECT_VER_FROM_CONFIG
GET_PROJECT_VER ?=
ifeq ("${PROJECT_VER}", "")
ifeq ("$(wildcard ${PROJECT_PATH}/version.txt)","")
# cut PROJECT_VER and PROJECT_NAME to required 32 characters.
PROJECT_VER_CUT := $(shell echo "$(PROJECT_VER)" | cut -c 1-31)
PROJECT_NAME_CUT := $(shell echo "$(PROJECT_NAME)" | cut -c 1-31)
GET_PROJECT_VER := $(shell cd ${PROJECT_PATH} && git describe --always --tags --dirty 2> /dev/null)
ifeq ("${GET_PROJECT_VER}", "")
GET_PROJECT_VER := "1"
$(info Project is not inside a git repository, will not use 'git describe' to determine PROJECT_VER.)
endif
$(info App "$(PROJECT_NAME_CUT)" version: $(PROJECT_VER_CUT))
else
# read from version.txt
GET_PROJECT_VER := $(shell cat ${PROJECT_PATH}/version.txt)
endif
endif
# If ``PROJECT_VER`` variable set in project Makefile file, its value will be used.
# Else, if the ``$PROJECT_PATH/version.txt`` exists, its contents will be used as ``PROJECT_VER``.
# Else, if the project is located inside a Git repository, the output of git describe will be used.
# Otherwise, ``PROJECT_VER`` will be "1".
NEW_DEFINES:= "$(PROJECT_VER_CUT) $(PROJECT_NAME_CUT) $(IDF_VER)"
ifeq ("$(wildcard ${TMP_DEFINES})","")
OLD_DEFINES:= ""
else
OLD_DEFINES:= "$(shell cat $(TMP_DEFINES))"
endif
ifeq ("${PROJECT_VER}", "")
PROJECT_VER:= $(GET_PROJECT_VER)
else
PROJECT_VER:= $(PROJECT_VER)
endif
# If NEW_DEFINES (PROJECT_VER, PROJECT_NAME) were changed then rebuild only esp_app_desc.
ifneq (${NEW_DEFINES}, ${OLD_DEFINES})
$(shell echo $(NEW_DEFINES) > $(TMP_DEFINES); rm -f esp_app_desc.o;)
endif
# cut PROJECT_VER and PROJECT_NAME to required 32 characters.
PROJECT_VER_CUT := $(shell echo "$(PROJECT_VER)" | cut -c 1-31)
PROJECT_NAME_CUT := $(shell echo "$(PROJECT_NAME)" | cut -c 1-31)
esp_app_desc.o: CPPFLAGS += -D PROJECT_VER=\""$(PROJECT_VER_CUT)"\" -D PROJECT_NAME=\""$(PROJECT_NAME_CUT)"\"
endif # IS_BOOTLOADER_BUILD
$(info App "$(PROJECT_NAME_CUT)" version: $(PROJECT_VER_CUT))
NEW_DEFINES:= "$(PROJECT_VER_CUT) $(PROJECT_NAME_CUT) $(IDF_VER)"
ifeq ("$(wildcard ${TMP_DEFINES})","")
OLD_DEFINES:= ""
else
OLD_DEFINES:= "$(shell cat $(TMP_DEFINES))"
endif
# If NEW_DEFINES (PROJECT_VER, PROJECT_NAME) were changed then rebuild only esp_app_desc.
ifneq (${NEW_DEFINES}, ${OLD_DEFINES})
$(shell echo $(NEW_DEFINES) > $(TMP_DEFINES); rm -f esp_app_desc.o;)
endif
esp_app_desc.o: CPPFLAGS += -D PROJECT_VER=\""$(PROJECT_VER_CUT)"\" -D PROJECT_NAME=\""$(PROJECT_NAME_CUT)"\"
endif

View File

@@ -1,8 +1,16 @@
/*
* SPDX-FileCopyrightText: 2017-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
// Copyright 2017-2018 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include <assert.h>
#include <sys/param.h>
@@ -26,8 +34,8 @@ const __attribute__((section(".rodata_desc"))) esp_app_desc_t esp_app_desc = {
#endif
.idf_ver = IDF_VER,
#ifdef CONFIG_BOOTLOADER_APP_SECURE_VERSION
.secure_version = CONFIG_BOOTLOADER_APP_SECURE_VERSION,
#ifdef CONFIG_APP_SECURE_VERSION
.secure_version = CONFIG_APP_SECURE_VERSION,
#else
.secure_version = 0,
#endif
@@ -72,7 +80,7 @@ __attribute__((constructor)) void esp_ota_init_app_elf_sha256(void)
/* The esp_app_desc.app_elf_sha256 should be possible to print in panic handler during cache is disabled.
* But because the cache is disabled the reading esp_app_desc.app_elf_sha256 is not right and
* can lead to a complete lock-up of the CPU.
* For this reason we do a reading of esp_app_desc.app_elf_sha256 while start up in esp_ota_init_app_elf_sha256()
* For this reason we do a reading of esp_app_desc.app_elf_sha256 while start up in esp_ota_init_app_elf_sha256()
* and keep it in the static s_app_elf_sha256 value.
*/
int IRAM_ATTR esp_ota_get_app_elf_sha256(char* dst, size_t size)
@@ -81,10 +89,7 @@ int IRAM_ATTR esp_ota_get_app_elf_sha256(char* dst, size_t size)
static bool first_call = true;
if (first_call) {
first_call = false;
// At -O2 optimization level, GCC optimizes out the copying of the first byte of the app_elf_sha256,
// because it is zero at compile time, and only modified afterwards by esptool.
// Casting to volatile disables the optimization.
const volatile uint8_t* src = (const volatile uint8_t*)esp_app_desc.app_elf_sha256;
const uint8_t* src = esp_app_desc.app_elf_sha256;
for (size_t i = 0; i < sizeof(s_app_elf_sha256); ++i) {
s_app_elf_sha256[i] = src[i];
}

View File

@@ -1,8 +1,16 @@
/*
* SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include <stdint.h>
#include <stdbool.h>
@@ -11,6 +19,8 @@
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include "esp_err.h"
#include "esp_partition.h"
@@ -22,25 +32,26 @@
#include "sdkconfig.h"
#include "esp_ota_ops.h"
#include "sys/queue.h"
#include "rom/queue.h"
#include "rom/crc.h"
#include "soc/dport_reg.h"
#include "esp_log.h"
#include "esp_flash_partitions.h"
#include "esp_flash_data_types.h"
#include "bootloader_common.h"
#include "sys/param.h"
#include "esp_system.h"
#include "esp_efuse.h"
#include "esp_attr.h"
#define SUB_TYPE_ID(i) (i & 0x0F)
/* Partial_data is word aligned so no reallocation is necessary for encrypted flash write */
typedef struct ota_ops_entry_ {
uint32_t handle;
const esp_partition_t *part;
bool need_erase;
uint32_t erased_size;
uint32_t wrote_size;
uint8_t partial_bytes;
WORD_ALIGNED_ATTR uint8_t partial_data[16];
uint8_t partial_data[16];
LIST_ENTRY(ota_ops_entry_) entries;
} ota_ops_entry_t;
@@ -97,12 +108,19 @@ static esp_err_t image_validate(const esp_partition_t *partition, esp_image_load
return ESP_ERR_OTA_VALIDATE_FAILED;
}
#ifdef CONFIG_SECURE_SIGNED_ON_UPDATE
esp_err_t ret = esp_secure_boot_verify_signature(partition->address, data.image_len);
if (ret != ESP_OK) {
return ESP_ERR_OTA_VALIDATE_FAILED;
}
#endif
return ESP_OK;
}
static esp_ota_img_states_t set_new_state_otadata(void)
{
#ifdef CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE
#ifdef CONFIG_APP_ROLLBACK_ENABLE
ESP_LOGD(TAG, "Monitoring the first boot of the app is enabled.");
return ESP_OTA_IMG_NEW;
#else
@@ -133,7 +151,7 @@ esp_err_t esp_ota_begin(const esp_partition_t *partition, size_t image_size, esp
return ESP_ERR_OTA_PARTITION_CONFLICT;
}
#ifdef CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE
#ifdef CONFIG_APP_ROLLBACK_ENABLE
esp_ota_img_states_t ota_state_running_part;
if (esp_ota_get_state_partition(running_partition, &ota_state_running_part) == ESP_OK) {
if (ota_state_running_part == ESP_OTA_IMG_PENDING_VERIFY) {
@@ -143,17 +161,16 @@ esp_err_t esp_ota_begin(const esp_partition_t *partition, size_t image_size, esp
}
#endif
if (image_size != OTA_WITH_SEQUENTIAL_WRITES) {
// If input image size is 0 or OTA_SIZE_UNKNOWN, erase entire partition
if ((image_size == 0) || (image_size == OTA_SIZE_UNKNOWN)) {
ret = esp_partition_erase_range(partition, 0, partition->size);
} else {
const int aligned_erase_size = (image_size + SPI_FLASH_SEC_SIZE - 1) & ~(SPI_FLASH_SEC_SIZE - 1);
ret = esp_partition_erase_range(partition, 0, aligned_erase_size);
}
if (ret != ESP_OK) {
return ret;
}
// If input image size is 0 or OTA_SIZE_UNKNOWN, erase entire partition
if ((image_size == 0) || (image_size == OTA_SIZE_UNKNOWN)) {
ret = esp_partition_erase_range(partition, 0, partition->size);
} else {
const int aligned_erase_size = (image_size + SPI_FLASH_SEC_SIZE - 1) & ~(SPI_FLASH_SEC_SIZE - 1);
ret = esp_partition_erase_range(partition, 0, aligned_erase_size);
}
if (ret != ESP_OK) {
return ret;
}
new_entry = (ota_ops_entry_t *) calloc(sizeof(ota_ops_entry_t), 1);
@@ -163,9 +180,14 @@ esp_err_t esp_ota_begin(const esp_partition_t *partition, size_t image_size, esp
LIST_INSERT_HEAD(&s_ota_ops_entries_head, new_entry, entries);
if ((image_size == 0) || (image_size == OTA_SIZE_UNKNOWN)) {
new_entry->erased_size = partition->size;
} else {
new_entry->erased_size = image_size;
}
new_entry->part = partition;
new_entry->handle = ++s_ota_ops_last_handle;
new_entry->need_erase = (image_size == OTA_WITH_SEQUENTIAL_WRITES);
*out_handle = new_entry->handle;
return ESP_OK;
}
@@ -184,22 +206,8 @@ esp_err_t esp_ota_write(esp_ota_handle_t handle, const void *data, size_t size)
// find ota handle in linked list
for (it = LIST_FIRST(&s_ota_ops_entries_head); it != NULL; it = LIST_NEXT(it, entries)) {
if (it->handle == handle) {
if (it->need_erase) {
// must erase the partition before writing to it
uint32_t first_sector = it->wrote_size / SPI_FLASH_SEC_SIZE;
uint32_t last_sector = (it->wrote_size + size) / SPI_FLASH_SEC_SIZE;
ret = ESP_OK;
if ((it->wrote_size % SPI_FLASH_SEC_SIZE) == 0) {
ret = esp_partition_erase_range(it->part, it->wrote_size, ((last_sector - first_sector) + 1) * SPI_FLASH_SEC_SIZE);
} else if (first_sector != last_sector) {
ret = esp_partition_erase_range(it->part, (first_sector + 1) * SPI_FLASH_SEC_SIZE, (last_sector - first_sector) * SPI_FLASH_SEC_SIZE);
}
if (ret != ESP_OK) {
return ret;
}
}
// must erase the partition before writing to it
assert(it->erased_size > 0 && "must erase the partition before writing to it");
if (it->wrote_size == 0 && it->partial_bytes == 0 && size > 0 && data_bytes[0] != ESP_IMAGE_HEADER_MAGIC) {
ESP_LOGE(TAG, "OTA image has invalid magic byte (expected 0xE9, saw 0x%02x)", data_bytes[0]);
return ESP_ERR_OTA_VALIDATE_FAILED;
@@ -250,70 +258,16 @@ esp_err_t esp_ota_write(esp_ota_handle_t handle, const void *data, size_t size)
return ESP_ERR_INVALID_ARG;
}
esp_err_t esp_ota_write_with_offset(esp_ota_handle_t handle, const void *data, size_t size, uint32_t offset)
esp_err_t esp_ota_end(esp_ota_handle_t handle)
{
const uint8_t *data_bytes = (const uint8_t *)data;
esp_err_t ret;
ota_ops_entry_t *it;
esp_err_t ret = ESP_OK;
if (data == NULL) {
ESP_LOGE(TAG, "write data is invalid");
return ESP_ERR_INVALID_ARG;
}
// find ota handle in linked list
for (it = LIST_FIRST(&s_ota_ops_entries_head); it != NULL; it = LIST_NEXT(it, entries)) {
if (it->handle == handle) {
// must erase the partition before writing to it
assert(it->need_erase == 0 && "must erase the partition before writing to it");
/* esp_ota_write_with_offset is used to write data in non contiguous manner.
* Hence, unaligned data(less than 16 bytes) cannot be cached if flash encryption is enabled.
*/
if (esp_flash_encryption_enabled() && (size % 16)) {
ESP_LOGE(TAG, "Size should be 16byte aligned for flash encryption case");
return ESP_ERR_INVALID_ARG;
}
ret = esp_partition_write(it->part, offset, data_bytes, size);
if (ret == ESP_OK) {
it->wrote_size += size;
}
return ret;
}
}
// OTA handle is not found in linked list
ESP_LOGE(TAG,"OTA handle not found");
return ESP_ERR_INVALID_ARG;
}
static ota_ops_entry_t *get_ota_ops_entry(esp_ota_handle_t handle)
{
ota_ops_entry_t *it = NULL;
for (it = LIST_FIRST(&s_ota_ops_entries_head); it != NULL; it = LIST_NEXT(it, entries)) {
if (it->handle == handle) {
break;
}
}
return it;
}
esp_err_t esp_ota_abort(esp_ota_handle_t handle)
{
ota_ops_entry_t *it = get_ota_ops_entry(handle);
if (it == NULL) {
return ESP_ERR_NOT_FOUND;
}
LIST_REMOVE(it, entries);
free(it);
return ESP_OK;
}
esp_err_t esp_ota_end(esp_ota_handle_t handle)
{
ota_ops_entry_t *it = get_ota_ops_entry(handle);
esp_err_t ret = ESP_OK;
if (it == NULL) {
return ESP_ERR_NOT_FOUND;
@@ -322,7 +276,7 @@ esp_err_t esp_ota_end(esp_ota_handle_t handle)
/* 'it' holds the ota_ops_entry_t for 'handle' */
// esp_ota_end() is only valid if some data was written to this handle
if (it->wrote_size == 0) {
if ((it->erased_size == 0) || (it->wrote_size == 0)) {
ret = ESP_ERR_INVALID_ARG;
goto cleanup;
}
@@ -371,7 +325,7 @@ static esp_err_t rewrite_ota_seq(esp_ota_select_entry_t *two_otadata, uint32_t s
}
}
uint8_t esp_ota_get_app_partition_count(void)
static uint8_t get_ota_partition_count(void)
{
uint16_t ota_app_count = 0;
while (esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_OTA_MIN + ota_app_count, NULL) != NULL) {
@@ -389,7 +343,7 @@ static esp_err_t esp_rewrite_ota_data(esp_partition_subtype_t subtype)
return ESP_ERR_NOT_FOUND;
}
uint8_t ota_app_count = esp_ota_get_app_partition_count();
int ota_app_count = get_ota_partition_count();
if (SUB_TYPE_ID(subtype) >= ota_app_count) {
return ESP_ERR_INVALID_ARG;
}
@@ -448,7 +402,7 @@ esp_err_t esp_ota_set_boot_partition(const esp_partition_t *partition)
return ESP_ERR_NOT_FOUND;
}
} else {
#ifdef CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK
#ifdef CONFIG_APP_ANTI_ROLLBACK
esp_app_desc_t partition_app_desc;
esp_err_t err = esp_ota_get_partition_description(partition, &partition_app_desc);
if (err != ESP_OK) {
@@ -507,7 +461,7 @@ const esp_partition_t *esp_ota_get_boot_partition(void)
return NULL;
}
int ota_app_count = esp_ota_get_app_partition_count();
int ota_app_count = get_ota_partition_count();
ESP_LOGD(TAG, "found ota app max = %d", ota_app_count);
if ((bootloader_common_ota_select_invalid(&otadata[0]) &&
@@ -636,7 +590,7 @@ esp_err_t esp_ota_get_partition_description(const esp_partition_t *partition, es
return ESP_OK;
}
#ifdef CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK
#ifdef CONFIG_APP_ANTI_ROLLBACK
static esp_err_t esp_ota_set_anti_rollback(void) {
const esp_app_desc_t *app_desc = esp_ota_get_app_description();
return esp_efuse_update_secure_version(app_desc->secure_version);
@@ -652,7 +606,7 @@ bool esp_ota_check_rollback_is_possible(void)
return false;
}
int ota_app_count = esp_ota_get_app_partition_count();
int ota_app_count = get_ota_partition_count();
if (ota_app_count == 0) {
return false;
}
@@ -668,7 +622,7 @@ bool esp_ota_check_rollback_is_possible(void)
int last_active_ota = (~active_ota)&1;
const esp_partition_t *partition = NULL;
#ifndef CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK
#ifndef CONFIG_APP_ANTI_ROLLBACK
if (valid_otadata[last_active_ota] == false) {
partition = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_FACTORY, NULL);
if (partition != NULL) {
@@ -684,7 +638,7 @@ bool esp_ota_check_rollback_is_possible(void)
partition = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_OTA_MIN + slot, NULL);
if (partition != NULL) {
if(image_validate(partition, ESP_IMAGE_VERIFY_SILENT) == ESP_OK) {
#ifdef CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK
#ifdef CONFIG_APP_ANTI_ROLLBACK
esp_app_desc_t app_desc;
if (esp_ota_get_partition_description(partition, &app_desc) == ESP_OK &&
esp_efuse_check_secure_version(app_desc.secure_version) == true) {
@@ -710,12 +664,12 @@ static esp_err_t esp_ota_current_ota_is_workable(bool valid)
}
int active_otadata = bootloader_common_get_active_otadata(otadata);
if (active_otadata != -1 && esp_ota_get_app_partition_count() != 0) {
if (active_otadata != -1 && get_ota_partition_count() != 0) {
if (valid == true && otadata[active_otadata].ota_state != ESP_OTA_IMG_VALID) {
otadata[active_otadata].ota_state = ESP_OTA_IMG_VALID;
ESP_LOGD(TAG, "OTA[current] partition is marked as VALID");
esp_err_t err = rewrite_ota_seq(otadata, otadata[active_otadata].ota_seq, active_otadata, otadata_partition);
#ifdef CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK
#ifdef CONFIG_APP_ANTI_ROLLBACK
if (err == ESP_OK) {
return esp_ota_set_anti_rollback();
}
@@ -742,12 +696,12 @@ static esp_err_t esp_ota_current_ota_is_workable(bool valid)
return ESP_OK;
}
esp_err_t esp_ota_mark_app_valid_cancel_rollback(void)
esp_err_t esp_ota_mark_app_valid_cancel_rollback()
{
return esp_ota_current_ota_is_workable(true);
}
esp_err_t esp_ota_mark_app_invalid_rollback_and_reboot(void)
esp_err_t esp_ota_mark_app_invalid_rollback_and_reboot()
{
return esp_ota_current_ota_is_workable(false);
}
@@ -770,7 +724,7 @@ static int get_last_invalid_otadata(const esp_ota_select_entry_t *two_otadata)
return num_invalid_otadata;
}
const esp_partition_t* esp_ota_get_last_invalid_partition(void)
const esp_partition_t* esp_ota_get_last_invalid_partition()
{
esp_ota_select_entry_t otadata[2];
if (read_otadata(otadata) == NULL) {
@@ -779,7 +733,7 @@ const esp_partition_t* esp_ota_get_last_invalid_partition(void)
int invalid_otadata = get_last_invalid_otadata(otadata);
int ota_app_count = esp_ota_get_app_partition_count();
int ota_app_count = get_ota_partition_count();
if (invalid_otadata != -1 && ota_app_count != 0) {
int ota_slot = (otadata[invalid_otadata].ota_seq - 1) % ota_app_count;
ESP_LOGD(TAG, "Find invalid ota_%d app", ESP_PARTITION_SUBTYPE_APP_OTA_MIN + ota_slot);
@@ -807,7 +761,7 @@ esp_err_t esp_ota_get_state_partition(const esp_partition_t *partition, esp_ota_
}
esp_ota_select_entry_t otadata[2];
int ota_app_count = esp_ota_get_app_partition_count();
int ota_app_count = get_ota_partition_count();
if (read_otadata(otadata) == NULL || ota_app_count == 0) {
return ESP_ERR_NOT_FOUND;
}
@@ -839,7 +793,7 @@ esp_err_t esp_ota_erase_last_boot_app_partition(void)
}
int active_otadata = bootloader_common_get_active_otadata(otadata);
int ota_app_count = esp_ota_get_app_partition_count();
int ota_app_count = get_ota_partition_count();
if (active_otadata == -1 || ota_app_count == 0) {
return ESP_FAIL;
}
@@ -875,87 +829,3 @@ esp_err_t esp_ota_erase_last_boot_app_partition(void)
return ESP_OK;
}
#if SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS > 1 && CONFIG_SECURE_BOOT_V2_ENABLED
esp_err_t esp_ota_revoke_secure_boot_public_key(esp_ota_secure_boot_public_key_index_t index) {
if (!esp_secure_boot_enabled()) {
ESP_LOGE(TAG, "Secure boot v2 has not been enabled.");
return ESP_FAIL;
}
if (index != SECURE_BOOT_PUBLIC_KEY_INDEX_0 &&
index != SECURE_BOOT_PUBLIC_KEY_INDEX_1 &&
index != SECURE_BOOT_PUBLIC_KEY_INDEX_2) {
ESP_LOGE(TAG, "Invalid Index found for public key revocation %d.", index);
return ESP_ERR_INVALID_ARG;
}
esp_image_sig_public_key_digests_t app_digests = { 0 };
esp_err_t err = esp_secure_boot_get_signature_blocks_for_running_app(true, &app_digests);
if (err != ESP_OK || app_digests.num_digests == 0) {
ESP_LOGE(TAG, "This app is not signed, but check signature on update is enabled in config. It won't be possible to verify any update.");
return ESP_FAIL;
}
esp_err_t ret;
ets_secure_boot_key_digests_t trusted_keys;
ret = esp_secure_boot_read_key_digests(&trusted_keys);
if (ret != ESP_OK) {
ESP_LOGE(TAG, "Could not read the secure boot key digests from efuse. Aborting..");
return ESP_FAIL;
}
if (trusted_keys.key_digests[index] == NULL) {
ESP_LOGI(TAG, "Trusted Key block(%d) already revoked.", index);
return ESP_OK;
}
esp_image_sig_public_key_digests_t trusted_digests = { 0 };
for (unsigned i = 0; i < SECURE_BOOT_NUM_BLOCKS; i++) {
if (i == index) {
continue; // omitting - to find if there is a valid key after revoking this digest
}
if (trusted_keys.key_digests[i] != NULL) {
bool all_zeroes = true;
for (unsigned j = 0; j < ESP_SECURE_BOOT_DIGEST_LEN; j++) {
all_zeroes = all_zeroes && (*(uint8_t *)(trusted_keys.key_digests[i] + j) == 0);
}
if (!all_zeroes) {
memcpy(trusted_digests.key_digests[trusted_digests.num_digests++], (uint8_t *)trusted_keys.key_digests[i], ESP_SECURE_BOOT_DIGEST_LEN);
} else {
ESP_LOGD(TAG, "Empty trusted key block (%d).", i);
}
}
}
bool match = false;
for (unsigned i = 0; i < trusted_digests.num_digests; i++) {
if (match == true) {
break;
}
for (unsigned j = 0; j < app_digests.num_digests; j++) {
if (memcmp(trusted_digests.key_digests[i], app_digests.key_digests[j], ESP_SECURE_BOOT_DIGEST_LEN) == 0) {
ESP_LOGI(TAG, "App key block(%d) matches Trusted key block(%d)[%d -> Next active trusted key block].", j, i, i);
esp_err_t err = esp_efuse_set_digest_revoke(index);
if (err != ESP_OK) {
ESP_LOGE(TAG, "Failed to revoke digest (0x%x).", err);
return ESP_FAIL;
}
ESP_LOGI(TAG, "Revoked signature block %d.", index);
match = true;
break;
}
}
}
if (match == false) {
ESP_LOGE(TAG, "Running app doesn't have another valid secure boot key. Cannot revoke current key(%d).", index);
return ESP_FAIL;
}
return ESP_OK;
}
#endif

View File

@@ -1,8 +1,16 @@
/*
* SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef _OTA_OPS_H
#define _OTA_OPS_H
@@ -13,8 +21,7 @@
#include "esp_err.h"
#include "esp_partition.h"
#include "esp_image_format.h"
#include "esp_flash_partitions.h"
#include "soc/soc_caps.h"
#include "esp_flash_data_types.h"
#ifdef __cplusplus
extern "C"
@@ -22,7 +29,6 @@ extern "C"
#endif
#define OTA_SIZE_UNKNOWN 0xffffffff /*!< Used for esp_ota_begin() if new image size is unknown */
#define OTA_WITH_SEQUENTIAL_WRITES 0xfffffffe /*!< Used for esp_ota_begin() if new image size is unknown and erase can be done in incremental manner (assuming write operation is in continuous sequence) */
#define ESP_ERR_OTA_BASE 0x1500 /*!< Base error code for ota_ops api */
#define ESP_ERR_OTA_PARTITION_CONFLICT (ESP_ERR_OTA_BASE + 0x01) /*!< Error if request was to write or erase the current running partition */
@@ -43,7 +49,7 @@ typedef uint32_t esp_ota_handle_t;
/**
* @brief Return esp_app_desc structure. This structure includes app version.
*
*
* Return description for running app.
* @return Pointer to esp_app_desc structure.
*/
@@ -111,29 +117,6 @@ esp_err_t esp_ota_begin(const esp_partition_t* partition, size_t image_size, esp
*/
esp_err_t esp_ota_write(esp_ota_handle_t handle, const void* data, size_t size);
/**
* @brief Write OTA update data to partition
*
* This function can write data in non contiguous manner.
* If flash encryption is enabled, data should be 16 byte aligned.
*
* @param handle Handle obtained from esp_ota_begin
* @param data Data buffer to write
* @param size Size of data buffer in bytes
* @param offset Offset in flash partition
*
* @note While performing OTA, if the packets arrive out of order, esp_ota_write_with_offset() can be used to write data in non contiguous manner.
* Use of esp_ota_write_with_offset() in combination with esp_ota_write() is not recommended.
*
* @return
* - ESP_OK: Data was written to flash successfully.
* - ESP_ERR_INVALID_ARG: handle is invalid.
* - ESP_ERR_OTA_VALIDATE_FAILED: First byte of image contains invalid app image magic byte.
* - ESP_ERR_FLASH_OP_TIMEOUT or ESP_ERR_FLASH_OP_FAIL: Flash write failed.
* - ESP_ERR_OTA_SELECT_INFO_INVALID: OTA data partition has invalid contents
*/
esp_err_t esp_ota_write_with_offset(esp_ota_handle_t handle, const void *data, size_t size, uint32_t offset);
/**
* @brief Finish OTA update and validate newly written app image.
*
@@ -150,18 +133,6 @@ esp_err_t esp_ota_write_with_offset(esp_ota_handle_t handle, const void *data, s
*/
esp_err_t esp_ota_end(esp_ota_handle_t handle);
/**
* @brief Abort OTA update, free the handle and memory associated with it.
*
* @param handle obtained from esp_ota_begin().
*
* @return
* - ESP_OK: Handle and its associated memory is freed successfully.
* - ESP_ERR_NOT_FOUND: OTA handle was not found.
*/
esp_err_t esp_ota_abort(esp_ota_handle_t handle);
/**
* @brief Configure OTA data for a new boot partition
*
@@ -230,7 +201,7 @@ const esp_partition_t* esp_ota_get_next_update_partition(const esp_partition_t *
/**
* @brief Returns esp_app_desc structure for app partition. This structure includes app version.
*
*
* Returns a description for the requested app partition.
* @param[in] partition Pointer to app partition. (only app partition)
* @param[out] app_desc Structure of info about app.
@@ -244,21 +215,13 @@ const esp_partition_t* esp_ota_get_next_update_partition(const esp_partition_t *
*/
esp_err_t esp_ota_get_partition_description(const esp_partition_t *partition, esp_app_desc_t *app_desc);
/**
* @brief Returns number of ota partitions provided in partition table.
*
* @return
* - Number of OTA partitions
*/
uint8_t esp_ota_get_app_partition_count(void);
/**
* @brief This function is called to indicate that the running app is working well.
*
* @return
* - ESP_OK: if successful.
*/
esp_err_t esp_ota_mark_app_valid_cancel_rollback(void);
esp_err_t esp_ota_mark_app_valid_cancel_rollback();
/**
* @brief This function is called to roll back to the previously workable app with reboot.
@@ -270,14 +233,14 @@ esp_err_t esp_ota_mark_app_valid_cancel_rollback(void);
* - ESP_FAIL: if not successful.
* - ESP_ERR_OTA_ROLLBACK_FAILED: The rollback is not possible due to flash does not have any apps.
*/
esp_err_t esp_ota_mark_app_invalid_rollback_and_reboot(void);
esp_err_t esp_ota_mark_app_invalid_rollback_and_reboot();
/**
* @brief Returns last partition with invalid state (ESP_OTA_IMG_INVALID or ESP_OTA_IMG_ABORTED).
*
* @return partition.
*/
const esp_partition_t* esp_ota_get_last_invalid_partition(void);
const esp_partition_t* esp_ota_get_last_invalid_partition();
/**
* @brief Returns state for given partition.
@@ -313,34 +276,6 @@ esp_err_t esp_ota_erase_last_boot_app_partition(void);
*/
bool esp_ota_check_rollback_is_possible(void);
#if SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS > 1 && (CONFIG_SECURE_BOOT_V2_ENABLED || __DOXYGEN__)
/**
* Secure Boot V2 public key indexes.
*/
typedef enum {
SECURE_BOOT_PUBLIC_KEY_INDEX_0, /*!< Points to the 0th index of the Secure Boot v2 public key */
SECURE_BOOT_PUBLIC_KEY_INDEX_1, /*!< Points to the 1st index of the Secure Boot v2 public key */
SECURE_BOOT_PUBLIC_KEY_INDEX_2 /*!< Points to the 2nd index of the Secure Boot v2 public key */
} esp_ota_secure_boot_public_key_index_t;
/**
* @brief Revokes the old signature digest. To be called in the application after the rollback logic.
*
* Relevant for Secure boot v2 on ESP32-S2, ESP32-S3, ESP32-C3 where upto 3 key digests can be stored (Key \#N-1, Key \#N, Key \#N+1).
* When key \#N-1 used to sign an app is invalidated, an OTA update is to be sent with an app signed with key \#N-1 & Key \#N.
* After successfully booting the OTA app should call this function to revoke Key \#N-1.
*
* @param index - The index of the signature block to be revoked
*
* @return
* - ESP_OK: If revocation is successful.
* - ESP_ERR_INVALID_ARG: If the index of the public key to be revoked is incorrect.
* - ESP_FAIL: If secure boot v2 has not been enabled.
*/
esp_err_t esp_ota_revoke_secure_boot_public_key(esp_ota_secure_boot_public_key_index_t index);
#endif /* SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS > 1 */
#ifdef __cplusplus
}
#endif

View File

@@ -3,27 +3,34 @@
# otatool is used to perform ota-level operations - flashing ota partition
# erasing ota partition and switching ota partition
#
# SPDX-FileCopyrightText: 2018-2021 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: Apache-2.0
from __future__ import division, print_function
# Copyright 2018 Espressif Systems (Shanghai) PTE LTD
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http:#www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import print_function, division
import argparse
import binascii
import collections
import os
import struct
import sys
import binascii
import subprocess
import tempfile
import collections
import struct
try:
from parttool import PARTITION_TABLE_OFFSET, PartitionName, PartitionType, ParttoolTarget
except ImportError:
COMPONENTS_PATH = os.path.expandvars(os.path.join('$IDF_PATH', 'components'))
PARTTOOL_DIR = os.path.join(COMPONENTS_PATH, 'partition_table')
sys.path.append(PARTTOOL_DIR)
from parttool import PARTITION_TABLE_OFFSET, PartitionName, PartitionType, ParttoolTarget
__version__ = '1.0'
__version__ = '2.0'
IDF_COMPONENTS_PATH = os.path.expandvars(os.path.join("$IDF_PATH", "components"))
PARTTOOL_PY = os.path.join(IDF_COMPONENTS_PATH, "partition_table", "parttool.py")
SPI_FLASH_SEC_SIZE = 0x2000
@@ -35,68 +42,121 @@ def status(msg):
print(msg)
class OtatoolTarget():
def _invoke_parttool(parttool_args, args, output=False, partition=None):
invoke_args = []
OTADATA_PARTITION = PartitionType('data', 'ota')
if partition:
invoke_args += [sys.executable, PARTTOOL_PY] + partition
else:
invoke_args += [sys.executable, PARTTOOL_PY, "--partition-type", "data", "--partition-subtype", "ota"]
def __init__(self, port=None, baud=None, partition_table_offset=PARTITION_TABLE_OFFSET, partition_table_file=None,
spi_flash_sec_size=SPI_FLASH_SEC_SIZE, esptool_args=[], esptool_write_args=[],
esptool_read_args=[], esptool_erase_args=[]):
self.target = ParttoolTarget(port, baud, partition_table_offset, partition_table_file, esptool_args,
esptool_write_args, esptool_read_args, esptool_erase_args)
self.spi_flash_sec_size = spi_flash_sec_size
if quiet:
invoke_args += ["-q"]
temp_file = tempfile.NamedTemporaryFile(delete=False)
temp_file.close()
try:
self.target.read_partition(OtatoolTarget.OTADATA_PARTITION, temp_file.name)
with open(temp_file.name, 'rb') as f:
self.otadata = f.read()
finally:
os.unlink(temp_file.name)
if args.port != "":
invoke_args += ["--port", args.port]
def _check_otadata_partition(self):
if not self.otadata:
raise Exception('No otadata partition found')
if args.partition_table_file:
invoke_args += ["--partition-table-file", args.partition_table_file]
def erase_otadata(self):
self._check_otadata_partition()
self.target.erase_partition(OtatoolTarget.OTADATA_PARTITION)
if args.partition_table_offset:
invoke_args += ["--partition-table-offset", args.partition_table_offset]
def _get_otadata_info(self):
info = []
invoke_args += parttool_args
otadata_info = collections.namedtuple('otadata_info', 'seq crc')
if output:
return subprocess.check_output(invoke_args)
else:
return subprocess.check_call(invoke_args)
for i in range(2):
start = i * (self.spi_flash_sec_size >> 1)
seq = bytearray(self.otadata[start:start + 4])
crc = bytearray(self.otadata[start + 28:start + 32])
def _get_otadata_contents(args, check=True):
global quiet
seq = struct.unpack('I', seq)
crc = struct.unpack('I', crc)
info.append(otadata_info(seq[0], crc[0]))
if check:
check_args = ["get_partition_info", "--info", "offset", "size"]
return info
quiet = True
output = _invoke_parttool(check_args, args, True).split(b" ")
quiet = args.quiet
def _get_partition_id_from_ota_id(self, ota_id):
if isinstance(ota_id, int):
return PartitionType('app', 'ota_' + str(ota_id))
else:
return PartitionName(ota_id)
if not output:
raise RuntimeError("No ota_data partition found")
def switch_ota_partition(self, ota_id):
self._check_otadata_partition()
with tempfile.NamedTemporaryFile(delete=False) as f:
f_name = f.name
import gen_esp32part as gen
try:
invoke_args = ["read_partition", "--output", f_name]
_invoke_parttool(invoke_args, args)
with open(f_name, "rb") as f:
contents = f.read()
finally:
os.unlink(f_name)
def is_otadata_info_valid(status):
return contents
def _get_otadata_status(otadata_contents):
status = []
otadata_status = collections.namedtuple("otadata_status", "seq crc")
for i in range(2):
start = i * (SPI_FLASH_SEC_SIZE >> 1)
seq = bytearray(otadata_contents[start:start + 4])
crc = bytearray(otadata_contents[start + 28:start + 32])
seq = struct.unpack('>I', seq)
crc = struct.unpack('>I', crc)
status.append(otadata_status(seq[0], crc[0]))
return status
def read_otadata(args):
status("Reading ota_data partition contents...")
otadata_info = _get_otadata_contents(args)
otadata_info = _get_otadata_status(otadata_info)
print(otadata_info)
print("\t\t{:11}\t{:8s}|\t{:8s}\t{:8s}".format("OTA_SEQ", "CRC", "OTA_SEQ", "CRC"))
print("Firmware: 0x{:8x} \t 0x{:8x} |\t0x{:8x} \t 0x{:8x}".format(otadata_info[0].seq, otadata_info[0].crc,
otadata_info[1].seq, otadata_info[1].crc))
def erase_otadata(args):
status("Erasing ota_data partition contents...")
_invoke_parttool(["erase_partition"], args)
status("Erased ota_data partition contents")
def switch_otadata(args):
sys.path.append(os.path.join(IDF_COMPONENTS_PATH, "partition_table"))
import gen_esp32part as gen
with tempfile.NamedTemporaryFile(delete=False) as f:
f_name = f.name
try:
def is_otadata_status_valid(status):
seq = status.seq % (1 << 32)
crc = binascii.crc32(struct.pack('I', seq), 0xFFFFFFFF) % (1 << 32)
crc = hex(binascii.crc32(struct.pack("I", seq), 0xFFFFFFFF) % (1 << 32))
return seq < (int('0xFFFFFFFF', 16) % (1 << 32)) and status.crc == crc
partition_table = self.target.partition_table
status("Looking for ota app partitions...")
# In order to get the number of ota app partitions, we need the partition table
partition_table = None
invoke_args = ["get_partition_info", "--table", f_name]
_invoke_parttool(invoke_args, args)
partition_table = open(f_name, "rb").read()
partition_table = gen.PartitionTable.from_binary(partition_table)
ota_partitions = list()
@@ -111,36 +171,39 @@ class OtatoolTarget():
ota_partitions = sorted(ota_partitions, key=lambda p: p.subtype)
if not ota_partitions:
raise Exception('No ota app partitions found')
raise RuntimeError("No ota app partitions found")
status("Verifying partition to switch to exists...")
# Look for the app partition to switch to
ota_partition_next = None
try:
if isinstance(ota_id, int):
ota_partition_next = filter(lambda p: p.subtype - gen.MIN_PARTITION_SUBTYPE_APP_OTA == ota_id, ota_partitions)
if args.name:
ota_partition_next = filter(lambda p: p.name == args.name, ota_partitions)
else:
ota_partition_next = filter(lambda p: p.name == ota_id, ota_partitions)
ota_partition_next = filter(lambda p: p.subtype - gen.MIN_PARTITION_SUBTYPE_APP_OTA == args.slot, ota_partitions)
ota_partition_next = list(ota_partition_next)[0]
except IndexError:
raise Exception('Partition to switch to not found')
raise RuntimeError("Partition to switch to not found")
otadata_info = self._get_otadata_info()
otadata_contents = _get_otadata_contents(args)
otadata_status = _get_otadata_status(otadata_contents)
# Find the copy to base the computation for ota sequence number on
otadata_compute_base = -1
# Both are valid, take the max as computation base
if is_otadata_info_valid(otadata_info[0]) and is_otadata_info_valid(otadata_info[1]):
if otadata_info[0].seq >= otadata_info[1].seq:
if is_otadata_status_valid(otadata_status[0]) and is_otadata_status_valid(otadata_status[1]):
if otadata_status[0].seq >= otadata_status[1].seq:
otadata_compute_base = 0
else:
otadata_compute_base = 1
# Only one copy is valid, use that
elif is_otadata_info_valid(otadata_info[0]):
elif is_otadata_status_valid(otadata_status[0]):
otadata_compute_base = 0
elif is_otadata_info_valid(otadata_info[1]):
elif is_otadata_status_valid(otadata_status[1]):
otadata_compute_base = 1
# Both are invalid (could be initial state - all 0xFF's)
else:
@@ -153,7 +216,7 @@ class OtatoolTarget():
# Find the next ota sequence number
if otadata_compute_base == 0 or otadata_compute_base == 1:
base_seq = otadata_info[otadata_compute_base].seq % (1 << 32)
base_seq = otadata_status[otadata_compute_base].seq % (1 << 32)
i = 0
while base_seq > target_seq % ota_partitions_num + i * ota_partitions_num:
@@ -164,120 +227,94 @@ class OtatoolTarget():
ota_seq_next = target_seq
# Create binary data from computed values
ota_seq_next = struct.pack('I', ota_seq_next)
ota_seq_next = struct.pack("I", ota_seq_next)
ota_seq_crc_next = binascii.crc32(ota_seq_next, 0xFFFFFFFF) % (1 << 32)
ota_seq_crc_next = struct.pack('I', ota_seq_crc_next)
ota_seq_crc_next = struct.pack("I", ota_seq_crc_next)
temp_file = tempfile.NamedTemporaryFile(delete=False)
temp_file.close()
with open(f_name, "wb") as otadata_next_file:
start = (1 if otadata_compute_base == 0 else 0) * (SPI_FLASH_SEC_SIZE >> 1)
try:
with open(temp_file.name, 'wb') as otadata_next_file:
start = (1 if otadata_compute_base == 0 else 0) * (self.spi_flash_sec_size >> 1)
otadata_next_file.write(otadata_contents)
otadata_next_file.write(self.otadata)
otadata_next_file.seek(start)
otadata_next_file.write(ota_seq_next)
otadata_next_file.seek(start)
otadata_next_file.write(ota_seq_next)
otadata_next_file.seek(start + 28)
otadata_next_file.write(ota_seq_crc_next)
otadata_next_file.seek(start + 28)
otadata_next_file.write(ota_seq_crc_next)
otadata_next_file.flush()
otadata_next_file.flush()
self.target.write_partition(OtatoolTarget.OTADATA_PARTITION, temp_file.name)
finally:
os.unlink(temp_file.name)
def read_ota_partition(self, ota_id, output):
self.target.read_partition(self._get_partition_id_from_ota_id(ota_id), output)
def write_ota_partition(self, ota_id, input):
self.target.write_partition(self._get_partition_id_from_ota_id(ota_id), input)
def erase_ota_partition(self, ota_id):
self.target.erase_partition(self._get_partition_id_from_ota_id(ota_id))
_invoke_parttool(["write_partition", "--input", f_name], args)
status("Updated ota_data partition")
finally:
os.unlink(f_name)
def _read_otadata(target):
target._check_otadata_partition()
otadata_info = target._get_otadata_info()
print(' {:8s} \t {:8s} | \t {:8s} \t {:8s}'.format('OTA_SEQ', 'CRC', 'OTA_SEQ', 'CRC'))
print('Firmware: 0x{:08x} \t0x{:08x} | \t0x{:08x} \t 0x{:08x}'.format(otadata_info[0].seq, otadata_info[0].crc,
otadata_info[1].seq, otadata_info[1].crc))
def _get_partition_specifier(args):
if args.name:
return ["--partition-name", args.name]
else:
return ["--partition-type", "app", "--partition-subtype", "ota_" + str(args.slot)]
def _erase_otadata(target):
target.erase_otadata()
status('Erased ota_data partition contents')
def read_ota_partition(args):
invoke_args = ["read_partition", "--output", args.output]
_invoke_parttool(invoke_args, args, partition=_get_partition_specifier(args))
status("Read ota partition contents to file {}".format(args.output))
def _switch_ota_partition(target, ota_id):
target.switch_ota_partition(ota_id)
def write_ota_partition(args):
invoke_args = ["write_partition", "--input", args.input]
_invoke_parttool(invoke_args, args, partition=_get_partition_specifier(args))
status("Written contents of file {} to ota partition".format(args.input))
def _read_ota_partition(target, ota_id, output):
target.read_ota_partition(ota_id, output)
status('Read ota partition contents to file {}'.format(output))
def _write_ota_partition(target, ota_id, input):
target.write_ota_partition(ota_id, input)
status('Written contents of file {} to ota partition'.format(input))
def _erase_ota_partition(target, ota_id):
target.erase_ota_partition(ota_id)
status('Erased contents of ota partition')
def erase_ota_partition(args):
invoke_args = ["erase_partition"]
_invoke_parttool(invoke_args, args, partition=_get_partition_specifier(args))
status("Erased contents of ota partition")
def main():
if sys.version_info[0] < 3:
print("WARNING: Support for Python 2 is deprecated and will be removed in future versions.")
elif sys.version_info[0] == 3 and sys.version_info[1] < 6:
print("WARNING: Python 3 versions older than 3.6 are not supported.")
global quiet
parser = argparse.ArgumentParser('ESP-IDF OTA Partitions Tool')
parser = argparse.ArgumentParser("ESP-IDF OTA Partitions Tool")
parser.add_argument('--quiet', '-q', help='suppress stderr messages', action='store_true')
parser.add_argument('--esptool-args', help='additional main arguments for esptool', nargs='+')
parser.add_argument('--esptool-write-args', help='additional subcommand arguments for esptool write_flash', nargs='+')
parser.add_argument('--esptool-read-args', help='additional subcommand arguments for esptool read_flash', nargs='+')
parser.add_argument('--esptool-erase-args', help='additional subcommand arguments for esptool erase_region', nargs='+')
parser.add_argument("--quiet", "-q", help="suppress stderr messages", action="store_true")
# There are two possible sources for the partition table: a device attached to the host
# or a partition table CSV/binary file. These sources are mutually exclusive.
parser.add_argument('--port', '-p', help='port where the device to read the partition table from is attached')
partition_table_info_source_args = parser.add_mutually_exclusive_group()
parser.add_argument('--baud', '-b', help='baudrate to use', type=int)
partition_table_info_source_args.add_argument("--port", "-p", help="port where the device to read the partition table from is attached", default="")
partition_table_info_source_args.add_argument("--partition-table-file", "-f", help="file (CSV/binary) to read the partition table from", default="")
parser.add_argument('--partition-table-offset', '-o', help='offset to read the partition table from', type=str)
parser.add_argument("--partition-table-offset", "-o", help="offset to read the partition table from", default="0x8000")
parser.add_argument('--partition-table-file', '-f', help='file (CSV/binary) to read the partition table from; \
overrides device attached to specified port as the partition table source when defined')
subparsers = parser.add_subparsers(dest='operation', help='run otatool -h for additional help')
spi_flash_sec_size = argparse.ArgumentParser(add_help=False)
spi_flash_sec_size.add_argument('--spi-flash-sec-size', help='value of SPI_FLASH_SEC_SIZE macro', type=str)
subparsers = parser.add_subparsers(dest="operation", help="run otatool -h for additional help")
# Specify the supported operations
subparsers.add_parser('read_otadata', help='read otadata partition', parents=[spi_flash_sec_size])
subparsers.add_parser('erase_otadata', help='erase otadata partition')
subparsers.add_parser("read_otadata", help="read otadata partition")
subparsers.add_parser("erase_otadata", help="erase otadata partition")
slot_or_name_parser = argparse.ArgumentParser(add_help=False)
slot_or_name_parser_args = slot_or_name_parser.add_mutually_exclusive_group()
slot_or_name_parser_args.add_argument('--slot', help='slot number of the ota partition', type=int)
slot_or_name_parser_args.add_argument('--name', help='name of the ota partition')
slot_or_name_parser_args.add_argument("--slot", help="slot number of the ota partition", type=int)
slot_or_name_parser_args.add_argument("--name", help="name of the ota partition")
subparsers.add_parser('switch_ota_partition', help='switch otadata partition', parents=[slot_or_name_parser, spi_flash_sec_size])
subparsers.add_parser("switch_otadata", help="switch otadata partition", parents=[slot_or_name_parser])
read_ota_partition_subparser = subparsers.add_parser('read_ota_partition', help='read contents of an ota partition', parents=[slot_or_name_parser])
read_ota_partition_subparser.add_argument('--output', help='file to write the contents of the ota partition to', required=True)
read_ota_partition_subparser = subparsers.add_parser("read_ota_partition", help="read contents of an ota partition", parents=[slot_or_name_parser])
read_ota_partition_subparser.add_argument("--output", help="file to write the contents of the ota partition to")
write_ota_partition_subparser = subparsers.add_parser('write_ota_partition', help='write contents to an ota partition', parents=[slot_or_name_parser])
write_ota_partition_subparser.add_argument('--input', help='file whose contents to write to the ota partition')
write_ota_partition_subparser = subparsers.add_parser("write_ota_partition", help="write contents to an ota partition", parents=[slot_or_name_parser])
write_ota_partition_subparser.add_argument("--input", help="file whose contents to write to the ota partition")
subparsers.add_parser('erase_ota_partition', help='erase contents of an ota partition', parents=[slot_or_name_parser])
subparsers.add_parser("erase_ota_partition", help="erase contents of an ota partition", parents=[slot_or_name_parser])
args = parser.parse_args()
@@ -289,84 +326,17 @@ def main():
parser.print_help()
sys.exit(1)
target_args = {}
if args.port:
target_args['port'] = args.port
if args.partition_table_file:
target_args['partition_table_file'] = args.partition_table_file
if args.partition_table_offset:
target_args['partition_table_offset'] = int(args.partition_table_offset, 0)
try:
if args.spi_flash_sec_size:
target_args['spi_flash_sec_size'] = int(args.spi_flash_sec_size, 0)
except AttributeError:
pass
if args.esptool_args:
target_args['esptool_args'] = args.esptool_args
if args.esptool_write_args:
target_args['esptool_write_args'] = args.esptool_write_args
if args.esptool_read_args:
target_args['esptool_read_args'] = args.esptool_read_args
if args.esptool_erase_args:
target_args['esptool_erase_args'] = args.esptool_erase_args
if args.baud:
target_args['baud'] = args.baud
target = OtatoolTarget(**target_args)
# Create the operation table and execute the operation
common_args = {'target':target}
ota_id = []
try:
if args.name is not None:
ota_id = ['name']
else:
if args.slot is not None:
ota_id = ['slot']
except AttributeError:
pass
otatool_ops = {
'read_otadata':(_read_otadata, []),
'erase_otadata':(_erase_otadata, []),
'switch_ota_partition':(_switch_ota_partition, ota_id),
'read_ota_partition':(_read_ota_partition, ['output'] + ota_id),
'write_ota_partition':(_write_ota_partition, ['input'] + ota_id),
'erase_ota_partition':(_erase_ota_partition, ota_id)
}
(op, op_args) = otatool_ops[args.operation]
for op_arg in op_args:
common_args.update({op_arg:vars(args)[op_arg]})
try:
common_args['ota_id'] = common_args.pop('name')
except KeyError:
try:
common_args['ota_id'] = common_args.pop('slot')
except KeyError:
pass
# Else execute the operation
operation_func = globals()[args.operation]
if quiet:
# If exceptions occur, suppress and exit quietly
try:
op(**common_args)
operation_func(args)
except Exception:
sys.exit(2)
else:
op(**common_args)
operation_func(args)
if __name__ == '__main__':

View File

@@ -0,0 +1,9 @@
# Set empty otadata partition file for flashing, if OTA data partition in
# partition table
# (NB: because of component dependency, we know partition_table
# project_include.cmake has already been included.)
if(OTADATA_PARTITION_OFFSET AND OTADATA_PARTITION_SIZE AND IDF_BUILD_ARTIFACTS)
set(BLANK_OTADATA_FILE "ota_data_initial.bin")
endif()

View File

@@ -1,4 +1,6 @@
idf_component_register(SRC_DIRS "."
PRIV_INCLUDE_DIRS "."
PRIV_REQUIRES cmock test_utils app_update bootloader_support nvs_flash
)
set(COMPONENT_SRCDIRS ".")
set(COMPONENT_ADD_INCLUDEDIRS ".")
set(COMPONENT_REQUIRES unity test_utils app_update bootloader_support nvs_flash)
register_component()

View File

@@ -1,8 +1,3 @@
/*
* SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <string.h>
#include "esp_ota_ops.h"
#include "unity.h"

View File

@@ -1,8 +1,3 @@
/*
* SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -63,7 +58,7 @@ TEST_CASE("esp_ota_get_next_update_partition logic", "[ota]")
TEST_ASSERT_NOT_NULL(ota_1);
TEST_ASSERT_NULL(ota_2); /* this partition shouldn't exist in test partition table */
TEST_ASSERT_EQUAL_PTR(factory, running); /* this may not be true if/when we get OTA tests that do OTA updates */
TEST_ASSERT_EQUAL_PTR(factory, running); /* this may not be true if/when we get OTA tests that do OTA updates */
/* (The test steps verify subtypes before verifying pointer equality, because the failure messages are more readable
this way.)
@@ -89,7 +84,7 @@ TEST_CASE("esp_ota_get_next_update_partition logic", "[ota]")
TEST_ASSERT_EQUAL_PTR(ota_0, p);
}
TEST_CASE("esp_ota_get_partition_description", "[ota]")
TEST_CASE("esp_ota_get_partition_description ", "[ota]")
{
const esp_partition_t *running = esp_ota_get_running_partition();
TEST_ASSERT_NOT_NULL(running);

View File

@@ -1,8 +1,3 @@
/*
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
/*
* Tests for switching between partitions: factory, OTAx, test.
*/
@@ -10,22 +5,20 @@
#include <esp_types.h>
#include <stdio.h>
#include "string.h"
#include "sdkconfig.h"
#if CONFIG_IDF_TARGET_ESP32
#include "esp32/rom/spi_flash.h"
#elif CONFIG_IDF_TARGET_ESP32S2
#include "esp32s2/rom/spi_flash.h"
#endif
#include "rom/spi_flash.h"
#include "rom/rtc.h"
#include "rom/ets_sys.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/semphr.h"
#include "freertos/queue.h"
#include "freertos/xtensa_api.h"
#include "unity.h"
#include "bootloader_common.h"
#include "../include_bootloader/bootloader_flash_priv.h"
#include "../include_bootloader/bootloader_flash.h"
#include "esp_log.h"
#include "esp_ota_ops.h"
@@ -35,8 +28,8 @@
#include "nvs_flash.h"
#include "driver/gpio.h"
#include "esp_sleep.h"
#include "sdkconfig.h"
RTC_DATA_ATTR static int boot_count = 0;
static const char *TAG = "ota_test";
@@ -50,34 +43,9 @@ static void copy_app_partition(esp_ota_handle_t update_handle, const esp_partiti
{
const void *partition_bin = NULL;
spi_flash_mmap_handle_t data_map;
ESP_LOGI(TAG, "start the copy process");
TEST_ESP_OK(esp_partition_mmap(curr_app, 0, curr_app->size, SPI_FLASH_MMAP_DATA, &partition_bin, &data_map));
TEST_ESP_OK(esp_ota_write(update_handle, (const void *)partition_bin, curr_app->size));
spi_flash_munmap(data_map);
ESP_LOGI(TAG, "finish the copy process");
}
/* @brief Copies a current app to next partition using handle.
*
* @param[in] update_handle - Handle of API ota.
* @param[in] cur_app - Current app.
*/
static void copy_app_partition_with_offset(esp_ota_handle_t update_handle, const esp_partition_t *curr_app)
{
const void *partition_bin = NULL;
spi_flash_mmap_handle_t data_map;
ESP_LOGI(TAG, "start the copy process");
uint32_t offset = 0, bytes_to_write = curr_app->size;
uint32_t write_bytes;
while (bytes_to_write > 0) {
write_bytes = (bytes_to_write > (4 * 1024)) ? (4 * 1024) : bytes_to_write;
TEST_ESP_OK(esp_partition_mmap(curr_app, offset, write_bytes, SPI_FLASH_MMAP_DATA, &partition_bin, &data_map));
TEST_ESP_OK(esp_ota_write_with_offset(update_handle, (const void *)partition_bin, write_bytes, offset));
spi_flash_munmap(data_map);
bytes_to_write -= write_bytes;
offset += write_bytes;
}
ESP_LOGI(TAG, "finish the copy process");
}
#if defined(CONFIG_BOOTLOADER_FACTORY_RESET) || defined(CONFIG_BOOTLOADER_APP_TEST)
@@ -130,26 +98,6 @@ static void copy_current_app_to_next_part(const esp_partition_t *cur_app_partiti
TEST_ESP_OK(esp_ota_set_boot_partition(next_app_partition));
}
/* @brief Copies a current app to next partition (OTA0-15) and then configure OTA data for a new boot partition.
*
* @param[in] cur_app_partition - Current app.
* @param[in] next_app_partition - Next app for boot.
*/
static void copy_current_app_to_next_part_with_offset(const esp_partition_t *cur_app_partition, const esp_partition_t *next_app_partition)
{
esp_ota_get_next_update_partition(NULL);
TEST_ASSERT_NOT_EQUAL(NULL, next_app_partition);
ESP_LOGI(TAG, "Writing to partition subtype %d at offset 0x%x", next_app_partition->subtype, next_app_partition->address);
esp_ota_handle_t update_handle = 0;
TEST_ESP_OK(esp_ota_begin(next_app_partition, OTA_SIZE_UNKNOWN, &update_handle));
copy_app_partition_with_offset(update_handle, cur_app_partition);
TEST_ESP_OK(esp_ota_end(update_handle));
TEST_ESP_OK(esp_ota_set_boot_partition(next_app_partition));
}
/* @brief Erase otadata partition
*/
static void erase_ota_data(void)
@@ -163,31 +111,19 @@ static void erase_ota_data(void)
*/
static void reboot_as_deep_sleep(void)
{
ESP_LOGI(TAG, "reboot as deep sleep");
esp_sleep_enable_timer_wakeup(2000);
esp_deep_sleep_start();
}
/* @brief Copies a current app to next partition (OTA0-15), after that ESP is rebooting and run this (the next) OTAx.
*/
static void copy_current_app_to_next_part_and_reboot(void)
static void copy_current_app_to_next_part_and_reboot()
{
const esp_partition_t *cur_app = esp_ota_get_running_partition();
ESP_LOGI(TAG, "copy current app to next part");
copy_current_app_to_next_part(cur_app, get_next_update_partition());
reboot_as_deep_sleep();
}
/* @brief Copies a current app to next partition (OTA0-15) using esp_ota_write_with_offest(), after that ESP is rebooting and run this (the next) OTAx.
*/
static void copy_current_app_to_next_part_with_offset_and_reboot(void)
{
const esp_partition_t *cur_app = esp_ota_get_running_partition();
ESP_LOGI(TAG, "copy current app to next part");
copy_current_app_to_next_part_with_offset(cur_app, get_next_update_partition());
reboot_as_deep_sleep();
}
/* @brief Get running app.
*
* @return The next partition of OTA(OTA0-15).
@@ -281,7 +217,7 @@ static void set_output_pin(uint32_t num_pin)
TEST_ESP_OK(gpio_hold_dis(num_pin));
gpio_config_t io_conf;
io_conf.intr_type = GPIO_INTR_DISABLE;
io_conf.intr_type = GPIO_PIN_INTR_DISABLE;
io_conf.mode = GPIO_MODE_OUTPUT;
io_conf.pin_bit_mask = (1ULL << num_pin);
io_conf.pull_down_en = 0;
@@ -303,7 +239,7 @@ static void reset_output_pin(uint32_t num_pin)
static void mark_app_valid(void)
{
#ifdef CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE
#ifdef CONFIG_APP_ROLLBACK_ENABLE
TEST_ESP_OK(esp_ota_mark_app_valid_cancel_rollback());
#endif
}
@@ -315,7 +251,6 @@ static void start_test(void)
ESP_LOGI(TAG, "boot count 1 - reset");
boot_count = 1;
erase_ota_data();
ESP_LOGI(TAG, "ota_data erased");
reboot_as_deep_sleep();
}
@@ -328,19 +263,19 @@ static void test_flow1(void)
case 2:
ESP_LOGI(TAG, "Factory");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_FACTORY, cur_app->subtype);
copy_current_app_to_next_part_and_reboot();
copy_current_app_to_next_part_and_reboot(cur_app);
break;
case 3:
ESP_LOGI(TAG, "OTA0");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_OTA_0, cur_app->subtype);
mark_app_valid();
copy_current_app_to_next_part_and_reboot();
copy_current_app_to_next_part_and_reboot(cur_app);
break;
case 4:
ESP_LOGI(TAG, "OTA1");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_OTA_1, cur_app->subtype);
mark_app_valid();
copy_current_app_to_next_part_and_reboot();
copy_current_app_to_next_part_and_reboot(cur_app);
break;
case 5:
ESP_LOGI(TAG, "OTA0");
@@ -371,7 +306,7 @@ static void test_flow2(void)
case 2:
ESP_LOGI(TAG, "Factory");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_FACTORY, cur_app->subtype);
copy_current_app_to_next_part_and_reboot();
copy_current_app_to_next_part_and_reboot(cur_app);
break;
case 3:
ESP_LOGI(TAG, "OTA0");
@@ -408,13 +343,13 @@ static void test_flow3(void)
case 2:
ESP_LOGI(TAG, "Factory");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_FACTORY, cur_app->subtype);
copy_current_app_to_next_part_and_reboot();
copy_current_app_to_next_part_and_reboot(cur_app);
break;
case 3:
ESP_LOGI(TAG, "OTA0");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_OTA_0, cur_app->subtype);
mark_app_valid();
copy_current_app_to_next_part_and_reboot();
copy_current_app_to_next_part_and_reboot(cur_app);
break;
case 4:
ESP_LOGI(TAG, "OTA1");
@@ -451,8 +386,8 @@ static void test_flow4(void)
boot_count++;
ESP_LOGI(TAG, "boot count %d", boot_count);
const esp_partition_t *cur_app = get_running_firmware();
nvs_handle_t handle = 0;
int32_t boot_count_nvs = 0;
nvs_handle handle = 0;
int boot_count_nvs = 0;
switch (boot_count) {
case 2:
ESP_LOGI(TAG, "Factory");
@@ -466,7 +401,7 @@ static void test_flow4(void)
nvs_close(handle);
nvs_flash_deinit();
copy_current_app_to_next_part_and_reboot();
copy_current_app_to_next_part_and_reboot(cur_app);
break;
case 3:
ESP_LOGI(TAG, "OTA0");
@@ -488,7 +423,7 @@ static void test_flow4(void)
ESP_LOGI(TAG, "Factory");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_FACTORY, cur_app->subtype);
int32_t boot_count_nvs;
int boot_count_nvs;
TEST_ESP_OK(nvs_flash_init());
TEST_ESP_OK(nvs_open(STORAGE_NAMESPACE, NVS_READWRITE, &handle));
TEST_ESP_ERR(ESP_ERR_NVS_NOT_FOUND, nvs_get_i32(handle, "boot_count", &boot_count_nvs));
@@ -583,7 +518,7 @@ static void test_rollback1(void)
TEST_ESP_ERR(ESP_ERR_NOT_SUPPORTED, esp_ota_get_state_partition(cur_app, &ota_state));
update_partition = app_update();
TEST_ESP_OK(esp_ota_get_state_partition(update_partition, &ota_state));
#ifndef CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE
#ifndef CONFIG_APP_ROLLBACK_ENABLE
TEST_ASSERT_EQUAL(ESP_OTA_IMG_UNDEFINED, ota_state);
#else
TEST_ASSERT_EQUAL(ESP_OTA_IMG_NEW, ota_state);
@@ -595,7 +530,7 @@ static void test_rollback1(void)
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_OTA_0, cur_app->subtype);
TEST_ASSERT_NULL(esp_ota_get_last_invalid_partition());
TEST_ESP_OK(esp_ota_get_state_partition(cur_app, &ota_state));
#ifndef CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE
#ifndef CONFIG_APP_ROLLBACK_ENABLE
TEST_ASSERT_EQUAL(ESP_OTA_IMG_UNDEFINED, ota_state);
#else
TEST_ASSERT_EQUAL(ESP_OTA_IMG_PENDING_VERIFY, ota_state);
@@ -662,7 +597,7 @@ static void test_rollback2(void)
TEST_ESP_ERR(ESP_ERR_NOT_SUPPORTED, esp_ota_get_state_partition(cur_app, &ota_state));
update_partition = app_update();
TEST_ESP_OK(esp_ota_get_state_partition(update_partition, &ota_state));
#ifndef CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE
#ifndef CONFIG_APP_ROLLBACK_ENABLE
TEST_ASSERT_EQUAL(ESP_OTA_IMG_UNDEFINED, ota_state);
#else
TEST_ASSERT_EQUAL(ESP_OTA_IMG_NEW, ota_state);
@@ -674,7 +609,7 @@ static void test_rollback2(void)
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_OTA_0, cur_app->subtype);
TEST_ASSERT_NULL(esp_ota_get_last_invalid_partition());
TEST_ESP_OK(esp_ota_get_state_partition(cur_app, &ota_state));
#ifndef CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE
#ifndef CONFIG_APP_ROLLBACK_ENABLE
TEST_ASSERT_EQUAL(ESP_OTA_IMG_UNDEFINED, ota_state);
#else
TEST_ASSERT_EQUAL(ESP_OTA_IMG_PENDING_VERIFY, ota_state);
@@ -685,7 +620,7 @@ static void test_rollback2(void)
TEST_ASSERT_EQUAL(ESP_OTA_IMG_VALID, ota_state);
update_partition = app_update();
TEST_ESP_OK(esp_ota_get_state_partition(update_partition, &ota_state));
#ifndef CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE
#ifndef CONFIG_APP_ROLLBACK_ENABLE
TEST_ASSERT_EQUAL(ESP_OTA_IMG_UNDEFINED, ota_state);
#else
TEST_ASSERT_EQUAL(ESP_OTA_IMG_NEW, ota_state);
@@ -697,7 +632,7 @@ static void test_rollback2(void)
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_OTA_1, cur_app->subtype);
TEST_ASSERT_NULL(esp_ota_get_last_invalid_partition());
TEST_ESP_OK(esp_ota_get_state_partition(cur_app, &ota_state));
#ifndef CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE
#ifndef CONFIG_APP_ROLLBACK_ENABLE
TEST_ASSERT_EQUAL(ESP_OTA_IMG_UNDEFINED, ota_state);
TEST_ESP_OK(esp_ota_mark_app_invalid_rollback_and_reboot());
#else
@@ -730,7 +665,7 @@ static void test_rollback2_1(void)
TEST_ESP_OK(esp_ota_get_state_partition(cur_app, &ota_state));
TEST_ASSERT_EQUAL(ESP_OTA_IMG_VALID, ota_state);
TEST_ESP_OK(esp_ota_get_state_partition(invalid_partition, &ota_state));
#ifndef CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE
#ifndef CONFIG_APP_ROLLBACK_ENABLE
TEST_ASSERT_EQUAL(ESP_OTA_IMG_INVALID, ota_state);
#else
TEST_ASSERT_EQUAL(ESP_OTA_IMG_ABORTED, ota_state);
@@ -795,54 +730,3 @@ static void test_erase_last_app_rollback(void)
// 4 Stage: run OTA1 -> check it -> erase OTA0 and rollback -> reboot
// 5 Stage: run factory -> check it -> erase OTA_DATA for next tests -> PASS
TEST_CASE_MULTIPLE_STAGES("Test erase_last_boot_app_partition. factory, OTA1, OTA0, factory", "[app_update][timeout=90][reset=DEEPSLEEP_RESET, DEEPSLEEP_RESET, DEEPSLEEP_RESET, SW_CPU_RESET]", start_test, test_erase_last_app_flow, test_erase_last_app_flow, test_erase_last_app_flow, test_erase_last_app_rollback);
static void test_flow6(void)
{
boot_count++;
ESP_LOGI(TAG, "boot count %d", boot_count);
const esp_partition_t *cur_app = get_running_firmware();
switch (boot_count) {
case 2:
ESP_LOGI(TAG, "Factory");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_FACTORY, cur_app->subtype);
copy_current_app_to_next_part_with_offset_and_reboot();
break;
case 3:
ESP_LOGI(TAG, "OTA0");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_OTA_0, cur_app->subtype);
mark_app_valid();
erase_ota_data();
break;
default:
erase_ota_data();
TEST_FAIL_MESSAGE("Unexpected stage");
break;
}
}
// 1 Stage: After POWER_RESET erase OTA_DATA for this test -> reboot through deep sleep.
// 2 Stage: run factory -> check it -> copy factory to OTA0 -> reboot --//--
// 3 Stage: run OTA0 -> check it -> erase OTA_DATA for next tests -> PASS
TEST_CASE_MULTIPLE_STAGES("Switching between factory, OTA0 using esp_ota_write_with_offset", "[app_update][timeout=90][reset=DEEPSLEEP_RESET, DEEPSLEEP_RESET]", start_test, test_flow6, test_flow6);
TEST_CASE("Test bootloader_common_get_sha256_of_partition returns ESP_ERR_IMAGE_INVALID when image is ivalid", "[partitions]")
{
const esp_partition_t *cur_app = esp_ota_get_running_partition();
ESP_LOGI(TAG, "copy current app to next part");
const esp_partition_t *other_app = get_next_update_partition();
copy_current_app_to_next_part(cur_app, other_app);
erase_ota_data();
uint8_t sha_256_cur_app[32];
uint8_t sha_256_other_app[32];
TEST_ESP_OK(bootloader_common_get_sha256_of_partition(cur_app->address, cur_app->size, cur_app->type, sha_256_cur_app));
TEST_ESP_OK(bootloader_common_get_sha256_of_partition(other_app->address, other_app->size, other_app->type, sha_256_other_app));
TEST_ASSERT_EQUAL_MEMORY_MESSAGE(sha_256_cur_app, sha_256_other_app, sizeof(sha_256_cur_app), "must be the same");
uint32_t data = 0;
bootloader_flash_write(other_app->address + 0x50, &data, sizeof(data), false);
TEST_ESP_ERR(ESP_ERR_IMAGE_INVALID, bootloader_common_get_sha256_of_partition(other_app->address, other_app->size, other_app->type, sha_256_other_app));
TEST_ASSERT_EQUAL_MEMORY_MESSAGE(sha_256_cur_app, sha_256_other_app, sizeof(sha_256_cur_app), "must be the same");
}

View File

@@ -1,41 +1,6 @@
if(NOT CONFIG_LWIP_IPV6 AND NOT CMAKE_BUILD_EARLY_EXPANSION)
# note: the component is still included in the build so it can become visible again in config
# without needing to re-run CMake. However no source or header files are built.
message(STATUS "IPV6 support is disabled so the asio component will not be built")
idf_component_register()
return()
endif()
set(COMPONENT_ADD_INCLUDEDIRS asio/asio/include port/include)
set(COMPONENT_SRCS "asio/asio/src/asio.cpp")
set(asio_sources "asio/asio/src/asio.cpp")
set(COMPONENT_REQUIRES lwip)
if(CONFIG_ASIO_SSL_SUPPORT)
if(CONFIG_ASIO_USE_ESP_OPENSSL)
list(APPEND asio_sources
"asio/asio/src/asio_ssl.cpp"
"port/src/esp_asio_openssl_stubs.c")
endif()
if(CONFIG_ASIO_USE_ESP_WOLFSSL)
list(APPEND asio_sources
"asio/asio/src/asio_ssl.cpp")
endif()
endif()
idf_component_register(SRCS ${asio_sources}
INCLUDE_DIRS "asio/asio/include" "port/include"
REQUIRES lwip)
if(CONFIG_ASIO_SSL_SUPPORT)
if(CONFIG_ASIO_USE_ESP_WOLFSSL)
idf_component_get_property(wolflib esp-wolfssl COMPONENT_LIB)
idf_component_get_property(wolfdir esp-wolfssl COMPONENT_DIR)
target_link_libraries(${COMPONENT_LIB} PUBLIC ${wolflib})
target_include_directories(${COMPONENT_LIB} PUBLIC ${wolfdir}/wolfssl/wolfssl)
endif()
if(CONFIG_ASIO_USE_ESP_OPENSSL)
idf_component_get_property(esp_openssl openssl COMPONENT_LIB)
target_link_libraries(${COMPONENT_LIB} PUBLIC ${esp_openssl})
endif()
endif()
register_component()

View File

@@ -1,27 +0,0 @@
menu "ESP-ASIO"
visible if LWIP_IPV6
config ASIO_SSL_SUPPORT
bool "Enable SSL/TLS support of ASIO"
default n
help
Enable support for basic SSL/TLS features, available for mbedTLS/OpenSSL
as well as wolfSSL TLS library.
choice ASIO_SSL_LIBRARY_CHOICE
prompt "Choose SSL/TLS library for ESP-TLS (See help for more Info)"
default ASIO_USE_ESP_OPENSSL
depends on ASIO_SSL_SUPPORT
help
The ASIO support multiple backend TLS libraries. Currently the mbedTLS with a thin ESP-OpenSSL
port layer (default choice) and WolfSSL are supported.
Different TLS libraries may support different features and have different resource
usage. Consult the ESP-TLS documentation in ESP-IDF Programming guide for more details.
config ASIO_USE_ESP_OPENSSL
bool "esp-openssl"
config ASIO_USE_ESP_WOLFSSL
depends on TLS_STACK_WOLFSSL
bool "wolfSSL (License info in wolfSSL directory README)"
endchoice
endmenu

View File

@@ -1,13 +1,6 @@
ifdef CONFIG_LWIP_IPV6
COMPONENT_ADD_INCLUDEDIRS := asio/asio/include port/include
COMPONENT_PRIV_INCLUDEDIRS := private_include
COMPONENT_SRCDIRS := asio/asio/src port/src
ifeq ($(CONFIG_ASIO_SSL_SUPPORT), )
COMPONENT_OBJEXCLUDE := asio/asio/src/asio_ssl.o port/src/esp_asio_openssl_stubs.o
endif
COMPONENT_SRCDIRS := asio/asio/src
COMPONENT_OBJEXCLUDE := asio/asio/src/asio_ssl.o
COMPONENT_SUBMODULES += asio
endif # CONFIG_LWIP_IPV6

View File

@@ -1,8 +1,16 @@
/*
* SPDX-FileCopyrightText: 2018-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
// Copyright 2018 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef _ESP_ASIO_CONFIG_H_
#define _ESP_ASIO_CONFIG_H_
@@ -10,21 +18,12 @@
// Enabling exceptions only when they are enabled in menuconfig
//
# include <sdkconfig.h>
# ifndef CONFIG_COMPILER_CXX_EXCEPTIONS
# ifndef CONFIG_CXX_EXCEPTIONS
# define ASIO_NO_EXCEPTIONS
# endif // CONFIG_COMPILER_CXX_EXCEPTIONS
# ifndef CONFIG_COMPILER_RTTI
# define ASIO_NO_TYPEID
# endif // CONFIG_COMPILER_RTTI
# endif // CONFIG_CXX_EXCEPTIONS
//
// Supress OpenSSL deprecation warning, when building ASIO
//
#define ESP_OPENSSL_SUPPRESS_LEGACY_WARNING
//
// LWIP compatibility inet and address macros/functions
// LWIP compatifility inet and address macros/functions
//
# define LWIP_COMPAT_SOCKET_INET 1
# define LWIP_COMPAT_SOCKET_ADDR 1
@@ -35,13 +34,12 @@
# define ASIO_DISABLE_SERIAL_PORT
# define ASIO_SEPARATE_COMPILATION
# define ASIO_STANDALONE
# define ASIO_NO_TYPEID
# define ASIO_DISABLE_SIGNAL
# define ASIO_HAS_PTHREADS
# ifdef CONFIG_ASIO_USE_ESP_OPENSSL
# define ASIO_USE_ESP_OPENSSL
# define OPENSSL_NO_ENGINE
# elif CONFIG_ASIO_USE_ESP_WOLFSSL
# define ASIO_USE_WOLFSSL
# endif // CONFIG_ASIO_USE_ESP_OPENSSL
# define ASIO_DISABLE_EPOLL
# define ASIO_DISABLE_EVENTFD
# define ASIO_DISABLE_SIGNAL
# define ASIO_DISABLE_SIGACTION
#endif // _ESP_ASIO_CONFIG_H_

View File

@@ -1,16 +1,24 @@
/*
* SPDX-FileCopyrightText: 2018-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
// Copyright 2018 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef _ESP_EXCEPTION_H_
#define _ESP_EXCEPTION_H_
//
// This exception stub is enabled only if exceptions are disabled in menuconfig
//
#if !defined(CONFIG_COMPILER_CXX_EXCEPTIONS) && defined (ASIO_NO_EXCEPTIONS)
#if !defined(CONFIG_CXX_EXCEPTIONS) && defined (ASIO_NO_EXCEPTIONS)
#include "esp_log.h"
@@ -22,10 +30,10 @@ namespace detail {
template <typename Exception>
void throw_exception(const Exception& e)
{
ESP_LOGE("esp32_asio_exception", "Caught exception: %s!", e.what());
ESP_LOGE("esp32_asio_exception", "Caught exception: %s!", e.what());
abort();
}
}}
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS==1 && defined (ASIO_NO_EXCEPTIONS)
#endif // CONFIG_CXX_EXCEPTIONS==1 && defined (ASIO_NO_EXCEPTIONS)
#endif // _ESP_EXCEPTION_H_

View File

@@ -1,18 +0,0 @@
/*
* SPDX-FileCopyrightText: 2020-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef _ESP_ASIO_OPENSSL_CONF_H
#define _ESP_ASIO_OPENSSL_CONF_H
#include "esp_asio_config.h"
#include "openssl/esp_asio_openssl_stubs.h"
#if defined(ASIO_USE_WOLFSSL)
// SSLv3 Methods not present in current wolfSSL library
#define OPENSSL_NO_SSL3
#include_next "openssl/conf.h"
#endif // ASIO_USE_WOLFSSL
#endif // _ESP_ASIO_OPENSSL_CONF_H

View File

@@ -1,15 +0,0 @@
/*
* SPDX-FileCopyrightText: 2020-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef _ESP_ASIO_OPENSSL_DH_STUB_H
#define _ESP_ASIO_OPENSSL_DH_STUB_H
// Dummy header needed for ASIO compilation with esp-openssl
#if defined(ASIO_USE_WOLFSSL)
#include_next "openssl/dh.h"
#endif // ASIO_USE_WOLFSSL
#endif // _ESP_ASIO_OPENSSL_DH_STUB_H

View File

@@ -1,201 +0,0 @@
/*
* SPDX-FileCopyrightText: 2020-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef _ESP_ASIO_OPENSSL_STUBS_H
#define _ESP_ASIO_OPENSSL_STUBS_H
/**
* @note This header contains openssl API which are NOT implemented, and are only provided
* as stubs or no-operations to get the ASIO library compiled and working with most
* practical use cases as an embedded application on ESP platform
*/
#if defined(ASIO_USE_WOLFSSL)
#include "wolfssl/ssl.h"
// esp-wolfssl disables filesystem by default, but the ssl filesystem functions are needed for the ASIO to compile
// - so we could either configure wolfSSL to use filesystem
// - or use the default wolfSSL and declare the filesystem functions -- preferred option, as whenever
// the filesystem functions are used from app code (potential security impact if private keys in a filesystem)
// compilation fails with linking errors.
#if defined(NO_FILESYSTEM)
// WolfSSL methods that are not included in standard esp-wolfssl config, must be defined here
// as function stubs, so ASIO compiles, but would get link errors, if these functions were used.
#ifdef __cplusplus
extern "C" {
#endif
typedef struct WOLFSSL_CTX WOLFSSL_CTX;
void wolfSSL_CTX_set_verify_depth(WOLFSSL_CTX *ctx,int depth);
int SSL_CTX_load_verify_locations(WOLFSSL_CTX*, const char*, const char*);
int SSL_CTX_use_certificate_file(WOLFSSL_CTX*, const char*, int);
int SSL_CTX_use_certificate_chain_file(WOLFSSL_CTX*, const char*);
int SSL_CTX_use_PrivateKey_file(WOLFSSL_CTX*, const char*, int);
int SSL_CTX_use_RSAPrivateKey_file(WOLFSSL_CTX*, const char*, int);
#if defined(__cplusplus)
} /* extern C */
#endif
#endif // NO_FILESYSTEM
#elif defined(ASIO_USE_ESP_OPENSSL)
#include "internal/ssl_x509.h"
#include "internal/ssl_pkey.h"
#include "mbedtls/pem.h"
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
// The most applicable OpenSSL version wrtt ASIO usage
#define OPENSSL_VERSION_NUMBER 0x10100001L
// SSLv2 methods not supported
// OpenSSL port supports: TLS_ANY, TLS_1, TLS_1_1, TLS_1_2, SSL_3
#define OPENSSL_NO_SSL2
#define SSL2_VERSION 0x0002
#define SSL_R_SHORT_READ 219
#define SSL_OP_ALL 0
#define SSL_OP_SINGLE_DH_USE 0
#define SSL_OP_NO_COMPRESSION 0
// Translates mbedTLS PEM parse error, used by ASIO
#define PEM_R_NO_START_LINE -MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT
#define SSL_OP_NO_SSLv2 0x01000000L
#define SSL_OP_NO_SSLv3 0x02000000L
#define SSL_OP_NO_TLSv1 0x04000000L
#define X509_FILETYPE_PEM 1
#define X509_FILETYPE_ASN1 2
#define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1
#define SSL_FILETYPE_PEM X509_FILETYPE_PEM
#define NID_subject_alt_name 85
#define GEN_DNS 2
#define GEN_IPADD 7
#define V_ASN1_OCTET_STRING 4
#define V_ASN1_IA5STRING 22
#define NID_commonName 13
#define SSL_CTX_get_app_data(ctx) ((void*)SSL_CTX_get_ex_data(ctx, 0))
/**
* @brief Frees DH object -- not implemented
*
* Current implementation calls SSL_ASSERT
*
* @param r DH object
*/
void DH_free(DH *r);
/**
* @brief Frees GENERAL_NAMES -- not implemented
*
* Current implementation calls SSL_ASSERT
*
* @param r GENERAL_NAMES object
*/
void GENERAL_NAMES_free(GENERAL_NAMES * gens);
/**
* @brief Returns subject name from X509 -- not implemented
*
* Current implementation calls SSL_ASSERT
*
* @param r X509 object
*/
X509_NAME *X509_get_subject_name(X509 *a);
/**
* @brief API provaded as declaration only
*
*/
int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx);
/**
* @brief API provaded as declaration only
*
*/
int X509_NAME_get_index_by_NID(X509_NAME *name, int nid, int lastpos);
/**
* @brief API provaded as declaration only
*
*/
X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc);
/**
* @brief API provaded as declaration only
*
*/
ASN1_STRING *X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne);
/**
* @brief API provaded as declaration only
*
*/
void *X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx);
/**
* @brief API provaded as declaration only
*
*/
X509 * X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx);
/**
* @brief Reads DH params from a bio object -- not implemented
*
* Current implementation calls SSL_ASSERT
*/
DH *PEM_read_bio_DHparams(BIO *bp, DH **x, pem_password_cb *cb, void *u);
/**
* @brief API provaded as declaration only
*
*/
void * X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx,int idx);
/**
* @brief Sets DH params to ssl ctx -- not implemented
*
* Current implementation calls SSL_ASSERT
*/
int SSL_CTX_set_tmp_dh(SSL_CTX *ctx, const DH *dh);
/**
* @brief API provaded as declaration only
*
*/
void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *data);
/**
* @brief API provaded as declaration only
*
*/
void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb);
/**
* @brief Clears any existing chain associated with the current certificate of ctx.
*
*/
int SSL_CTX_clear_chain_certs(SSL_CTX *ctx);
#if defined(__cplusplus)
} /* extern C */
#endif
#endif /* ASIO_USE_ESP_OPENSSL, ASIO_USE_WOLFSSL */
#endif /* _ESP_ASIO_OPENSSL_STUBS_H */

View File

@@ -1,15 +0,0 @@
/*
* SPDX-FileCopyrightText: 2020-2021 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef _ESP_ASIO_OPENSSL_RSA_STUB_H
#define _ESP_ASIO_OPENSSL_RSA_STUB_H
// Dummy header needed for ASIO compilation with esp-openssl
#if defined(ASIO_USE_WOLFSSL)
#include_next "openssl/rsa.h"
#endif // ASIO_USE_WOLFSSL
#endif // _ESP_ASIO_OPENSSL_RSA_STUB_H

Some files were not shown because too many files have changed in this diff Show More