Compare commits

..

1364 Commits

Author SHA1 Message Date
Ivan Grokhotkov
c18890875e Merge branch 'doc/issue_template_compiler_version' into 'master'
doc: include compiler version in issue template

See merge request idf/esp-idf!3357
2018-11-01 12:16:30 +08:00
Ivan Grokhotkov
a4357aed91 Merge branch 'fix/spi_test_memory_layout' into 'master'
test: fix the unit test fail issue under single_core config

See merge request idf/esp-idf!3596
2018-10-31 21:37:56 +08:00
Jiang Jiang Jian
dba29eeb2e Merge branch 'bugfix/btdm_change_default_CoD_of_BT_profile' into 'master'
components/bt: Set default Class of Device of BT profile

See merge request idf/esp-idf!3564
2018-10-31 20:51:15 +08:00
Jiang Jiang Jian
39c03558e8 Merge branch 'bugfix/btdm_add_attr_handle_for_ESP_GATTS_CONF_EVT' into 'master'
Component/bt: add attr_handle for ESP_GATTS_CONF_EVT

See merge request idf/esp-idf!3492
2018-10-31 17:20:47 +08:00
Michael (XIAO Xufeng)
4132834faa test: fix the unit test fail issue under single_core config
Introduced in 97e3542947.

The previous commit frees the IRAM part when single core, but doesn't
change the memory layout functions. The unit test mallocs IRAM memory
from the heap, accidently into the new-released region, which doesn't
match the memory layout function.

This commit update the memory layout function to fix this.
2018-10-31 17:04:32 +08:00
Angus Gratton
a51d5706f6 Merge branch 'bugfix/minor_doc_fixes' into 'master'
Documentation fixes

See merge request idf/esp-idf!3529
2018-10-31 13:23:58 +08:00
Angus Gratton
e4369aaed4 Merge branch 'feature/mqtt_mutual_auth' into 'master'
MQTT: Added client cert ssl example per PR from GitHub

See merge request idf/esp-idf!3473
2018-10-31 07:06:58 +08:00
Jiang Jiang Jian
97e3542947 Merge branch 'bugfix/release_some_memory_on_single_core_mode' into 'master'
release memory not used in single core mode

See merge request idf/esp-idf!2733
2018-10-30 15:53:31 +08:00
Jiang Jiang Jian
f6dd3520c4 Merge branch 'bugfix/assert_when_do_wps_with_mikrotik' into 'master'
wifi: bugfix of assert when do wps with mikrotik

See merge request idf/esp-idf!3572
2018-10-30 15:52:02 +08:00
Jiang Jiang Jian
d335bdcf71 Merge branch 'bugfix/btdm_reduce_iram_size' into 'master'
components/bt: Reduce IRAM size

See merge request idf/esp-idf!3574
2018-10-30 15:17:06 +08:00
David Cermak
0cdb33c9dd mqtt: ssl mutual authentication example added per PR from github, corrected cmake build, updated per idf style
Merges https://github.com/espressif/esp-idf/pull/2490
2018-10-30 08:04:09 +01:00
Riccardo Binetti
49df479486 mqtt: Add ssl mutual authentication example
Signed-off-by: David Cermak <cermak@espressif.com>
2018-10-30 08:04:09 +01:00
Riccardo Binetti
9ce8e1e5a1 transport_ssl: add support for mutual SSL authentication
Signed-off-by: David Cermak <cermak@espressif.com>
2018-10-30 08:04:09 +01:00
Riccardo Binetti
dec70a7601 esp-tls: add support for mutual SSL authentication
Signed-off-by: David Cermak <cermak@espressif.com>
2018-10-30 08:04:09 +01:00
Angus Gratton
b650d19c6b Merge branch 'bugfix/docs_fixes_from_github' into 'master'
Documentation bugfixes from GitHub

See merge request idf/esp-idf!3570
2018-10-30 07:40:16 +08:00
Deng Xin
b8784a1863 wifi: bugfix of assert when do wps with mikrotik
Problem Decribe

The problem happenned when do wps with a mikrotik router
1. router always want to do connect with 32 without EAP-WSC step
2. after 4 way timeour, 32 crash

Root Cause

The reason why can not start EAP-WSC step is router's check method is RSN > WPA > WPS, when it found there include RSN and WPS in assoc, it will choice do 4 way rather than WPS
The reason of second problem is 32's EAPOL start timer didn't stop and send EAPOL start to a null pointer

Soultion
1. remove RSN and WPA ie when do WPS step
2. check mac address's pointer before send EAPOL start

closes: https://github.com/espressif/esp-idf/issues/2382
2018-10-29 13:29:41 +00:00
baohongde
df5839420d components/bt: Reduce IRAM size
libbtdm: 2608B
idf: 924B
2018-10-29 16:54:32 +08:00
Angus Gratton
98a80ccdab Merge branch 'bugfix/mdns_crash_on_network_change' into 'master'
Fixed mdns crashes on network changes

See merge request idf/esp-idf!3546
2018-10-29 16:31:52 +08:00
Angus Gratton
11082598d6 Merge branch 'bugfix/doc_provisioning' into 'master'
Docs : Provisioning docs and READMEs updated with links to phone apps

See merge request idf/esp-idf!3511
2018-10-29 14:56:32 +08:00
Angus Gratton
7efbe8178b Merge branch 'feat/sdio_slave_init_doc' into 'master'
sdio_slave: add documentation for the standard init process

See merge request idf/esp-idf!3548
2018-10-29 09:07:30 +08:00
Peter Meerwald-Stadler
6a197d305f Fix some typos related to ethernet documentation and Kconfig. Closes https://github.com/espressif/esp-idf/pull/2642 2018-10-28 21:12:09 +01:00
fabianpedd
618236d8ff Fixed spelling in build-system.rst. Closes https://github.com/espressif/esp-idf/pull/2641 2018-10-28 21:07:48 +01:00
baohongde
67e62aa105 components/bt: Set default Class of Device of BT profile
The CoD of each profile both are 0x2c0414, now they are as follow:
A2DP sink:   0x240414
A2DP source: 0x280400
HFP:         0x200408
SPP:         0x001F00
2018-10-26 17:03:39 +08:00
Michael (XIAO Xufeng)
7fe4f987fd sdio_slave: add documentation for the standard init process 2018-10-26 16:56:18 +08:00
Angus Gratton
f55509bd3f Merge branch 'bugfix/py3_ci' into 'master'
Fix Python3 compatibility issues

See merge request idf/esp-idf!3487
2018-10-26 13:45:19 +08:00
Angus Gratton
bd90f534fb Merge branch 'feature/esp_event_loop_library' into 'master'
event: Implement event loop library

See merge request idf/esp-idf!2881
2018-10-26 13:14:19 +08:00
Renz Christian Bagaporo
5a83347bec event: Implement event loop library 2018-10-26 13:14:19 +08:00
Angus Gratton
cdb10ec5ad Merge branch 'bugfix/rename_http_server' into 'master'
Rename http_server component to esp_http_server

See merge request idf/esp-idf!3553
2018-10-26 12:59:38 +08:00
Angus Gratton
76fcee55a6 Merge branch 'bugfix/idf_pyserial_error' into 'master'
idf.py: Import from pyserial after packages have been checked

See merge request idf/esp-idf!3519
2018-10-26 12:58:03 +08:00
Ivan Grokhotkov
9eeec5d7da doc: include compiler version in issue template 2018-10-26 12:47:32 +08:00
morris
0a2049582e bugfix: minor_doc_fixes into Chinese 2018-10-26 12:42:38 +08:00
Ivan Grokhotkov
338012b776 docs: use generated links in CMake getting started guides 2018-10-26 12:42:38 +08:00
Ivan Grokhotkov
5a3c0d8adf esp_timer: document limitations on timeout/period
Closes https://github.com/espressif/esp-idf/issues/2572
Closes https://github.com/espressif/esp-idf/issues/2350
2018-10-26 12:42:38 +08:00
Ivan Grokhotkov
c8fe9f696c docs: fix instructions for building toolchain on macOS
Closes https://github.com/espressif/esp-idf/issues/503
Closes https://github.com/espressif/esp-idf/issues/2607
2018-10-26 12:42:38 +08:00
Ivan Grokhotkov
d3f5882ed7 docs: fix git submodule update command
Closes https://github.com/espressif/esp-idf/issues/2584
2018-10-26 12:42:38 +08:00
Angus Gratton
5bcd864430 Merge branch 'fix/spi_polling_speed_test' into 'master'
spi: speed up polling performance and fix several tests

Closes #33

See merge request idf/esp-idf!3530
2018-10-26 12:41:00 +08:00
Angus Gratton
705d184af2 Merge branch 'bugfix/missing_header_file' into 'master'
esp32: Add missing header file in esp_task.h

See merge request idf/esp-idf!3353
2018-10-26 12:19:50 +08:00
Ivan Grokhotkov
1e0ba34177 Merge branch 'ci/only_create_required_jobs_in_pipeline' into 'master'
CI: only create required jobs when use bot to trigger test

See merge request idf/esp-idf!3404
2018-10-26 11:56:22 +08:00
Jiang Jiang Jian
c884d0a3bc Merge branch 'bugfix/fix_some_wifi_bugs_1022' into 'master'
esp32: fix some wifi bugs

See merge request idf/esp-idf!3539
2018-10-26 11:50:44 +08:00
Jiang Jiang Jian
93dbf2f3ba Merge branch 'bugfix/btdm_read_multiple_return_callback_status_ESP_GATT_STACK_RSP' into 'master'
Component/bt: fix read multiple return callback status: ESP_GATT_STACK_RSP

See merge request idf/esp-idf!3437
2018-10-26 11:41:18 +08:00
Jiang Jiang Jian
0bc364f7ea Merge branch 'bugfix/btdm_add_sniff_mode_to_spp' into 'master'
components/bt: Add sniff mode to SPP

See merge request idf/esp-idf!3472
2018-10-26 11:38:50 +08:00
Jiang Jiang Jian
762c04bd61 Merge branch 'bugfix/btdm_disconnect_ble_when_ESP_BLE_SM_ONLY_ACCEPT_SPECIFIED_SEC_AUTH_failed' into 'master'
Component/bt: add ble disconnect when ACCEPT_SPECIFIED_SEC_AUTH failed

See merge request idf/esp-idf!3465
2018-10-26 11:34:26 +08:00
Liu Zhi Fu
8404b2546d esp32: fix some wifi bugs
Fix following WiFi bugs:
1. Fix the bug that MIC verification fails on soft-AP mode
2. Modify mesh root to have same behavior as normal WiFi STA in state change
3. Fix the bug that sniffer can't catch control packets
4. Fix crash bug in soft-AP mode
5. Fix ACM(Admission Control Management) bug
2018-10-25 16:47:57 +08:00
Jiang Jiang Jian
822de0d038 Merge branch 'bugfix/btdm_fix_remove_bond_list_failed' into 'master'
component/bt: fix remove bond list failed

See merge request idf/esp-idf!3475
2018-10-25 15:14:14 +08:00
Roland Dobai
f59358dad3 idf.py: Import from pyserial after packages have been checked
Closes https://github.com/espressif/esp-idf/issues/2573
2018-10-25 08:38:00 +02:00
zhiweijian
6b96a3c23b Component/bt: add ble disconnect when ACCEPT_SPECIFIED_SEC_AUTH failed 2018-10-25 06:03:16 +00:00
Michael (XIAO Xufeng)
90d229eb6d spi_master: speed up polling performance by putting into IRAM 2018-10-25 12:31:45 +08:00
Michael (XIAO Xufeng)
d0361a32d7 test: fix the IRAM type conflict issue using heap_caps_malloc 2018-10-25 12:31:44 +08:00
zwj
501ebabc4e component/bt: fix remove bond list failed 2018-10-24 23:23:50 +00:00
Anurag Kar
e2b1ae259d Protocomm : Use esp_http_server instead of http_server 2018-10-24 17:32:43 +05:30
Anurag Kar
12b60c51be HTTP Server Docs : Replace http_server with esp_http_server 2018-10-24 17:32:43 +05:30
Anurag Kar
8340ed3ddb HTTP Server Examples : Include header esp_http_server.h 2018-10-24 17:32:43 +05:30
Anurag Kar
2af9d7e0ed HTTP Server : Added esp_ prefix to http_server component files 2018-10-24 17:32:20 +05:30
David Cermak
097282a8e3 mdns: fixed crashes on network changes
1) two events AP_STOP, AP_START shortly after each other may cause IGMP config on already stopped netif
2) not properly locked sending packets to queue from timer task

closes #2580
2018-10-24 12:03:41 +02:00
Roland Dobai
9daf51e6be Fix Python 3 compatibility issues 2018-10-24 11:20:54 +02:00
He Yin Ling
722a7e3b53 CI: only create required jobs when use bot to trigger test:
Gitlab CI now allow us to define if a job need to be created by
varialbes. This commit add label to CI jobs, so we can make some jobs
not created in certain scenarios when we trigger pipeline with @bot.
2018-10-24 09:19:39 +00:00
Angus Gratton
7c29a39d6f Merge branch 'feature/ci_multi_python' into 'master'
CI: Support switching between various versions of Python

See merge request idf/esp-idf!3520
2018-10-24 17:00:38 +08:00
Jiang Jiang Jian
0de637cf9e Merge branch 'bugfix/tw26711_fix_wifi_memory' into 'master'
esp32: fix wifi memory leak

See merge request idf/esp-idf!3523
2018-10-22 21:20:14 +08:00
Angus Gratton
38bd836d05 Merge branch 'feature/cmake-unit-test' into 'master'
cmake: add unit tests build support

See merge request idf/esp-idf!3003
2018-10-22 16:29:15 +08:00
Angus Gratton
b964f389db Merge branch 'bugfix/gcc8_compatibility' into 'master'
gcc8 compatibility for master branch

See merge request idf/esp-idf!3481
2018-10-22 11:11:04 +08:00
Angus Gratton
44291e818e Merge branch 'feature/docs_getting_started_guides_cn' into 'master'
Added CN version of 'Getting Started' guides for 'ESP32-DevKitC' and 'ESP-WROVER-KIT'

See merge request idf/esp-idf!3408
2018-10-22 09:10:58 +08:00
Krzysztof Budzynski
46c2112400 Added CN version of 'Getting Started' guides for 'ESP32-DevKitC' and 'ESP-WROVER-KIT' 2018-10-22 09:10:58 +08:00
Liu Zhi Fu
20217c7dfe esp32: fix wifi memory leak
Fix a WiFi memory leak bug
2018-10-21 20:37:08 +08:00
Anton Maklakov
4319e234e2 tcp_transport: Remove the ignore warning because we had idf/esp-idf!3359 2018-10-21 15:11:45 +08:00
Anton Maklakov
4a126e18ed docs: Correct Linux port names for more relevance 2018-10-21 15:11:45 +08:00
Anton Maklakov
e3fce506b8 test_spi_slave: fix warnings about unused identifiers 2018-10-21 15:11:45 +08:00
Anton Maklakov
ef84773689 intr: fix a type mismatch warning 2018-10-21 15:11:45 +08:00
Anton Maklakov
92caddb501 pthread: fix a type mismatch warning 2018-10-21 15:11:45 +08:00
Renz Bagaporo
cc774111bf cmake: Add support for test build 2018-10-20 12:07:24 +08:00
Roland Dobai
824e5fac23 CI: Support switching between various versions of Python 2018-10-19 11:12:11 +02:00
zhiweijian
44827bb681 Component/bt: add attr_handle for ESP_GATTS_CONF_EVT 2018-10-19 08:19:36 +00:00
Jiang Jiang Jian
129d32772e Merge branch 'feature/add_ping_packet_len_and_QoS' into 'master'
ping: add length and QoS

See merge request idf/esp-idf!3379
2018-10-19 15:29:58 +08:00
Ivan Grokhotkov
0663ab7609 Merge branch 'feature/uart_rs485_test' into 'master'
driver: rs485 test support

See merge request idf/esp-idf!2701
2018-10-19 13:05:55 +08:00
Ivan Grokhotkov
699070e3a0 Merge branch 'feature/simple_sniffer' into 'master'
wifi sniffer example

See merge request idf/esp-idf!3412
2018-10-19 12:42:32 +08:00
Ivan Grokhotkov
606acde236 Merge branch 'feature/freemodbus_slave_support_upd' into 'feature/uart_rs485_test'
examples: freemodbus port slave basic implementation

See merge request idf/esp-idf!3468
2018-10-19 12:35:00 +08:00
Ivan Grokhotkov
3e65ce3e93 Merge branch 'bugfix/unit_tests_tcpip_adapter' into 'master'
unit tests: Only initialise tcpip_adapter() when needed by the test

See merge request idf/esp-idf!3364
2018-10-19 12:33:09 +08:00
Ivan Grokhotkov
bd11965f6c Merge branch 'bugfix/ndebug_build' into 'master'
soc,sdmmc: fix build failures when NDEBUG is used

See merge request idf/esp-idf!3352
2018-10-19 11:55:37 +08:00
morris
900b69a33e example: add console command for wifi sniffer
1. add mount/unmount command
2. add sniffer command, supporting options
3. make pcap a component
2018-10-19 11:51:56 +08:00
Ivan Grokhotkov
c02e218da1 Merge branch 'bugfix/asio_consistent_example_names' into 'master'
Renamed examples to be consistent no matter which build system used

See merge request idf/esp-idf!3257
2018-10-19 10:25:47 +08:00
Ivan Grokhotkov
c76f71cd5f Merge branch 'bugfix/move_ringbuf_lib_to_iram' into 'master'
esp_ringbuf: fix default placement from flash to IRAM

See merge request idf/esp-idf!3452
2018-10-18 22:57:46 +08:00
Ivan Grokhotkov
ebe0e2939a Merge branch 'bugfix/ci_missing_outputs' into 'master'
Tiny-test-fw: Fix string comparison which cases ignore of test cases

See merge request idf/esp-idf!3458
2018-10-18 22:41:48 +08:00
Ivan Grokhotkov
efa43df039 Merge branch 'bugfix/fix_random_failure_with_ota_updates' into 'master'
app_update: fix intermittent failure with firmware updates

See merge request idf/esp-idf!3401
2018-10-18 22:32:33 +08:00
Jiang Jiang Jian
f47ae9fc26 Merge branch 'bugfix/coex_hw_blocking_2nd' into 'master'
coexist : fix coexist bugs related to coex hw blocking

See merge request idf/esp-idf!3414
2018-10-18 21:25:24 +08:00
Anurag Kar
2bb669cfbd Docs : Provisioning docs and READMEs updated with links to GitHub repositories of Android and iOS apps 2018-10-18 18:23:03 +05:30
Jiang Jiang Jian
88d4217f07 Merge branch 'bugfix/fix_autoip_bug' into 'master'
fix the compile bug for autoip

See merge request idf/esp-idf!3450
2018-10-18 14:55:34 +08:00
Angus Gratton
edb59d0909 Merge branch 'bugfix/idf_tools_installer' into 'master'
IDF Tools Installer for Windows: Python requirements, ULP & openocd, signed installer

See merge request idf/esp-idf!3428
2018-10-18 14:22:15 +08:00
Mahavir Jain
26845936b3 app_update: remove unrequired static attribute from mmap handle 2018-10-18 04:38:31 +00:00
Mahavir Jain
b3aff63db4 app_update: fix intermittent failure with firmware updates
Routine `spi_flash_cache2phys` sometimes return incorrect value,
resulting in failure in getting currently running ota partition.
This in turn aborts firmware update process.This issue was more
prominent with SPIRAM enabled cases.

Fix ensures proper cache guards during `spi_flash_cache2phys`, and
also for few other similar APIs.

In addition, `esp_ota_get_running_partition` has also been optimized
to save currently running partition for subsequent invocations.

Fixes https://github.com/espressif/esp-idf/issues/2451
2018-10-18 04:38:31 +00:00
Mahavir Jain
49130c6b34 esp_ringbuf: fix default placement from flash to IRAM
In earlier change this component was decoupled from freertos and hence
regression was introduced which changed default placement to flash. Some
device drivers make use of ringbuffer while flash cache is being disabled
and hence default placement should instead be internal memory.

Closes: https://github.com/espressif/esp-idf/issues/2517
2018-10-17 23:34:07 -05:00
Ivan Grokhotkov
d91b18080b unit test: split psram config into two configs to free up IRAM 2018-10-17 23:34:07 -05:00
Tian Hao
6934a739d7 coexist : fix coexist bugs related to coex hw blocking
1. fix some bugs by previous coex hw blocking bugfix,
   such like, rwble.c (64, 0) line 222
2. fix bug that ble scan performance is very low when software coexist
   is working.
3. update libcoexist version to v1.1.0
2018-10-18 11:49:10 +08:00
Ivan Grokhotkov
18684f53ee Merge branch 'bugfix/uart_wait_idle' into 'master'
uart: fix uart_tx_wait_idle to wait for fifo empty

See merge request idf/esp-idf!3489
2018-10-18 11:25:59 +08:00
Jiang Jiang Jian
9b566a8965 Merge branch 'bugfix/wpa2_fixes' into 'master'
wpa2_enterprise fixes from Github

See merge request idf/esp-idf!3166
2018-10-18 11:10:10 +08:00
Jiang Jiang Jian
7f9dfc060c Merge branch 'mesh/bugfix_esp_ssid_ie' into 'master'
mesh: fix a bug in generating ESP-SSID IE

See merge request idf/esp-idf!3382
2018-10-18 11:06:44 +08:00
Angus Gratton
ca74afd5ca Merge branch 'feature/httpd_sock_err' into 'master'
HTTP Server : Return HTTPD_SOCK_ERR_ based on errno set during send / recv

See merge request idf/esp-idf!3445
2018-10-18 06:59:47 +08:00
Angus Gratton
dac6fd3434 cmake: Fix Windows issue running menuconfig in Command Prompt if winpty on Path
Previous version assumed having winpty on the Path meant that it would be needed,
but some tools (like Atlassian Sourcetree) permanently add winpty to the path.

Symptom is arrow keys not working in menuconfig dialog.
2018-10-18 09:56:16 +11:00
Angus Gratton
da0f9717be Sign IDF Tools installer with 'osslsigncode', update to V1.2
Uninstaller is still unsigned, as currently building and signing in 'wine'
and running Linux osslsigncode inside Inno Setup inside wine is awkward.

Closes https://github.com/espressif/esp-idf/issues/1909
TW20810
2018-10-18 09:56:16 +11:00
Angus Gratton
efd62a50b9 windows: Add License (GPL) display to IDF Tools installer 2018-10-18 09:56:16 +11:00
Angus Gratton
0798251355 windows: Add Python dependencies, openocd, and ULP to installer 2018-10-18 09:56:16 +11:00
Angus Gratton
9509c7c1c1 docs: Recommend native 'cryptography' package on Linux as well 2018-10-18 09:56:16 +11:00
Angus Gratton
159ff6e08e unit tests: Only initialise tcpip_adapter() when needed by the test
Prevents unexpected memory allocations when running tests which
don't require tcpip_adapter.
2018-10-17 22:53:46 +00:00
David Cermak
9784df1c3a asio: examples renamed to have consistent binary names when build in make and CMake 2018-10-17 15:00:26 +02:00
zhiweijian
30ea8c7048 Component/bt: read multiple return callback status: ESP_GATT_STACK_RSP 2018-10-17 12:34:34 +00:00
Anurag Kar
a0961ad79c HTTP Server Docs : Updated to demonstrate handling of timeout errors 2018-10-17 17:36:50 +05:30
Anurag Kar
6a3fa5c180 HTTP Server Examples : Updated examples to manually return 408 and 500 errors 2018-10-17 17:36:50 +05:30
Anurag Kar
1437646ae0 HTTP Server : Automated 408 error response restricted to timeout in receiving packet header 2018-10-17 17:36:50 +05:30
Anurag Kar
ae5989528e HTTP Server : Added helper functions for sending HTTP error 408 and 500 2018-10-17 17:36:50 +05:30
Anurag Kar
30632c0c34 HTTP Server : Bug fixed in httpd_recv logic and updated function descriptions 2018-10-17 17:36:50 +05:30
Anurag Kar
7e04e283d5 HTTP Server : Use getsockopt instead of errno 2018-10-17 17:36:50 +05:30
Anurag Kar
47a106879a HTTP Server : Return HTTPD_SOCK_ERR_ based on errno set during send / recv
This feature allows `httpd_req_recv()` and `httpd_send()` functions to return
specific `HTTPD_SOCK_ERR_` codes in case of socket errors. This is useful
in case of errors like `EAGAIN`, `EINTR`, etc. when the user may want to
retry `httpd_req_recv()` / `httpd_send()` function call.
2018-10-17 17:36:50 +05:30
Alex Lisitsyn
f0eb9985b9 examples: freemodbus port slave basic implementation
This example adds functionality to support basic communication in RS485 networks using Modbus protocol.
This example uses FreeModbus stack and regular UART driver API to communicate in RS485 half duplex mode.
Added initial support of modbus controller pure C api to access device parameters over Modbus transport.
Move freemodbus stack and port files into components folder
Move the modbus_controller interface into components idf folder
Source files updated after review.
Add modbus interface documentation docs/en/api-reference/protocols/modbus.rst
porttimer.c: fix bug with timer1 selected in the Kconfig
Add support of cmake system (added cmake files)

Closes https://github.com/espressif/esp-idf/issues/858
2018-10-17 12:47:12 +02:00
Alex Lisitsyn
5b7b64b946 driver: rs485 test support (remove timeout tag)
Adds test functionality with TEST_CASE_MULTIPLE_DEVICES() macro for RS485 test support.
2018-10-17 12:47:12 +02:00
Alex Lisitsyn
61bc733791 driver: rs485 test support
Adds test functionality with TEST_CASE_MULTIPLE_DEVICES() macro for RS485 test support.
2018-10-17 12:45:56 +02:00
qiyueixa
71b5dcfd73 mesh: fix a bug in generating ESP-SSID IE
1. wifi: if Wi-Fi is not scanning, ignore beacons from different channels.
2018-10-17 17:52:29 +08:00
zhangyanjiao
32f3972284 add ping length and QoS 2018-10-17 09:39:27 +00:00
zhangyanjiao
e3322bde6f fix the compile bug for autoip 2018-10-17 09:32:08 +00:00
Roland Dobai
374f92c0a0 Tiny-test-fw: Fix string comparison which cases ignore of test cases
Example tests from examples/protocols/http_server/ were silently ignored
because of incompatible string comparisons.
2018-10-17 11:07:04 +02:00
Angus Gratton
222a7118a9 Merge branch 'docs/freertos_words_to_bytes' into 'master'
FreeRTOS: Update API reference from words to bytes

See merge request idf/esp-idf!3453
2018-10-17 16:41:28 +08:00
Ivan Grokhotkov
d57132b212 Merge branch 'bugfix/tw26696_fix_wifi_timer' into 'master'
esp32: fix WiFi timer inaccurate bug

See merge request idf/esp-idf!3471
2018-10-17 16:37:22 +08:00
Angus Gratton
b573812d39 Merge branch 'feature/sockets_example' into 'master'
Feature/sockets example

See merge request idf/esp-idf!3447
2018-10-17 15:24:38 +08:00
Angus Gratton
813c0748e7 Merge branch 'feature/i2c-tools' into 'master'
add i2c-tools example

See merge request idf/esp-idf!3483
2018-10-17 15:23:48 +08:00
Angus Gratton
dad3531f96 Merge branch 'update/mfg_gen' into 'master'
Update mfg utility and nvs partition utility to make Python2 and Python3 compatible

See merge request idf/esp-idf!3243
2018-10-17 15:23:27 +08:00
Liu Zhi Fu
1afb8001dd esp32: fix WiFi timer inaccurate bug
Fix the bug that WiFi timer is not accurate when sleep is on
2018-10-17 09:47:25 +08:00
Angus Gratton
95e4bdf030 Merge branch 'bugfix/run_esptool_espport' into 'master'
cmake: Handle ESPPORT environment variable correctly

See merge request idf/esp-idf!3482
2018-10-17 08:14:20 +08:00
morris
6d1e23796f i2c/i2c-tools: add i2c-tools example
1. add command i2cconfig
2. add command i2cdetect
3. add command i2cget
4. add command i2cset
5. add command i2cdump
6. add README.md
2018-10-16 16:13:21 +08:00
MartinValik
5a76f1af19 BSD Socket examples 2018-10-16 09:48:57 +02:00
Angus Gratton
66a54c7abf Merge branch 'feature/34_coding_scheme' into 'master'
bootloader: 3/4 Coding Scheme support

See merge request idf/esp-idf!3430
2018-10-16 15:07:43 +08:00
Angus Gratton
f53fef9936 Secure Boot & Flash encryption: Support 3/4 Coding Scheme
Includes esptool update to v2.6-beta1
2018-10-16 16:24:10 +11:00
Angus Gratton
7d7975d6c6 Merge branch 'bugfix/fuzzer_ci_tests_to_new_lwip' into 'master'
LWIP Fuzzer: updated fuzzer tests to be compatible with new lwip module

See merge request idf/esp-idf!3278
2018-10-16 08:01:00 +08:00
Ivan Grokhotkov
508fb79a26 uart: fix uart_tx_wait_idle to wait for fifo empty
In some cases, when data was just written into UART FIFO, transmitter
state could be still zero while the FIFO did contain some data.
This resulted in uart_tx_wait_idle occasionally returning before all
the data was sent out.
Fix by checking both UART transmitter state and TX FIFO count.
2018-10-15 20:08:16 +08:00
Angus Gratton
88625a2501 Merge branch 'bugfix/guide-download' into 'master'
Docs: Renamed download links to clearly state they are to download documentation.…

See merge request idf/esp-idf!3271
2018-10-15 16:27:44 +08:00
Jeroen Domburg
a78fd2b13c Merge branch 'feature/64mb_psram_support_base' into 'master'
Feature/64mb psram support base

See merge request idf/esp-idf!2887
2018-10-15 15:54:10 +08:00
Ivan Grokhotkov
a1f809fcc5 bootloader: provide implementation of abort
ROM definition of `abort` was removed in 9240bbb. The old definition
resulted in a panic due to a jump to a null pointer (abort member in
ROM stub table was zero). The new definition triggers a debug
exception if JTAG is connected, or goes into an infinite loop to be
reset by the WDT.
2018-10-15 15:02:56 +08:00
Ivan Grokhotkov
a20d9287fe soc: use _EARLY versions of ESP_LOG
Some logging done in soc component may happen before logging via
stdout is possible. Use _EARLY version of log calls to make sure that
output is visible. The downside is that application does not have a
way to silence these logs. However since the soc component doesn’t
use any LOGV/LOGD/LOGI and only logs warnings and errors, this should
not impact the application.
2018-10-15 14:59:46 +08:00
Ivan Grokhotkov
ab68b9d90d soc,sdmmc: fix build failures when NDEBUG is used
Use explicit error checking instead of asserts, use SOC_LOG to print
error/warning messages where needed.
2018-10-15 14:57:12 +08:00
Jeroen Domburg
81e35a142a Spiram: Add option to reserve MMU banks; add himem API to make use of those banks 2018-10-15 14:32:58 +08:00
Angus Gratton
897670b0ab cmake: Handle ESPPORT environment variable correctly
Closes https://github.com/espressif/esp-idf/issues/2553
2018-10-15 10:25:44 +11:00
Angus Gratton
1ee2bc46ed Merge branch 'doc/update_i2c_example_readme' into 'master'
cleanup readme of i2c example

See merge request idf/esp-idf!3449
2018-10-15 06:34:48 +08:00
Shivani Tipnis
75a4007675 Merge remote-tracking branch 'refs/remotes/origin/update/mfg_gen' into update/mfg_gen 2018-10-12 11:05:02 +05:30
Shivani Tipnis
7c08fcccaf util: Update docs as per review comments 2018-10-12 11:04:49 +05:30
Shivani Tipnis
5bee9faf49 tools: Add Python2 and Python3 compatibility support to nvs util tool and mfg tool 2018-10-12 11:04:49 +05:30
Shivani Tipnis
1d38d8a17f nvs_util: Add Python2 and Python3 compatible 2018-10-12 11:04:49 +05:30
Shivani Tipnis
0f6bcec2bc nvs_part_gen: Add changes to partition size input 2018-10-12 11:04:49 +05:30
Shivani Tipnis
60df21115e nvs_part_gen: Update to make python version compatible
(cherry picked from commit 3506b2d60792e5d4ed4f744b28f2da6733c6aae7)
2018-10-12 11:04:49 +05:30
Shivani Tipnis
302d339640 mfg_gen: Add changes to make Python2 and Python3 compatible 2018-10-12 11:04:49 +05:30
Shivani Tipnis
1f49e64730 Update mfg utility as per updated nvs partition util 2018-10-12 11:04:49 +05:30
Shivani Tipnis
1460f03065 nvs_util: Add Python2 and Python3 compatible 2018-10-12 11:04:49 +05:30
Shivani Tipnis
fb31788504 nvs_part_gen: Add changes to partition size input 2018-10-12 11:04:49 +05:30
Shivani Tipnis
4bc87a414f nvs_part_gen: Update to make python version compatible
(cherry picked from commit 3506b2d60792e5d4ed4f744b28f2da6733c6aae7)
2018-10-12 11:04:49 +05:30
Shivani Tipnis
807e72adce mfg_gen: Add changes to make Python2 and Python3 compatible 2018-10-12 11:04:49 +05:30
Shivani Tipnis
17c907b35e Update mfg utility as per updated nvs partition util 2018-10-12 11:04:49 +05:30
Shivani Tipnis
94f6b1a9ee util: Update docs as per review comments 2018-10-12 10:16:39 +05:30
baohongde
a6d054b079 components/bt: Add sniff mode to SPP
In idle state for a while, SPP will enter sniff mode.
2018-10-12 11:22:28 +08:00
morris
89d7f7bc89 doc/i2c-example: cleanup readme of i2c example
1. Update i2c README to add more detail according to the template.[TW#26530]
2. Move some specific configuration to KConfig
2018-10-12 10:24:39 +08:00
Angus Gratton
12bf6e599c Merge branch 'bugfix/doc_get_started_cmake' into 'master'
doc : Corrected git clone command parameters under get-started-cmake

See merge request idf/esp-idf!3466
2018-10-12 07:01:27 +08:00
Shivani Tipnis
64728a74f9 tools: Add Python2 and Python3 compatibility support to nvs util tool and mfg tool 2018-10-11 17:58:12 +05:30
Shivani Tipnis
b521f1b8ba nvs_util: Add Python2 and Python3 compatible 2018-10-11 17:58:12 +05:30
Shivani Tipnis
0064357a98 nvs_part_gen: Add changes to partition size input 2018-10-11 17:58:12 +05:30
Shivani Tipnis
226b6929e5 nvs_part_gen: Update to make python version compatible
(cherry picked from commit 3506b2d60792e5d4ed4f744b28f2da6733c6aae7)
2018-10-11 17:56:21 +05:30
Shivani Tipnis
24fa2342e8 mfg_gen: Add changes to make Python2 and Python3 compatible 2018-10-11 17:52:57 +05:30
Shivani Tipnis
dd2bc7256d Update mfg utility as per updated nvs partition util 2018-10-11 17:52:24 +05:30
Shivani Tipnis
dca5ac78f0 nvs_util: Add Python2 and Python3 compatible 2018-10-11 17:50:55 +05:30
Shivani Tipnis
cd7dcd0c85 nvs_part_gen: Add changes to partition size input 2018-10-11 17:50:55 +05:30
Shivani Tipnis
ff30a1fbd3 nvs_part_gen: Update to make python version compatible
(cherry picked from commit 3506b2d60792e5d4ed4f744b28f2da6733c6aae7)
2018-10-11 17:50:55 +05:30
Shivani Tipnis
98433d48f1 mfg_gen: Add changes to make Python2 and Python3 compatible 2018-10-11 17:50:55 +05:30
Shivani Tipnis
bc39e9ac75 Update mfg utility as per updated nvs partition util 2018-10-11 17:50:55 +05:30
Anurag Kar
9f1b38a4aa doc : Corrected git clone command parameters under get-started-cmake
Closes https://github.com/espressif/esp-idf/issues/2538
2018-10-11 11:38:55 +05:30
David Cermak
67153be14f lwip: updated fuzzer tests to be compatible with new lwip module 2018-10-11 08:05:14 +02:00
Jiang Jiang Jian
1a743ad66d Merge branch 'bugfix/several_bugfix_about_ba_session_setup' into 'master'
esp32: several fixes/optimizations about BlockAck(BA) setup

See merge request idf/esp-idf!3374
2018-10-11 11:28:20 +08:00
Angus Gratton
299704cec3 Merge branch 'feature/unified_provisioning' into 'master'
provisioning: This patch adds the unified provisioning support

See merge request idf/esp-idf!2812
2018-10-10 16:29:11 +08:00
Angus Gratton
3e0ff8e843 Merge branch 'doc/nvs_encr_doc' into 'master'
nvs_flash: Update documentation at various places to indicate NVS encryotion is supported

See merge request idf/esp-idf!3431
2018-10-10 14:58:15 +08:00
Angus Gratton
31cf117404 Merge branch 'feature/bss_seg_in_external_memory' into 'master'
memory:   support .bss segment can be in psram

See merge request idf/esp-idf!2236
2018-10-10 14:40:21 +08:00
Angus Gratton
fc2230aeda Merge branch 'feature/error_check_without_abort' into 'master'
esp32: Add macro to check a condition without abort

See merge request idf/esp-idf!3348
2018-10-10 14:31:38 +08:00
Angus Gratton
f1ccd47fdb Merge branch 'bugfix/fix_psram_eid' into 'master'
bugfix(psram): fix psram eid

See merge request idf/esp-idf!3392
2018-10-10 11:37:43 +08:00
Angus Gratton
7904da0600 Merge branch 'bugfix/httpd_default_content_type' into 'master'
HTTP Server : Default content type of response should be HTTPD_TYPE_TEXT

See merge request idf/esp-idf!3443
2018-10-10 08:21:56 +08:00
Angus Gratton
aaacd5412d Merge branch 'bugfix/httpd_chunked_content_len' into 'master'
Remove Content-Length from chunked encoding

See merge request idf/esp-idf!3442
2018-10-10 08:21:50 +08:00
Angus Gratton
0ea8a2abfd Merge branch 'feature/docs_update_mcpwm_api' into 'master'
MCPWM API doc update

See merge request idf/esp-idf!1602
2018-10-10 08:15:23 +08:00
Krzysztof Budzynski
cd5f8bcf74 MCPWM API doc update 2018-10-10 08:15:23 +08:00
Darian Leung
6f91640690 FreeRTOS: Update API reference from words to bytes
This commit updates some of the API references in task.h so
that stack sizes are referred to in bytes rather than words as
found in the vanilla version.

Closes #2528
2018-10-09 20:49:19 +08:00
Jiang Jiang Jian
9c148f6ad6 Merge branch 'bugfix/btdm_fix_connect_interval_error_in_slave_adv_params' into 'master'
Component/bt: fix connection interval error in slave adv params

See merge request idf/esp-idf!3407
2018-10-09 17:01:44 +08:00
Roland Dobai
d4e572bdb1 esp32: Add macro to check a condition without abort
Closes https://github.com/espressif/esp-idf/issues/2325
2018-10-09 08:57:23 +02:00
Liu Zhi Fu
660770ea97 esp32: several fixes about BA session setup
1. Fix the bug that ESP32 will reject the retry AddBA request frame
   if AddBA response frame is failed to sent by WiFi LMAC
2. Fix the bug that AddBA request retrys too frequently
3. Forbid BA session setup for VO queue related TID
2018-10-09 12:07:30 +08:00
Angus Gratton
a7bdd288f0 Merge branch 'bugfix/downgrade_future' into 'master'
Change python-future to 0.15.2 (again)

See merge request idf/esp-idf!3423
2018-10-09 11:06:45 +08:00
Jiang Jiang Jian
83d4081fba Merge branch 'bugfix/fix_close_socket_crash_bug' into 'master'
lwip: fix the crash when close socket

See merge request idf/esp-idf!3384
2018-10-08 21:23:57 +08:00
Anurag Kar
8be9e0946f HTTP Server : Default content type of response should be HTTPD_TYPE_TEXT
Closes https://github.com/espressif/esp-idf/issues/2527
2018-10-08 18:12:15 +05:30
chenjianqiang
a10b7e892c bugfix(psram): fix psram driver
1. remove use EID to distinguish psram voltage
2. 1V8 64Mbit psram and 3V3 64Mbit psram use the same psram driver(standard spi interface)
3. set cs hold time register as 1
2018-10-08 19:55:13 +08:00
Assaf Inbal
f4e867a148 Remove Content-Length from chunked encoding
Content-Length header should not be included when using chunked encoding.
Some browsers will close the socket after seeing the 0 sized response instead of
reading the chunks.

Merges https://github.com/espressif/esp-idf/pull/2458
2018-10-08 15:58:41 +05:30
Angus Gratton
05c510b44e Merge branch 'test/spi_slave_psram_disable' into 'master'
test: disable the spi slave startup test when psram is enabled

See merge request idf/esp-idf!3373
2018-10-08 16:28:41 +08:00
Angus Gratton
a85a633384 Merge branch 'fix/spi_master_cmd_addr_lsbfirst' into 'master'
spi_master: fix the command and address field when LSB_FIRST enabled

See merge request idf/esp-idf!3398
2018-10-08 16:26:27 +08:00
Jiang Jiang Jian
221eced06d Merge branch 'bugfix/no_disconnect_event_report_if_no_correct_status_code_report' into 'master'
WiFi: bugfix of no disconnect event report if no correct status code report

See merge request idf/esp-idf!3370
2018-10-08 15:59:07 +08:00
Angus Gratton
1d58429bad Merge branch 'feature/global_ca_store' into 'master'
esp_tls: Support for global CA store.

See merge request idf/esp-idf!3432
2018-10-08 14:51:02 +08:00
Angus Gratton
e99035af94 Merge branch 'feature/ethernet_example_iperf' into 'master'
ethernet: add iperf example to test real bandwidth

See merge request idf/esp-idf!3332
2018-10-08 12:27:05 +08:00
morris
7bc36d23e1 ethernet: add iperf example to test real bandwidth
1. Add command for Ethernet based on console component.
2. Make cmd_system and iperf a component that can be referenced by other examples
3. Add "version" command to cmd_system.c
4. Clean up the README.md in all ethernet examples[TW#26525]
2018-10-08 09:51:17 +08:00
Angus Gratton
a95dd4712b Merge branch 'doc/rmt_readme_typo_fix' into 'master'
doc(rmt): fixed some typos in rmt example readme file

See merge request idf/esp-idf!3283
2018-10-08 07:25:10 +08:00
Chirag Atal
b7cca3c414 Feature: Support for global CA store.
Added a new API esp_tls_set_global_ca_store(esp_tls_cfg_t *cfg) which creates a global_cacert which can be used by multiple connections by setting the use_global_ca_store variable to true in their respective structure of esp_tls_cfg_t. Also changed the cacert in the structure of esp_tls_t to a pointer.
2018-10-05 19:35:57 +05:30
Sagar Bijwe
454b69d2ea nvs_flash: Update documentation at different places to indicate NVS encryotion is supported 2018-10-05 14:05:21 +05:30
Angus Gratton
1b272bb77e Merge branch 'bugfix/rom_export_functions' into 'master'
esp32, bootloader: fix issues related to linking order

See merge request idf/esp-idf!3375
2018-10-05 12:40:05 +08:00
Angus Gratton
7313e39fde Merge branch 'feature_add_path_tools_pr2410' into 'master'
add_path.sh: cmake: add tools folder to the path

See merge request idf/esp-idf!3344
2018-10-05 12:34:10 +08:00
Angus Gratton
ee0ebc1e1a Merge branch 'test/enhanced_unit_test_config_dependency' into 'master'
test: enhanced config dependency support for CI

See merge request idf/esp-idf!3383
2018-10-05 09:21:30 +08:00
Angus Gratton
445567d067 Merge branch 'bugfix/windows_msys2_updates' into 'master'
Windows: Update MSYS2 environment, catch some MSYS2 Python quirks

See merge request idf/esp-idf!3417
2018-10-05 08:06:47 +08:00
michael
6b180f70ac test: modify the command/address test a bit to test the LSBFIRST feature 2018-10-04 15:03:26 +08:00
michael
e5ed450d95 spi: move gpio direction config to common func for coinsistence
(MINOR CHANGE)
2018-10-04 14:57:31 +08:00
Michael (XIAO Xufeng)
2600f43822 spi_master: fix the command and address field when LSB_FIRST enabled
Resolves https://github.com/espressif/esp-idf/issues/2444.
2018-10-04 14:57:30 +08:00
Angus Gratton
3977d4b565 Merge branch 'feature/transpost_methods_renamed_no_collision' into 'master'
Renamed transport header files to esp_ prefixed

See merge request idf/esp-idf!3359
2018-10-04 13:11:49 +08:00
Angus Gratton
594dcd525b Merge branch 'bugfix/esp_error_check_silent' into 'master'
esp_err: Don't compile in error message strings in "silent assertions" mode

See merge request idf/esp-idf!3418
2018-10-03 14:33:09 +08:00
Angus Gratton
d8d85ed8e8 Merge branch 'feature/sigmadelta-example-update-readme' into 'master'
Updated sigma-delta example description to the latest template

See merge request idf/esp-idf!3388
2018-10-03 09:50:27 +08:00
Anurag Kar
2d199dc521 Docs : Added Provisioning and Protocomm related docs
Co-Authored-By: Amey Inamdar <amey@espressif.com>
Co-Authored-By: Anurag Kar <anurag.kar@espressif.com>
2018-10-02 19:07:28 +05:30
Anurag Kar
84f094453b Examples : Added provisioning examples, tests and client tool.
* BLE and softAP provisioning examples added along with tests.
* An application specific example added for demonstrating custom provisioning scheme.
* tools/esp_prov/esp_prov.py can be used as a provisioning client for SoftAP, BLE and CLI based transports.

Co-Authored-By: Amey Inamdar <amey@espressif.com>
Co-Authored-By: Anurag Kar <anurag.kar@espressif.com>
2018-10-02 19:07:28 +05:30
Amey Inamdar
2b52465416 WiFi Provisioning : Added component providing framework for configuring WiFi credentials during provisioning
Co-Authored-By: Amey Inamdar <amey@espressif.com>
Co-Authored-By: Anurag Kar <anurag.kar@espressif.com>
2018-10-02 19:07:28 +05:30
Amey Inamdar
9428375368 Protocomm : Added support for choice of transport - WiFi (SoftAP+HTTPD), BLE, Console (development friendly transport)
Co-Authored-By: Amey Inamdar <amey@espressif.com>
Co-Authored-By: Anurag Kar <anurag.kar@espressif.com>
2018-10-02 19:07:28 +05:30
Amey Inamdar
e94dffc9c5 Protocomm : Added unit tests and protobuf-c generated files
Co-Authored-By: Amey Inamdar <amey@espressif.com>
Co-Authored-By: Anurag Kar <anurag.kar@espressif.com>
2018-10-02 19:07:28 +05:30
Amey Inamdar
d0c777b2e1 Protocomm : Added component core for protocol communication
* This manages secure sessions and provides framework for multiple transports.
* The application can use protocomm layer directly to have application specific extensions for provisioning (or non-provisioning) use cases.
* Following features are available for provisioning :

  * Security - Security0 (no security), Security1 (curve25519 key exchange + AES-CTR encryption)
  * Proof-of-possession support for Security1

* Protocomm requires specific protocol buffer modules for compilation which can be generated from the `.proto` files in the `proto` directory using make.

Co-Authored-By: Amey Inamdar <amey@espressif.com>
Co-Authored-By: Anurag Kar <anurag.kar@espressif.com>
2018-10-02 19:07:28 +05:30
Amey Inamdar
3ba8eed60a protobuf-c : Added Google's protocol buffer C library as sub-module
Source https://github.com/protobuf-c/protobuf-c

Co-Authored-By: Amey Inamdar <amey@espressif.com>
Co-Authored-By: Anurag Kar <anurag.kar@espressif.com>
2018-10-02 19:07:28 +05:30
David Cermak
0d4f5cc495 tcp_transport: transport set handle refactoring, web socket client name updated 2018-10-02 15:19:46 +02:00
David Cermak
e02225cc07 tcp_transport: renamed possibly generic function names to be esp_ prefixed and not to colide with user namespace 2018-10-02 14:16:48 +02:00
Anton Maklakov
2c5a25a42e tcp_transport: Use getrandom() instead of rand() in the entire esp-mqtt
Signed-off-by: David Cermak <cermak@espressif.com>
2018-10-02 14:16:26 +02:00
Anton Maklakov
e3c6839802 tcp_transport: Fix warning, put in order the nearest code, replace sprintf with snprintf
Signed-off-by: David Cermak <cermak@espressif.com>
2018-10-02 14:15:27 +02:00
David Cermak
40c6cbb3ab tcp_transport: renamed transport related header files to esp_ prefixed to avoid collisions
tcp_transport component used public header files such as 'transport.h', etc. which are too generic and might collide with user or user libraries headers
This change closes #2417
2018-10-02 14:15:00 +02:00
Angus Gratton
127693126a esp_err: Don't compile in error message strings in "silent assertions" mode
Reported on forum https://esp32.com/viewtopic.php?f=13&t=7396&p=31419#p31419
2018-10-02 17:00:57 +10:00
Angus Gratton
4faa2a8e52 Merge branch 'bugfix/bootloader_gen_secure_boot_digest' into 'master'
bootloader: Fix secure boot digest generation for image length where (len%128 < 32)

See merge request idf/esp-idf!3410
2018-10-02 14:55:21 +08:00
Deomid Ryabkov
6a3f486bdc Change python-future to 0.15.2 (again)
Merges https://github.com/espressif/esp-idf/pull/2492
2018-10-02 08:18:13 +02:00
Angus Gratton
326d791ebb bootloader: Fix secure boot digest generation for image length where (len%128 < 32) 2018-10-02 15:17:14 +10:00
Ivan Grokhotkov
9240bbb708 esp32: remove ROM functions redefined in IDF from LD script
In some cases, linker could choose to use ROM functions instead of the
ones defined in IDF.
For functions used in ROM stub table, this would lead to infinite
recursion when the corresponding function was called from ROM.
For crypto functions, some of these were modified in IDF, and
incompatible with ROM counterparts.
2018-10-02 01:20:04 +00:00
Ivan Grokhotkov
f694d057be bootloader_support: exclude bootloader_init.c when building app
Depending on link order of libraries, bootloader implementation of
__assert_func could be linked instead of the one provided by newlib.
2018-10-02 01:20:04 +00:00
Angus Gratton
98b42a8b71 Merge branch 'bugfix/disable_coding_scheme_security_features' into 'master'
bootloader: Don't enable secure boot or flash encryption for 3/4 Coding Scheme

See merge request idf/esp-idf!3369
2018-10-02 07:54:11 +08:00
Ivan Grokhotkov
23984c8a03 Merge branch 'bugfix/rtc_fastmem_data_init' into 'master'
esp32: fixes related to CONFIG_ESP32_RTCDATA_IN_FAST_MEM

See merge request idf/esp-idf!3403
2018-10-01 18:13:43 +08:00
Angus Gratton
246a608db0 windows: Special check for some MSYS2 Python packages
MSYS2 MINGW requires some particular MSYS2-specific packages.

Closes https://github.com/espressif/esp-idf/issues/2480
Closes https://github.com/espressif/esp-idf/issues/2474
Closes https://github.com/espressif/esp-idf/issues/2486
2018-10-01 17:21:48 +10:00
Angus Gratton
319fa2264f windows: Update MSYS2 environment, add Python requirements to setup script 2018-10-01 16:16:49 +10:00
Angus Gratton
c526839453 Merge branch 'bugfix/win_toolchain_version' into 'master'
build: Fix checking the toolchain version on Windows

See merge request idf/esp-idf!3356
2018-10-01 14:03:52 +08:00
Ivan Grokhotkov
94e5ffdedc Merge branch 'bugfix/workaround_free_peripherals_isr_when_using_dual_core' into 'master'
driver(interrupt): fix the issue that interrupt might be allocated and freed on different cores.

See merge request idf/esp-idf!3152
2018-09-30 21:42:52 +08:00
zhiweijian
fe7fd3bf4d Component/bt: fix connection interval error in slave adv params 2018-09-30 11:14:27 +00:00
Jiang Jiang Jian
fda865b002 Merge branch 'bugfix/btdm_watchdog_timeout_after_pair_with_iphone' into 'master'
component/bt: Fix BTU task watchdog timeout after pair with iphone

See merge request idf/esp-idf!3366
2018-09-30 14:39:00 +08:00
Jiang Jiang Jian
42a9f99bc8 Merge branch 'bugfix/btdm_controller_stuck_on_waking_up' into 'master'
bugfix/btdm_controller_stuck_on_waking_up

See merge request idf/esp-idf!3395
2018-09-30 14:25:58 +08:00
Jiang Jiang Jian
a662002924 Merge branch 'bugfix/btdm_add_sequential_check_when_add_include_service' into 'master'
component/bt: add sequential check when add include service

See merge request idf/esp-idf!3277
2018-09-30 14:19:54 +08:00
Zhi Wei Jian
5d71940178 component/bt: add sequential check when add include service 2018-09-30 14:19:54 +08:00
Jiang Jiang Jian
d6bc6fad8b Merge branch 'bugfix/btdm_add_ESP_BLE_SM_ONLY_ACCEPT_SPECIFIED_SEC_AUTH_in_set_security_param_API' into 'master'
Component/bt: add only accept sepecified authentication function for SMP

See merge request idf/esp-idf!3385
2018-09-30 14:18:23 +08:00
Jiang Jiang Jian
545778c9a9 Merge branch 'docs/wifi_correct_mistake_in_csi_doc' into 'master'
esp32: correct a mistake about secondary channel of CSI in wifi.rst

See merge request idf/esp-idf!3405
2018-09-30 13:47:52 +08:00
Ivan Grokhotkov
757de2518d Merge branch 'doc/can_remove_disclaimer' into 'master'
can: remove license disclaimer

See merge request idf/esp-idf!3381
2018-09-30 12:05:08 +08:00
zhiweijian
3050e55801 Component/bt: add only accept sepecified Authentication 2018-09-29 21:23:55 +08:00
Jiang Jiang Jian
7014c14537 Merge branch 'bugfix/btdm_add_service_source_param_for_ESP_GATTC_SEARCH_CMPL_EVT' into 'master'
Component/bt: add “service from” param for ESP_GATTC_SEARCH_CMPL_EVT

See merge request idf/esp-idf!3399
2018-09-29 20:18:26 +08:00
Jiang Jiang Jian
df1ab11a8e Merge branch 'bugfix/btdm_fix_service_change_cannot_read_write_and_no_descr' into 'master'
Component/bt: fix service change char can’t read and write and no descr

See merge request idf/esp-idf!3402
2018-09-29 20:16:07 +08:00
Deng Xin
b557cca6b9 WiFi: bugfix of no disconnect event report if no correct status code report
Problem Description

The reporduce steps are as follows:
1. put more than one same ssid AP in the environment;
2. set the STA mac address in one of the APs blacklist, and make sure the AP is closest to STA;
3. set the scan method in station config as all channel scan;
4. try to connect the AP which set STA in blacklist

Phenmenon

STA fail to connect after send auth or assoc with a wrong status code, but no disconnect event report and can not connect the next one in the envrionment

Root Cause

Because there are some same ssid APs in the evnrionment, when do all channel scan, it will collect all the matched AP in rc list, because rc list is not empty, so it would send disconnect event, however, we didn't do other step such as connect to other one

VNC MR 570

closes https://github.com/espressif/esp-idf/issues/2323
2018-09-29 16:16:22 +08:00
XiaXiaotian
5e1b05abc3 esp32: correct a mistake about secondary channel of CSI in wifi.rst 2018-09-29 15:32:09 +08:00
Ivan Grokhotkov
c4a712b0bc sleep: fix checking length of RTC data sections
_rtc_data_{start,end} can now describe data placed into RTC_FAST
segment, if CONFIG_ESP32_RTCDATA_IN_FAST_MEM is enabled.
Use new _rtc_slow_length symbol instead.
2018-09-29 14:02:16 +08:00
Ivan Grokhotkov
70412928de esp32: fix placement of .rtc_noinit
When CONFIG_ESP32_RTCDATA_IN_FAST_MEM is enabled, .rtc_noinit should
be in RTC_FAST memory, same as .rtc.data
2018-09-29 14:02:16 +08:00
Ivan Grokhotkov
3e1c065493 esp32/test: split rtc_fast test cases
Move runtime behaviour test cases into test_reset_reason.c, move
placement test cases into test_rtc_fast.c
2018-09-29 14:02:16 +08:00
Ivan Grokhotkov
22b840f3df bootloader: don’t reload RTC_FAST DRAM after deep sleep
When CONFIG_ESP32_RTCDATA_IN_FAST_MEM is enabled, RTC data is placed
into RTC_FAST memory region, viewed from the data bus. However the
bootloader was missing a check that this region should not be
overwritten after deep sleep, which caused .rtc.bss segment to loose
its contents after wakeup.
2018-09-29 14:02:16 +08:00
He Yin Ling
252b9ad5ea Merge branch 'ci/adjust_expire_time_for_artifacts' into 'master'
ci: adjust expire time for CI artifacts:

See merge request idf/esp-idf!3327
2018-09-29 13:43:01 +08:00
He Yin Ling
b4fe43912f ci: adjust expire time for CI artifacts:
set shorter time to save some space on server. For those artifacts need
to be stored for long time, we can manually press "keep" button in job page.

Also add a CI job to check if all artifacts have set expire time.
2018-09-29 03:54:14 +00:00
zhiweijian
e6d737780a Component/bt: add “service from” param for ESP_GATTC_SEARCH_CMPL_EVT 2018-09-28 12:59:01 +00:00
zhiweijian
54b841dc30 Component/bt: fix service change char can’t read and write and no descr 2018-09-28 19:57:25 +08:00
Krzysztof
bce5d7ba01 Implemented the first round of review comments 2018-09-28 14:04:22 +08:00
Krzysztof
cc52029d14 Updated sigma-delta example description to the latest template 2018-09-28 14:04:22 +08:00
wangmengyang
334cb88256 component/bt: bugfix that hci down stream datapath is unblocked too early on waking up from sleep
This issue can cause the controller to stuck after sleep interrupt happens and clock interrupt enabled
2018-09-28 03:45:52 +00:00
Ivan Grokhotkov
0a7065195c Merge branch 'bugfix/regression_in_light_sleep_mode' into 'master'
esp32: fix regression introduced in automatic light sleep pm

See merge request idf/esp-idf!3371
2018-09-28 09:49:39 +08:00
Ivan Grokhotkov
4981c10ab3 Merge branch 'fix/sdio_slave_reset_ret_queue' into 'master'
sdio_slave: fix the ret_queue crash issue when being reset by the master

See merge request idf/esp-idf!3360
2018-09-27 18:25:57 +08:00
zhangyanjiao
54b431f2a8 lwip: fix the crash when close socket 2018-09-27 17:35:40 +08:00
He Yin Ling
737f33e379 test: enhanced config dependency support for CI:
allow define complex conditions for the dependency of each tag.
2018-09-27 15:23:44 +08:00
Anton Maklakov
7c8d5d2782 docs, scripts: Correct the priority of the PATH setting 2018-09-27 14:55:37 +08:00
Nicola Lunghi
1b3385e51e add_path.sh: cmake: add tools folder to the path
Merges https://github.com/espressif/esp-idf/pull/2410
2018-09-27 14:33:36 +08:00
Ivan Grokhotkov
71b5ce55d3 Merge branch 'feature/mbedtls_2_13_1' into 'master'
mbedtls: update to 2.13.1

See merge request idf/esp-idf!3301
2018-09-27 14:15:25 +08:00
Ivan Grokhotkov
0eff312411 can: remove license disclaimer 2018-09-27 13:25:59 +08:00
Ivan Grokhotkov
5ebf4f7022 Merge branch 'feature/move_rtc_data_rtc_rodata_to_RTC_FAST_seg' into 'master'
esp32: Add option to place .rtc_data and .rtc_rodata into the RTC_FAST segment

See merge request idf/esp-idf!2128
2018-09-27 13:05:06 +08:00
Ivan Grokhotkov
84d2f510ea Merge branch 'bugfix/ci_example_test' into 'master'
tools: Make Utility.console_log accept Unicode and byte strings as well

See merge request idf/esp-idf!3367
2018-09-27 11:26:44 +08:00
Ivan Grokhotkov
ea7e6bd8f6 Merge branch 'feature/py23_kconfig_new' into 'master'
tools: Make kconfig_new Python3-compatible and enable Python3 in idf.py

See merge request idf/esp-idf!3304
2018-09-27 11:26:32 +08:00
Ivan Grokhotkov
11b444b8f4 Merge branch 'bugfix/sysview_enable_cmake' into 'master'
cmake: add app_trace as FreeRTOS dependency

See merge request idf/esp-idf!3335
2018-09-27 11:21:54 +08:00
Ivan Grokhotkov
6baf743212 Merge branch 'bugfix/lwip_compat_headers' into 'master'
lwip: add compatibility headers for sntp.h and esp_ping.h

See merge request idf/esp-idf!3231
2018-09-27 11:21:37 +08:00
Ivan Grokhotkov
135eef767f Merge branch 'bugfix/idf_ver_out_of_tree' into 'master'
cmake: pass repository path to git when doing git describe

See merge request idf/esp-idf!3328
2018-09-27 11:21:25 +08:00
Jiang Jiang Jian
6163e1d713 Merge branch 'bugfix/btdm_coex_hw_blocking' into 'master'
component/bt : fix coexist hardware blocking bug

See merge request idf/esp-idf!3362
2018-09-27 11:17:15 +08:00
Angus Gratton
d8c84cff3a esptool: Update to v2.5.1
Release notes: https://github.com/espressif/esptool/releases/tag/v2.5.1

Needed to no longer burn keys if 3/4 Coding Scheme is enabled.
2018-09-27 10:12:32 +10:00
Tian Hao
337960338d component/bt : fix coexist hardware blocking bug
fix the bug following:
1. after disable bluetooth controller, wifi cannot TX/RX any packets.
2. when software coexist working, there's a little ratio cause wifi task watchdog timeout
3. when software coexist working, there's a little ratio cause bluetooth cannot receive anything.

feature:
1. add libbtdm_app.a git commit local and remote checking

Known issues:
1. there's still a bug occurs with a very very low ratio cause bluetooth
   cannot receive anything. The reproduce interval may great than 3days ~ 1week via
   7x24 hours heavy testing.
2018-09-26 21:24:46 +08:00
Jiang Jiang Jian
93df37522f Merge branch 'feature/mesh_decoupling' into 'master'
mesh: decoupling

See merge request idf/esp-idf!3261
2018-09-26 20:20:27 +08:00
Roland Dobai
9ea9d111c8 tools: Make Utility.console_log accept Unicode and byte strings as well 2018-09-26 12:56:00 +02:00
Jiang Jiang Jian
fa784476ba Merge branch 'bugfix/btdm_fix_get_bond_list_error_sometimes' into 'master'
Component/bt: fix get bond list error sometimes

See merge request idf/esp-idf!3288
2018-09-26 18:06:23 +08:00
Jiang Jiang Jian
042ef68ea5 Merge branch 'feature/btdm_add_send_service_change_indication_API' into 'master'
Component/bt: add gatts send service change indication API

See merge request idf/esp-idf!3302
2018-09-26 18:05:04 +08:00
michael
f4d4183000 test: disable the spi slave startup test when psram is enabled 2018-09-26 17:55:37 +08:00
Angus Gratton
4d99513bdb bootloader: Fix crash enabling flash encryption
Regression in 9c715d7946
2018-09-26 18:26:06 +10:00
Angus Gratton
ff33406e74 bootloader: Don't enable secure boot or flash encryption for 3/4 Coding Scheme 2018-09-26 18:26:06 +10:00
Anton Maklakov
1658833470 build system: Fix checking the toolchain version on Windows 2018-09-26 14:42:01 +08:00
baohongde
15fae990c1 component/bt: Fix BTU task watchdog timeout after pair with iphone
Create a new pending queue, then re-submit pending requests in old pending queue,preventing new events being inserted into it.

Closes https://github.com/espressif/esp-idf/issues/2191
2018-09-26 11:59:54 +08:00
Mahavir Jain
b5c321d981 esp32: fix regression introduced in automatic light sleep pm
Closes: https://github.com/espressif/esp-idf/issues/2459

Signed-off-by: Mahavir Jain <mahavir@espressif.com>
2018-09-26 08:52:15 +05:30
TianZhongXing
01308df8a6 doc: update document of external memory 2018-09-26 10:39:57 +08:00
kooho
bbca0e46ed driver(interrupt): fix the issue that interrupt might be allocated and freed on different cores
closes https://github.com/espressif/esp-idf/issues/2211
2018-09-26 10:31:09 +08:00
Angus Gratton
607d899503 Merge branch 'feature/py23_examples' into 'master'
Examples: Add Python 2&3 support

See merge request idf/esp-idf!3237
2018-09-26 08:41:42 +08:00
Angus Gratton
7e3f498d15 Merge branch 'docs/general_notes_zh_CN' into 'master'
docs: translate the general-notes document into Chinese

See merge request idf/esp-idf!2867
2018-09-26 07:23:38 +08:00
qiyueixa
fe4dabe869 mesh: decoupling
Remove dependencies which cause mesh code to be linked even if mesh is not used.
2018-09-25 23:49:27 +08:00
michael
d4071a7c19 sdio_slave: fix the ret_queue crash issue when being reset by the master 2018-09-25 20:30:25 +08:00
Jiang Jiang Jian
46ad2c6ad0 Merge branch 'feature/wifi_esptouch_support_both_multicast_and_broadcast_packet' into 'master'
esp32: esp-touch supports both multicast and broadcast packets

See merge request idf/esp-idf!3291
2018-09-25 19:48:33 +08:00
Ivan Grokhotkov
e1ac237169 Merge branch 'doc/fix_config_links' into 'master'
doc: Fix config links, add navigation lists to config items page

See merge request idf/esp-idf!3310
2018-09-25 18:23:24 +08:00
zhiweijian
9fb188a1d9 Component/bt: add gatts send service change indication API 2018-09-25 08:26:55 +00:00
Ivan Grokhotkov
0139749ba6 esp32: only touch g_ticks_per_us_app in dual core mode 2018-09-25 15:13:47 +08:00
Ivan Grokhotkov
4ff262ecff ipc: initialise automatically, if called from the app 2018-09-25 15:13:47 +08:00
Jack
2efd6859ed release memory not used in single core mode
1. do not start ipc task in single core mode
2. do not use APP cpu cache memory in single core mode
3. relase data used in rom by APP cpu
2018-09-25 15:13:47 +08:00
Roland Dobai
975688b97f examples: Use flushed print to see logs on the CI server 2018-09-25 08:05:56 +02:00
Roland Dobai
17b7959de9 Examples: Add Python 2&3 support 2018-09-25 08:05:56 +02:00
morris
0ea7723238 doc/general_notes:translate from en to zh_CN
translate the document [general-notes] into Chinese
2018-09-25 12:59:52 +08:00
Darian Leung
3c362f4d75 esp32: Add missing header file in esp_task.h
This commit adds a missing header file in esp_task.h
required for configMAX_PRIORITIES.

Closes #2341
2018-09-25 11:21:23 +08:00
XiaXiaotian
7b7964b47a esp32: esp-touch supports both multicast and broadcast packets
Previously, esp-touch only supports multicast packets which are
    transmitted from cellphone. But for most dual frequency routers
    whose SSIDs of 5G and 2.4G are the same, broadcast packets are
    forwarded from 5G interface to 2.4G interface while multicast
    packets are not. In order to make esp-touch work when cellphone
    connects to 5G interface of these routers, esp-touch is improved
    to support both multicast and broadcast packets. Meanwhile, new
    APP which is compiled with Andriod or IOS library(>= v0.3.6.2)
    must be used in this situation. Note that for some routers,
    broadcast and multicast packets are forwarded from 5G interface
    to 2.4G interface only when another WiFi device is connected to
    2.4G interface of the router. Old APP which is compiled with
    Android or IOS library(< v0.3.6.2) also works with this improvement
    when cellphone connects to 2.4G interface of the router.

    The Android and IOS library of new esp-touch APP is now available
    on Github.
    Android: https://github.com/EspressifApp/EsptouchForAndroid
    IOS: https://github.com/EspressifApp/EsptouchForIOS
2018-09-25 10:38:01 +08:00
Angus Gratton
96cd3b75cd Merge branch 'feature/mbedtls_mem_alloc_options' into 'master'
mbedtls: configurable options for controlling dynamic memory allocations

See merge request idf/esp-idf!3343
2018-09-25 08:24:29 +08:00
Angus Gratton
66fd7e9cc3 Merge branch 'bugfix/python_gen_empty_partition' into 'master'
app_update: Make gen_empty_partition.py Python 2 & 3 compatible

See merge request idf/esp-idf!3347
2018-09-25 08:23:38 +08:00
Angus Gratton
dc135ed1f6 Merge branch 'feature/async_esp_http_client' into 'master'
Non Blocking `esp_http_perform()` API in esp_http_client

See merge request idf/esp-idf!3049
2018-09-25 08:20:06 +08:00
Angus Gratton
a4aadd1926 Merge branch 'feature/nvs_encryption' into 'master'
nvs_flash: Add support for nvs encryption

See merge request idf/esp-idf!2700
2018-09-25 08:15:55 +08:00
Angus Gratton
6ed00f50be Merge branch 'bug_fix/multipage_blob_support' into 'master'
nvs_util: Fix generation of multipage blob data format

See merge request idf/esp-idf!3349
2018-09-25 08:01:57 +08:00
Jiang Jiang Jian
3665715d4d Merge branch 'mesh/bugfix' into 'master'
mesh: bugfix

See merge request idf/esp-idf!3286
2018-09-24 20:31:31 +08:00
Roland Dobai
baca21050f app_update: Make gen_empty_partition.py Python 2 & 3 compatible
Closes https://github.com/espressif/esp-idf/issues/2457
2018-09-24 12:16:16 +02:00
Shivani Tipnis
7c1360b10a nvs_util: Fix multipage blob data format generate 2018-09-24 15:44:31 +05:30
Sagar Bijwe
48fccbf5dd nvs_flash: Add support for nvs encryption 2018-09-24 11:25:21 +05:30
Mahavir Jain
5585f699d1 aws_iot: optimize dynamic memory by tweaking tls out buf content length 2018-09-24 11:17:53 +05:30
Mahavir Jain
54382277b6 mbedtls: configurable options for controlling dynamic memory allocations
Modifies https://github.com/espressif/esp-idf/pull/2237
2018-09-24 11:17:48 +05:30
Jitin George
0aec63c18e examples/protocols/esp_http_client: Add example for asynchronous HTTP request 2018-09-24 05:42:28 +00:00
Jitin George
5309ca04d1 esp_http_client: Add support for non-blocking feature in esp_http_client_perform() API
Four internal APIs `esp_http_client_connect()`, `http_client_prepare_first_line()`, `esp_http_client_request_send()` and
`esp_http_client_send_post_data()` API have been added for perfoming connection establishment (sync as well as async),
preparing first line, sending request and sending post data respectively.

In `transport_ssl`, `ssl_connect_async()` API has been added for establishing asynchronous connection.
2018-09-24 05:42:28 +00:00
Jitin George
1be97fad09 esp-tls: Add support for non blocking connect 2018-09-24 05:42:28 +00:00
Angus Gratton
4d50427e87 Merge branch 'feature/nvs_util_backport' into 'master'
nvs_util: Add changes for utility to support old and new multipage blob

See merge request idf/esp-idf!3270
2018-09-24 11:53:29 +08:00
Angus Gratton
ae5df5d6ce Merge branch 'feature/pthread_attributes' into 'master'
pthread : Add support for attributes

See merge request idf/esp-idf!2980
2018-09-24 11:19:41 +08:00
qiyueixa
9c4cc55012 mesh: bugfix
1. suppport mesh type, mesh ID, router and IE crypt func&key at any time after mesh is initalized.
2. support modify parent at any time after mesh is configured.
3. modify manual networking example.
4. update header file.
5. fix issues in root conflicts handling.
6. add max length of beacon to menuconfig.
7. fix issue when received a beacon without DSSS.
2018-09-23 21:11:02 +08:00
Jiang Jiang Jian
623641f26c Merge branch 'bugfix/two_scenario_may_cause_no_disconnect_event_report' into 'master'
Wifi: bugfix of two sceanrio may cause no disconnect event report

See merge request idf/esp-idf!3322
2018-09-23 10:58:44 +08:00
Jiang Jiang Jian
da3c6220a5 Merge branch 'bugfix/IPv6_TCP_connection_fail' into 'master'
lwip: fix the bug that IPv6 TCP connection fail

See merge request idf/esp-idf!3331
2018-09-23 08:39:34 +08:00
Anurag Kar
f27db1f241 pthread : Add support for attributes and few APIs
This introduces the following changes :
    * Implmentation added for pthread attribute related functions :
        * pthread_attr_init
        * pthread_attr_destroy
        * pthread_attr_setdetachstate
        * pthread_attr_getdetachstate
        * pthread_attr_getstacksize
        * pthread_attr_setstacksize
    * pthread_create now supports passing attributes/configs through pthread_attr_t structure
    * pthread_mutex_timedlock added
    * pthread_exit added
    * memory for joinable thread is freed before returning from pthread_join
2018-09-22 02:35:27 +05:30
Jiang Jiang Jian
93b588a0cf Merge branch 'bugfix/wpa2_fixes_2' into 'master'
wpa_supplicant: more fixes from github

See merge request idf/esp-idf!3255
2018-09-21 20:14:56 +08:00
TianZhongXing
19a67271ef lwip:move lwip bss segment to psram 2018-09-21 16:20:31 +08:00
TianZhongXing
974112378b feature: allow .bss segment in external memory 2018-09-21 16:20:26 +08:00
Ivan Grokhotkov
b97e52210a cmake: add app_trace as FreeRTOS dependency
This is needed because FreeRTOSConfig.h includes header file provided
by app_trace when CONFIG_SYSVIEW_ENABLE=y.
2018-09-21 14:58:34 +08:00
Deng Xin
7186475d94 Wifi: bugfix of two sceanrio may cause no disconnect event report
Problem Description
set some of routers as the same ssid in the same channel, when 32 in the fast scan connect mode, there may no disconnect event report in that two sceanrio:
1. set the correct password and connect, if target router didn't report 32's auth req before timeout, the state machine change to init but no disconnect event report
2. set a wrong password, if router send disassoc or deauth after run, rather than wait 4 way handshake timeout, the state machine change to init but no disconnect event report

Root Cause
Because the routers are in the same channel, all of them are matched the ssid, so all of them can be instore in the rc list wait for connect, when the first one want to connect fail at auth or receive
disassoc or deauth when password wrong, the rc list is not empty, it can not send disconnect event because rc is not empty

Solution
1. put the fail the router in the blacklist
2. Judge whether there is another router can be connect, if it has, try to connect with the next one

VNC MR 561
2018-09-21 06:22:20 +00:00
Roland Dobai
bf443a763f tools: Support overwrite of includes for gen_esp_err_to_name.py
gen_esp_err_to_name.py includes files like
components/lwip/include/apps/esp_ping.h as "apps/esp_ping.h" because all
subdirectories of "include" are used. If "components/lwip/include/apps"
is in the path of the compiler instead of "components/lwip/include" then
include "apps/esp_ping.h" will fail. This fix allows to process lines
like:
'// gen_esp_err_to_name.py: some text "esp_ping.h" some text'
in header files for overwriting the include.
2018-09-21 14:09:37 +08:00
Ivan Grokhotkov
f8750eb58d lwip: add compatibility headers for sntp.h and esp_ping.h
Before LwIP was moved into a submodule, sntp and esp_ping were
available as the following includes:

#include "apps/sntp/sntp.h"
#include "esp_ping.h"

This commit makes header files available at the old location, and adds
a deprecation warning for sntp.h.

Closes https://github.com/espressif/esp-idf/issues/2392
2018-09-21 14:09:37 +08:00
Ivan Grokhotkov
2e6e87816c Merge branch 'feature/crosstool_backport' into 'master'
Backport of work of gcc8 toolchain to v3

See merge request idf/esp-idf!3154
2018-09-21 14:07:41 +08:00
Jeroen Domburg
375c3f6cda Merge branch 'feature/spi_sync_rebase' into 'master'
spi_master: add new polling mode to decrease time cost each transaction

See merge request idf/esp-idf!3120
2018-09-21 10:57:16 +08:00
zhiweijian
81e7689bf3 Component/bt: fix get bond list error sometimes 2018-09-21 02:44:16 +00:00
zhangyanjiao
e7d6c861b5 lwip: fix the bug that IPv6 TCP connection fail
The lwip code didn't create an new mld group when netif is up,
this will lead to the server can't find the matching netif when
receiving NS(neighbor solicitation) packet
2018-09-21 10:17:20 +08:00
Angus Gratton
688807d5f6 docs: Don't show Kconfig.projbuild from MQTT submodule examples in docs 2018-09-21 11:05:16 +10:00
Angus Gratton
9421f6611f doc: Render config items "Found in:" as a set of links to menus 2018-09-21 11:05:13 +10:00
Ivan Grokhotkov
a8754ccc6a Merge branch 'feature/idf_py_print_flash_cmd' into 'master'
tiny-test-fw: Detect either 'download.config' or 'flash_project_args'

See merge request idf/esp-idf!3252
2018-09-20 20:03:21 +08:00
Michael (Xiao Xufeng)
4af51833f3 spi_master: add new polling mode to decrease time cost each transaction 2018-09-20 19:46:46 +08:00
Anton Maklakov
3004744f2c Merge branch 'bugfix/py273_gen_esp32part' into 'master'
partition_table: Fix encoding for Python 2.7.3

See merge request idf/esp-idf!3330
2018-09-20 19:06:52 +08:00
Anton Maklakov
7b4054a468 espcoredump: Fix a test case of new gdb from the new toolchain 2018-09-20 18:53:15 +08:00
Anton Maklakov
0d1285ebcf bluetooth: fix indentation warning 2018-09-20 18:53:15 +08:00
Anton Maklakov
d6a5cd6e82 mqtt: silence a format warning 2018-09-20 18:53:15 +08:00
Anton Maklakov
d4cbfd34cc cmake: silence some warnings in coap, bt, expat, libsodium, lwip and examples/bluetooth 2018-09-20 18:53:15 +08:00
Anton Maklakov
90d4a1d1e9 cmake: Add a compatible old GCC flag, fix the cmake example building 2018-09-20 18:53:15 +08:00
Anton Maklakov
3471d369f9 lwip: silence uninitialized and fallthrough warnings 2018-09-20 18:53:15 +08:00
Anton Maklakov
ccbe517702 vfs: fix a fallthrough comment to silence the warning 2018-09-20 18:53:15 +08:00
Anton Maklakov
fdb369c76f test/cxx: Test for exception from libstdc++ with -fno-exceptions 2018-09-20 18:53:15 +08:00
Alexey Gerenkov
e0f7e196f2 cxx: don’t define stubs for __throw_* functions
If exception support is disabled in IDF, and libstdc++ tries to throw
an exception, it will call __cxa_allocate_exception which is replaced
with abort in IDF.

We have a dramatically size reduction of the RO-section in binary when using '__throw_'-stubs in GCC5
In the case of using GCC8, we are faced with 'multiple definition' errors when using '__throw_'-stubs.
Good that we don't have the size problem due to gcc8
2018-09-20 18:53:15 +08:00
Anton Maklakov
43116e6e2d examples/sdio: Fix an uninitialized buffer which sometimes caused a test fail 2018-09-20 18:53:15 +08:00
Alexey Gerenkov
f0c15e749a gcov: use GCC API to control GCOV data dumps 2018-09-20 18:53:14 +08:00
Anton Maklakov
9a55557ad8 build system: Add a compatible old GCC flag 2018-09-20 18:53:14 +08:00
Ivan Grokhotkov
51c9b6b82d bt: disable implicit fall through warnings 2018-09-20 18:53:14 +08:00
Ivan Grokhotkov
dd5d01a83e bt: silence unused const variables warning 2018-09-20 18:53:14 +08:00
Ivan Grokhotkov
0b35292abe examples/bluetooth: silence unused const variables warnings 2018-09-20 18:53:14 +08:00
Ivan Grokhotkov
c2a04f6517 unity: silence unused const variables warning 2018-09-20 18:53:14 +08:00
Ivan Grokhotkov
91fa1764e5 docs: generate toolchain download links 2018-09-20 18:53:14 +08:00
Anton Maklakov
10ec85f848 build system: and gcc8 warnings compatibility option 2018-09-20 18:53:14 +08:00
Anton Maklakov
cce02e45f1 build system: print some information about the compiler 2018-09-20 18:53:14 +08:00
Anton Maklakov
16525d3c28 ci: specify default docker image tag 2018-09-20 18:53:14 +08:00
Anton Maklakov
ab21644df4 toolchain: Set the supported toolchain version in a separate file 2018-09-20 18:53:13 +08:00
Jiang Jiang Jian
d68df94d2b Merge branch 'bugfix/fix_the_bug_create_socket_fail' into 'master'
LWIP: fix the bug that failed to create socket

See merge request idf/esp-idf!3300
2018-09-20 18:43:58 +08:00
Roland Dobai
4465dc29bb partition_table: Fix encoding for Python 2.7.3
struct.pack can handle Unicode argument in latest Python 2.7 but cannot
(at least) in 2.7.3.
2018-09-20 12:01:54 +02:00
Ivan Grokhotkov
59d590ff48 cmake: pass repository path to git when doing git describe
Fixes getting IDF version in out-of-tree builds
2018-09-20 16:18:25 +08:00
Roland Dobai
130a8ea324 tiny-test-fw: Detect either 'download.config' or 'flash_project_args' 2018-09-20 06:39:04 +00:00
Angus Gratton
593abe0768 Merge branch 'test/fix_ut_cant_process_test_command' into 'master'
test: fix ut can't process test command

See merge request idf/esp-idf!3306
2018-09-20 14:38:25 +08:00
Angus Gratton
8cf0f36dcc Merge branch 'feature/ecc_crypto_wrappers' into 'master'
wpa_supplicant: Implement BIGNUM and ECC crypto wrapper apis for ESP using mbedtls

See merge request idf/esp-idf!3225
2018-09-20 13:46:08 +08:00
Ivan Grokhotkov
9188cb066a mbedtls: update to 2.13.1
See release notes:
https://github.com/ARMmbed/mbedtls/releases/tag/mbedtls-2.13.0
2018-09-20 04:35:45 +00:00
Ivan Grokhotkov
07211ffeff Merge branch 'bugfix/py23_nvs_flash_division' into 'master'
nvs_flash: fix division for Python 2 & 3

See merge request idf/esp-idf!3292
2018-09-20 12:10:18 +08:00
Ivan Grokhotkov
f5e772242d Merge branch 'feature/py23_partition_table' into 'master'
partition_table: Add Python 2 & 3 support

See merge request idf/esp-idf!3290
2018-09-20 12:09:12 +08:00
Ivan Grokhotkov
7660db290b Merge branch 'feature/roll_back_python_future' into 'master'
Downgrade python-future required version to 0.15.2

See merge request idf/esp-idf!3319
2018-09-20 12:05:50 +08:00
Ivan Grokhotkov
af453841ea Merge branch 'bugfix/ci_cmake_examples' into 'master'
CI/cmake: Fix cmake example build failures, gcov

See merge request idf/esp-idf!3296
2018-09-20 12:05:07 +08:00
Jiang Jiang Jian
7657c1c7d4 Merge branch 'bugfix/btdm_fix_crash_when_test_multi_connect' into 'master'
Component/bt: fix crash when test multi_connect

See merge request idf/esp-idf!3274
2018-09-20 12:04:18 +08:00
Ivan Grokhotkov
2e411aeccb Merge branch 'bugfix/ethernet_infinite_loop' into 'master'
ethernet: fix infinite loop when init phy or reset mac

See merge request idf/esp-idf!3307
2018-09-20 11:59:51 +08:00
Ivan Grokhotkov
c09d4787ef Merge branch 'bugfix/parttool_spaces' into 'master'
Remove trailing spaces from parttool.py output

See merge request idf/esp-idf!3317
2018-09-20 11:58:40 +08:00
Jiang Jiang Jian
ffbe5b7ae5 Merge branch 'bugfix/btdm_fix_iphoneX_error_when_get_wifi_list' into 'master'
Component/bt: fix iPhoneX error when getting wifi list

See merge request idf/esp-idf!3303
2018-09-20 10:54:43 +08:00
Jiang Jiang Jian
57573d0ed7 Merge branch 'feature/btdm_add_clear_rand_addr_API' into 'master'
component/bt: add clear rand address API

See merge request idf/esp-idf!3137
2018-09-20 10:47:37 +08:00
morris
20b7f0ec87 ethernet: fix infinite loop when init phy or reset mac
1. fix infinite loop problem when init phy device
2. fix infinite loop problem when reset mac
3. fix little bugs in ethernetif_init
4. fix incompatible return value between lwip and esp-idf

Closes https://github.com/espressif/esp-idf/issues/2331
Closes https://github.com/espressif/esp-idf/issues/2141
2018-09-20 10:09:38 +08:00
Angus Gratton
930ddf2b2c Merge branch 'bugfix/use_component_srcs' into 'master'
List files manually for recently added components

See merge request idf/esp-idf!3315
2018-09-20 07:27:37 +08:00
Shivani Tipnis
ca3acef82c nvs_util: Add support for old and new multipage blob 2018-09-19 22:00:08 +05:30
Deomid Ryabkov
9999720ed0 Downgrade python-future required version to 0.15.2
It works fine and this way python-future from Ubuntu 16.04 and 18.04 can be used.
2018-09-19 16:24:10 +03:00
zhangyanjiao
f2d3efd875 lwip: fix the bug that failed to create socket
Closes: https://github.com/espressif/esp-idf/issues/2403
        https://github.com/espressif/esp-idf/issues/2414
2018-09-19 09:44:28 +00:00
Ivan Grokhotkov
4e9338e357 Merge branch 'test/fix_incorrect_connect_ap_command' into 'master'
test: fix case use depreacated sta connect command

See merge request idf/esp-idf!3309
2018-09-19 17:39:58 +08:00
Ivan Grokhotkov
e4725adc87 Merge branch 'bugfix/startup_detect_single_core' into 'master'
esp32: abort when running on single core chip in dual core mode

See merge request idf/esp-idf!3308
2018-09-19 17:32:08 +08:00
Renz Bagaporo
8f85fa1bfb tcp_transport: list files manually in component cmake file 2018-09-19 16:48:31 +08:00
Renz Bagaporo
8fdfc22e2e mqtt: list files manually in component cmake file 2018-09-19 16:48:12 +08:00
Angus Gratton
9add51bc6d doc: Re-add summaries of what children each menu item has
Slightly different to the original version of this, but same goal.
2018-09-19 17:27:48 +10:00
Angus Gratton
8721173109 doc: Replace :envvar: config links with :ref: 2018-09-19 17:27:48 +10:00
zhiweijian
fdc352d090 Component/bt: fix iPhoneX error when getting wifi list 2018-09-19 15:17:57 +08:00
Ivan Grokhotkov
789855e71b esp32: abort when running on single core chip in dual core mode
Ref. https://esp32.com/viewtopic.php?f=2&t=7307
2018-09-19 15:05:26 +08:00
Roland Dobai
173e6aab3e tools: Make kconfig_new Python3-compatible and enable Python3 in idf.py 2018-09-19 08:38:09 +02:00
Sagar Bijwe
112244bac4 wpa_supplicant: Implement BIGNUM and ECC crypto wrapper apis for ESP using mbedtls 2018-09-19 11:10:28 +05:30
He Yin Ling
60f0e9b77b test: fix case use depreacated sta connect command 2018-09-19 13:31:56 +08:00
Angus Gratton
440b08c128 Merge branch 'bugfix/py23_unit_test' into 'master'
Correct Python 3 support for some test related scripts

See merge request idf/esp-idf!3236
2018-09-19 12:39:24 +08:00
Angus Gratton
c15d3c1ffc examples: Copy ca_cert.pem into both example project dirs
Keeps projects all-in-one under a single directory.
2018-09-19 14:38:19 +10:00
Angus Gratton
b38a6da74b cmake: Fix some failing example builds, fix gcov 2018-09-19 14:38:19 +10:00
He Yin Ling
44e8ec584f test: ut can't process test command:
check ut reset done condition is not correct. If bootup pattern already
exist in cache, we will return without waiting for DUT bootup.
2018-09-19 09:40:59 +08:00
Angus Gratton
4b23d70eec ci: Split build_examples jobs into make & cmake
Fix problem where failures in make were being ignored.
2018-09-19 11:06:27 +10:00
Deomid Ryabkov
d40bfd21dc Remove trailing spaces from parttool.py output 2018-09-18 16:49:30 +03:00
Roland Dobai
9dc024bc4c partition_table: Add Python 2 & 3 support 2018-09-18 14:10:55 +02:00
Jiang Jiang Jian
72aaeb26ac Merge branch 'bugfix/btdm_fix_save_error_key_in_smp_when_reconnect' into 'master'
Component/bt: fix save error key in smp when reconnect

See merge request idf/esp-idf!3251
2018-09-18 20:06:38 +08:00
Roland Dobai
da6479e6b7 Correct Python 3 support for some test related scripts 2018-09-18 09:55:51 +00:00
Ivan Grokhotkov
91f7a9a9e7 Merge branch 'feature/lwip_task_affinity' into 'master'
lwip: allow setting LwIP tasks affinity via sdkconfig

See merge request idf/esp-idf!2913
2018-09-18 15:10:17 +08:00
Angus Gratton
3276a1316f Merge branch 'feature/cleanup_freertos_hooks' into 'master'
Cleanup freertos idle/tick hooks functionality

See merge request idf/esp-idf!3131
2018-09-18 08:07:41 +08:00
Angus Gratton
822fdd6e53 Merge branch 'feature/tasks_can_return' into 'master'
freertos: enclose task functions in wrapper function

See merge request idf/esp-idf!2935
2018-09-18 07:38:24 +08:00
Angus Gratton
e54e41fee7 Merge branch 'bugfix/rtd_docs_build' into 'master'
docs: Set a default IDF_PATH in docs build (needed for RTD)

See merge request idf/esp-idf!3272
2018-09-18 07:37:59 +08:00
Angus Gratton
3246404740 Merge branch 'bugfix/cmake_make_flash_target' into 'master'
cmake: Fix "make flash" & "ninja flash" targets

See merge request idf/esp-idf!3260
2018-09-18 07:31:57 +08:00
Roland Dobai
7183112cc4 nvs_flash: fix division for Python 2 & 3 2018-09-17 16:01:54 +02:00
zwj
fa00e6d4f7 component/bt: add clear rand address API 2018-09-17 20:09:03 +08:00
Mahavir Jain
ff81dc16e0 freertos: cleanup tick/idle hook functionality
If CONFIG_FREERTOS_LEGACY_HOOKS is kept enabled then defining
idle/tick hooks will be applications responsibility as was the
case earlier.

Signed-off-by: Mahavir Jain <mahavir@espressif.com>
2018-09-17 17:05:17 +05:30
Mahavir Jain
152043d469 esp_ringbuf: move ringbuf to seperate component
Signed-off-by: Mahavir Jain <mahavir@espressif.com>
2018-09-17 17:04:57 +05:30
Mahavir Jain
b0ef95b6eb task_wdt: correct critical section API in ISR context
Signed-off-by: Mahavir Jain <mahavir@espressif.com>
2018-09-17 16:11:15 +05:30
Ivan Grokhotkov
5d1ccb9501 lwip: allow setting LwIP tasks affinity via sdkconfig
In some cases applications need to ensure that WiFi/BT related tasks
run on CPU1. This option can be used to set task affinity in such case.

https://github.com/espressif/esp-idf/issues/2233#issuecomment-409220381
2018-09-17 18:17:52 +08:00
Ivan Grokhotkov
5bcb7e26d7 freertos: add Kconfig FREERTOS_NO_AFFINITY constant
Use in place of tskNO_AFFINITY in Kconfig files
2018-09-17 18:17:52 +08:00
Jiang Jiang Jian
25c8ecaaf5 Merge branch 'bugfix/tw24884_fix_ampdu_sequence_compitable_issue' into 'master'
esp32: Fix AMPDU sequence incompitable bug

See merge request idf/esp-idf!3200
2018-09-17 18:07:14 +08:00
Jiang Jiang Jian
d41ee5c628 Merge branch 'bugfix/btdm_enable_modem_sleep_by_default' into 'master'
bugfix/btdm_enable_modem_sleep_by_default

See merge request idf/esp-idf!3284
2018-09-17 16:17:34 +08:00
Liu Zhi Fu
0828e8bd53 esp32: fix AMPDU sequence compitability issue
Fix AMPDU RX sequence compitability issue when connecting to some special APs, such as Mercury, Fast etc
2018-09-17 13:57:59 +08:00
Angus Gratton
df215d2f02 Merge branch 'bugfix/cmake_idf_version' into 'master'
cmake: prefer `version.txt` for IDF_VER if available

See merge request idf/esp-idf!3279
2018-09-17 12:28:47 +08:00
Ivan Grokhotkov
eea49d250a Merge branch 'feature/dhcp_skip_discovery' into 'master'
DHCP restore last ip and skip discovery

See merge request idf/esp-idf!3132
2018-09-17 12:27:56 +08:00
Ivan Grokhotkov
c305bd09dc Merge branch 'bugfix/ethernet_low_level_output' into 'master'
ethernet: fix some bugs and complete some optimization

See merge request idf/esp-idf!3235
2018-09-17 11:33:50 +08:00
MartinValik
2e79baa1db lwip: DHCP restore last IP
Closes https://github.com/espressif/esp-idf/issues/799
2018-09-17 11:11:25 +08:00
Ivan Grokhotkov
49125a87bb Merge branch 'bugfix/mdns-lwip-update' into 'master'
Update network code for mDNS to work with newest LwIP

See merge request idf/esp-idf!3268
2018-09-17 10:42:04 +08:00
wangmengyang
bca2e110fc component/bt: enable bluetooth modem sleep as default setting 2018-09-17 10:38:13 +08:00
kooho
50a5985b06 doc(rmt): fixed some typos in rmt example readme file 2018-09-17 10:21:07 +08:00
morris
3063a62e3e ethernet: fix some bugs in ethernet driver
1. create a new pbuf to squash linked pbuf
2. optimize emac driver by adding ESP_IRAM_ATTR
3. remove duplicated function declare in esp_eth.h
4. remove duplicated code in emac_setup_tx_desc
5. disable Promiscuous mode
2018-09-17 10:12:46 +08:00
Ivan Grokhotkov
0c6ff65b34 Merge branch 'bugfix/bootloader_set_freq' into 'master'
soc: fix CPU frequency not updated in rtc_clk_init

See merge request idf/esp-idf!3256
2018-09-17 09:49:43 +08:00
krzychb
a556240e3e Docs: Renamed download links to clearly state they are to download documentation. Fixed incorrectly linked documentation build badge. 2018-09-17 01:19:45 +00:00
Angus Gratton
61af7f3903 Merge branch 'doc/error_handling_zh_CN' into 'master'
doc/error-handling: translated error-handling.rst

See merge request idf/esp-idf!3148
2018-09-17 09:08:11 +08:00
Jiang Jiang Jian
518942ec61 Merge branch 'bugfix/tw24694_dns_request_no_reply' into 'master'
lwip: add code for sending gratuitous ARP periodically

See merge request idf/esp-idf!3241
2018-09-16 15:18:32 +08:00
Jiang Jiang Jian
67160b2236 Merge branch 'bugfix/mdns_memory_leak' into 'master'
feat(mdns): fix bug when clean action memory

See merge request idf/esp-idf!3276
2018-09-16 15:04:46 +08:00
Jiang Jiang Jian
054e1ee767 Merge branch 'bugfix/optimize_scan_capability' into 'master'
Wifi: Optimize scan capability

See merge request idf/esp-idf!3242
2018-09-16 14:50:36 +08:00
Deng Xin
427fa52276 Wifi: Optimize scan capability 2018-09-14 22:25:28 +08:00
Mahavir Jain
4ec9aa9a00 cmake: prefer version.txt for IDF_VER if available 2018-09-14 17:25:17 +05:30
Jiang Jiang Jian
18a893bd35 Merge branch 'bugfix/btdm_unreserve_scn1_for_hfp' into 'master'
component/bt: Unlock reserve of SCN 1 for HFP

See merge request idf/esp-idf!3269
2018-09-14 19:49:47 +08:00
Jiang Jiang Jian
8001737d3e Merge branch 'bugfix/ble_adv_data_tx_power' into 'master'
fix TX power value in ble adv data is incorrect

See merge request idf/esp-idf!3185
2018-09-14 19:46:16 +08:00
Jiang Jiang Jian
8d537432fd Merge branch 'bugfix/wifi_fix_some_modem_sleep_bugs' into 'master'
esp32: fix some bugs of modem sleep

See merge request idf/esp-idf!3223
2018-09-14 18:24:02 +08:00
me-no-dev
3ec0e7e2d2 Update network code for mDNS to work with newest LwIP
- Uses one PCB that listens to all interfaces
- Manages multicast groups for each interface
2018-09-14 11:02:47 +02:00
Liu Han
3d4deb9726 feat(mdns): fix bug when clean action memory 2018-09-14 15:36:52 +08:00
Ivan Grokhotkov
d56a400709 Merge branch 'bugfix/cmake_create_dummy_main_windows' into 'master'
cmake: use built-in file function to create dummy main

See merge request idf/esp-idf!3253
2018-09-14 15:18:36 +08:00
Liu Zhi Fu
9121ba22e9 esp32: fix some bugs of modem sleep
1. Keep awake to receive beacon at TBTT time no matter which state
   station is on.

2. If there is any packet to send on dream or sleep state, send NULL
   data with power save bit clear first.
2018-09-14 15:12:34 +08:00
Angus Gratton
773fb42a3a Merge branch 'bugfix/mqtt_move_kconfig_to_idf' into 'master'
MQTT: Moved Kconfig from esp-mqtt submodule to esp-idf to support docs genration in RTD

See merge request idf/esp-idf!3265
2018-09-14 15:05:13 +08:00
baohongde
738522f1a3 component/bt: Unlock reserve of SCN 1 for HFP 2018-09-14 06:22:58 +00:00
Ivan Grokhotkov
31c14a5ee4 Merge branch 'feature/py3_espcoredump' into 'master'
espcoredump: Add tests and Python3 support

See merge request idf/esp-idf!3212
2018-09-14 12:39:30 +08:00
Angus Gratton
61835faed1 Merge branch 'bugfix/tcpip_stack_size_default' into 'master'
Default stack size for TCPIP task increased to avoid stack overflow.

See merge request idf/esp-idf!3258
2018-09-14 12:23:35 +08:00
David Cermak
1f8bf057a0 MQTT: Moved Kconfig from esp-mqtt submodule to esp-idf to support docs genration in RTD 2018-09-14 04:22:13 +00:00
zhiweijian
d0721e8f6d Component/bt: fix crash when test multi_connect 2018-09-14 11:18:44 +08:00
Darian Leung
3ba63a520c freertos: Add task function wrapper
This commit adds an option to enclose all FreeRTOS task functions within a
wrapper function. In the case that a task function returns, the wrapper function
will log an error and abort the application immediately.

Closes #2269
Closes #2300
2018-09-14 11:07:54 +08:00
Angus Gratton
11f0c73fb0 Merge branch 'bugfix/undetermined_lang_for_target_bt' into 'master'
Fix undetermined language for target bt issue

See merge request idf/esp-idf!3264
2018-09-14 10:39:32 +08:00
Renz Bagaporo
454d65bbab bt: remove non-existing source file from cmakelists 2018-09-14 08:47:22 +08:00
Angus Gratton
44e4535c90 docs: Set a default IDF_PATH in docs build (needed for RTD)
RTD builds don't set IDF_PATH, mqtt component uses this variable.
2018-09-14 09:42:57 +10:00
Jiang Jiang Jian
e6e2d7ebee Merge branch 'feature/btdm_add_adv_packet_duplicate_in_scan_duplicate' into 'master'
component/bt: add adv packet duplicate in scan duplicate

See merge request idf/esp-idf!2939
2018-09-13 18:16:22 +08:00
Dmitry
2ff3f8b0c8 Stack size for TCPIP task increased from 2048 to 3072. 2018-09-13 12:38:56 +03:00
Angus Gratton
b774ac425d Merge branch 'feature/cmake_ulp_support' into 'master'
cmake: add ulp components build support

See merge request idf/esp-idf!3100
2018-09-13 14:54:59 +08:00
Renz Christian Bagaporo
946f55db85 cmake: add ulp components build support 2018-09-13 14:54:59 +08:00
Angus Gratton
62c3218981 Merge branch 'fix/spi_slave_free_cs' into 'master'
spi_slave: fix the issue rx dma get broken by master unexpected transaction

See merge request idf/esp-idf!3207
2018-09-13 13:50:56 +08:00
Angus Gratton
30388c7e87 cmake: Fix "make flash" & "ninja flash" targets
As reported on forum.

Requires a small CMake wrapper script to pick
up environment variables at flashing time.
2018-09-13 15:08:24 +10:00
Jiang Jiang Jian
60a9462f6e Merge branch 'bugfix/optimize_BLE_memory_debug' into 'master'
component/bt: optimize bluetooth memory debug

See merge request idf/esp-idf!3047
2018-09-13 10:49:26 +08:00
He Yin Ling
4b41bd0cdd test: fix incorrect tx power value in adv 2018-09-13 09:47:23 +08:00
Angus Gratton
2a1c748834 Merge branch 'bugfix/docs_simplify_home_page' into 'master'
There are now visible links to change between English and Chinese version of…

See merge request idf/esp-idf!2983
2018-09-13 09:07:16 +08:00
Angus Gratton
7848cfdde7 Merge branch 'feature/mqtt_component' into 'master'
added tuan's mqtt library into idf

See merge request idf/esp-idf!2851
2018-09-13 09:06:09 +08:00
Angus Gratton
514487e9a1 Merge branch 'feature/light_sleep_example' into 'master'
examples: add light sleep example

See merge request idf/esp-idf!3179
2018-09-13 09:00:59 +08:00
Angus Gratton
866b880ddc Merge branch 'feature/cmake_make_component_main_again_fixes' into 'master'
cmake: fix source list issues

See merge request idf/esp-idf!3248
2018-09-13 08:56:59 +08:00
Renz Christian Bagaporo
944014f9f2 cmake: fix source list issues 2018-09-13 08:56:59 +08:00
Angus Gratton
cf7ae4d898 Merge branch 'bugfix/main_component_kconfig' into 'master'
cmake: don't add main component Kconfig twice

See merge request idf/esp-idf!3250
2018-09-13 07:20:32 +08:00
negativekelvin
171f54bd7e wpa_supplicant: more wpa2_enterprise fixes
Merges https://github.com/espressif/esp-idf/pull/2386

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

Closes https://github.com/espressif/esp-idf/issues/2381
2018-09-12 22:29:15 +08:00
Jiang Jiang Jian
91f579d714 Merge branch 'feature/wifi_update_csi_api_and_fix_phy_dport_access_issue' into 'master'
esp32: update API to set CSI channel filter and HT_LTF data generating

See merge request idf/esp-idf!3180
2018-09-12 21:29:29 +08:00
negativekelvin
8e2856b83d soc: fix CPU frequency not updated in rtc_clk_init
Add missing call to rtc_clk_cpu_freq_set_config

Merges https://github.com/espressif/esp-idf/pull/2398
2018-09-12 21:13:42 +08:00
Tian Hao
b9382b29fa fix TX power value in ble adv data is incorrect
refence to https://github.com/espressif/esp-idf/issues/2284
Before fixing, the tx power in adv data is always 0xeb(-21dbm).

restriction:
    If change BLE advertising TX power, please call esp_ble_gap_config_adv_data()
    after BLE adv TX power changed.

    Later, will implement set BLE advertising TX power via HCI, then the
    TX power value in adv data can be update automatically after BLE adv
    TX power changed.
2018-09-12 20:23:45 +08:00
Ivan Grokhotkov
d928465151 cmake: use built-in file function to create dummy main 2018-09-12 20:21:38 +08:00
zhiweijian
c462a66726 Component/bt: fix save error key in smp when reconnect 2018-09-12 19:51:59 +08:00
Ivan Grokhotkov
8a38a2332a cmake: don't add main component Kconfig twice 2018-09-12 19:37:25 +08:00
Ivan Grokhotkov
c4b0f00985 Merge branch 'bugfix/mdns_service_txt_set' into 'master'
bugfix: mdns_service_txt_set() wasn't allocating memory for TXT records

See merge request idf/esp-idf!3244
2018-09-12 18:43:53 +08:00
He Yin Ling
d4eca3abf5 Merge branch 'bugfix/multi_divece_cant_detect_case' into 'master'
fix the bug of multi device framework that dut can't detect case

See merge request idf/esp-idf!3176
2018-09-12 18:29:34 +08:00
morris
d338279c03 doc/error-handling: translated error-handling.rst
Translated error-handling.rst from en to zh_CN.
2018-09-12 17:54:33 +08:00
Ivan Grokhotkov
ff2cea0df2 Merge branch 'bugfix/cmake_lambda' into 'master'
idf.py: Make the lambda function Python 2 & 3 compatible

See merge request idf/esp-idf!3245
2018-09-12 17:36:03 +08:00
Jiang Jiang Jian
540ccf4177 Merge branch 'bugfix/enlarge_coap_server_pdu' into 'master'
fix: response failed when set a large response data

See merge request idf/esp-idf!2627
2018-09-12 16:48:12 +08:00
Jiang Jiang Jian
36337da8b2 Merge branch 'bugfix/btdm_a2dp_role_mixed_up' into 'master'
component/bt: bugfix that A2DP sink device can be connected by another A2DP sink device

See merge request idf/esp-idf!3191
2018-09-12 16:44:53 +08:00
Jiang Jiang Jian
3a19fb7e8a Merge branch 'bugfix/btdm_controller_enable_failed_in_examples' into 'master'
bugfix/btdm_controller_enable_failed_in_examples

See merge request idf/esp-idf!3224
2018-09-12 16:41:58 +08:00
Alex Lisitsyn
ec5eb1e5c2 esp32: Add option to place.rtc_data and .rtc_rodata into the RTC_FAST segment
Changes:
KConfig: The option CONFIG_ESP32_RTCDATA_IN_FAST_MEM is added in Kconfig file for esp32 component.
esp32.common.ld: added support of RTC_DATA_ATTR, RTC_RODATA_ATTR data placement into appropriate segment according to Kconfig option.
esp32.ld: linker script is modified to set alias for memory segment selected by Kconfig option to place data. The segments for force placement are added for RTC_FAST_ATTR, RTC_SLOW_ATTR attributes.
esp_attr.h: added new attributes RTC_FAST_ATTR, RTC_SLOW_ATTR for force placement into fest/slow memory.
test_rtc_fast.c: Added unit test cases to check data placement into appropriate memory segment.
Updated documentation for RTC_DATA_ATTR, RTC_FAST_ATTR, RTC_SLOW_ATTR in deep_sleep_stub.rst file.

TW#18001
Closes https://github.com/espressif/esp-idf/issues/1553
2018-09-12 09:25:13 +02:00
houchenyao
73a763fecb fix the bug that multi device's dut can't detect case 2018-09-12 07:18:00 +00:00
Angus Gratton
500ee99219 Merge branch 'bugfix/fix_mcpwm_api_mismatch_bug' into 'master'
driver(mcpwm): Fix  some mcpwm related bug

See merge request idf/esp-idf!2510
2018-09-12 14:59:02 +08:00
Angus Gratton
cbcc60ae5f Merge branch 'doc/rmt_example_doc_improve' into 'master'
doc(rmt): update README.md file of rmt related example.

See merge request idf/esp-idf!2636
2018-09-12 14:58:04 +08:00
Ivan Grokhotkov
9bdb28c5c8 Merge branch 'bugfix/py23_packages' into 'master'
Improve the Python package installation procedure

See merge request idf/esp-idf!3222
2018-09-12 14:44:21 +08:00
Ivan Grokhotkov
5acf886324 Merge branch 'bugfix/set_a_real_wakeup_period' into 'master'
Corrected ULP wakeup period setup API to account for time the ULP FSM spends on…

See merge request idf/esp-idf!3228
2018-09-12 14:42:53 +08:00
David Cermak
23345d2021 MQTT: Integrate esp-mqtt library into idf
added docs and tests for mqtt library, small fixes (removed warnings, option for custom outbox, websocket bug fixed for longer transports). refactored to use common tcp_transport component, support for CMake build system.
Closes #2108
2018-09-12 08:00:59 +02:00
Angus Gratton
fdabd5e0b1 Merge branch 'feature/check_uniqueness_name_of_partitions' into 'master'
partition_table: Check - partition names must be unique

See merge request idf/esp-idf!3204
2018-09-12 12:55:14 +08:00
Konstantin Kondrashov
2a87f00942 partition_table: Check - partition names must be unique 2018-09-12 10:58:38 +08:00
krzychb
c8b342cc40 There are now visible links to change between English and Chinese version of documentation. Therefore information on the home page how to switch between languages has been removed. Added 'Download' link to the menu to provide a more visible access to documentation in PDF format for people who prefer to read it offline. 2018-09-12 04:48:50 +02:00
Roland Dobai
dff7a2a302 idf.py: Make the lambda function Python 2 & 3 compatible 2018-09-11 13:11:04 +02:00
Piyush Shah
e5e2702ca3 bugfix: mdns_service_txt_set() wasn't allocating memory for TXT records
Allocation was happening later, causing possible use of stack variables
of caller function, which could be invalid.

Signed-off-by: Piyush Shah <piyush@espressif.com>
2018-09-11 16:23:56 +05:30
Roland Dobai
c3d99dd2e4 Encourage to install python packages without administrative rights
Using 'sudo pip install' can cause a lot of problems because usually
there are a couple of Python interpreters installed. This fix encourages
developers to use `pip install --user` instead which is safer.
2018-09-11 08:54:37 +02:00
Roland Dobai
5eb452f72e Add required Python packages
On some systems pip and setuptools are no longer installed as
dependencies of the python packages. This commit adds the requirement
for these packages.
2018-09-11 08:54:37 +02:00
Roland Dobai
b9e1869538 espcoredump: Add tests and Python3 support 2018-09-11 08:53:06 +02:00
zhangyanjiao
237cc88b9f lwip: add code for sending gratuitous ARP periodically 2018-09-11 14:36:42 +08:00
Angus Gratton
17ac4bad73 Merge branch 'feature/py23_docs' into 'master'
docs: Make the Python scripts Python 2&3 compatible

See merge request idf/esp-idf!3226
2018-09-11 12:51:49 +08:00
wangmengyang
ee7a73e5a7 component/bt: release some controller memory according to the configuration of bluetooth examples 2018-09-11 11:32:20 +08:00
wangmengyang
37269dbbca component/bt: bugfix for mismatch of controller mode in sdkconfig.defaults and source code in some examples 2018-09-11 11:32:04 +08:00
Jiang Jiang Jian
9cce5f5a55 Merge branch 'bugfix/fix_the_bug_when_gateway_zero' into 'master'
esp32: fix the bug that SYSTEM_EVENT_STA_GOT_IP is forbidden when gateway is 0.0.0.0

See merge request idf/esp-idf!3210
2018-09-11 10:57:18 +08:00
zhiweijian
9103a04793 component/bt: add adv packet duplicate in scan duplicate 2018-09-11 02:31:11 +00:00
Angus Gratton
94f86e2d88 Merge branch 'feature/cmake_make_main_component_again' into 'master'
cmake: make main a component again

See merge request idf/esp-idf!3202
2018-09-11 09:44:12 +08:00
Renz Christian Bagaporo
d9939cedd9 cmake: make main a component again 2018-09-11 09:44:12 +08:00
zhiweijian
469b8c7e8e component/bt: optimize bluetooth memory debug 2018-09-10 09:19:19 +00:00
Ivan Grokhotkov
82b8db196f examples: add light sleep example 2018-09-10 17:10:43 +08:00
Angus Gratton
f9bed53ea2 Merge branch 'feature/task_wdt_add_timestamp' into 'master'
esp32/task_wdt: Add timestamp to message isr_twdt

See merge request idf/esp-idf!3053
2018-09-10 16:31:20 +08:00
Roland Dobai
004c6fb7ff Docs: Remove unused kconfiglib.py 2018-09-10 10:28:14 +02:00
Angus Gratton
bd1e80b3f0 Merge branch 'bugfix/esp_ipc_call_blocking' into 'master'
ipc: fix `esp_ipc_call_blocking` to return after callback execution is completed

See merge request idf/esp-idf!3218
2018-09-10 16:27:50 +08:00
Jiang Jiang Jian
892fc4ac3f Merge branch 'feature/btdm_add_set_default_passkey_function' into 'master'
Component/bt: add set/clear static passkey function

See merge request idf/esp-idf!3128
2018-09-10 16:08:05 +08:00
Angus Gratton
229fe8e2e4 Merge branch 'feature/esp-wrover-kit-v4_1' into 'master'
Included ESP-WROVER-KIT V4.1 in documenation: Added 'Get Started' guide and updated 'HW Reference'. Closes https://github.com/espressif/esp-idf/issues/2363. Closes https://github.com/espressif/esp-idf/issues/2365.

See merge request idf/esp-idf!3161
2018-09-10 14:48:41 +08:00
Angus Gratton
c5265b12dd Merge branch 'feature/http_client_custom_method' into 'master'
esp_http_client: add support OPPTIONS/SUB/UNSUB/NOTIFY methods

See merge request idf/esp-idf!3214
2018-09-10 14:44:27 +08:00
Roland Dobai
f5a642840a docs: Make the Python scripts Python 2&3 compatible 2018-09-10 08:37:43 +02:00
Ivan Grokhotkov
c76b6d07f0 Merge branch 'fix/sdio_slave_recv_isr_load' into 'master'
sdio_slave: fix the recv crash when trans finish and load at the same time

See merge request idf/esp-idf!3217
2018-09-10 14:37:18 +08:00
krzychb
f6b0b27026 Corrected number of FSM cycles and related description 2018-09-10 07:14:19 +02:00
krzychb
5eee2bf37d Corrected ULP wakeup period setup API to account for time the ULP FSM spends on internal tasks before being able to execute the program. Inspired by https://esp32.com/viewtopic.php?f=2&t=7081. 2018-09-10 07:08:12 +02:00
michael
8f88a81f30 sdio_slave: fix the recv crash when trans finish and load at the same time 2018-09-10 13:06:54 +08:00
Ivan Grokhotkov
27d1b04500 Merge branch 'bugfix/cmake_examples_check_stage' into 'master'
ci: verify example CMakeLists.txt at check stage

See merge request idf/esp-idf!3230
2018-09-10 12:43:29 +08:00
Ivan Grokhotkov
f41eeb9e03 ci: verify example CMakeLists.txt at check stage 2018-09-10 12:02:02 +08:00
wangmengyang
36a8cd1bf5 component/bt: stop to inititate AVRC connection when A2DP connection fails to set up
AVRCP connection binds to A2DP in current implementation, despite the two profiles are\
independent according to specification. AVRCP connection is not necessary to set-up \
if A2DP connection fails to establish
2018-09-10 03:35:58 +00:00
wangmengyang
9621904cdc component/bt: stop to initiate AVDTP connection on failure of A2DP service discovery
In opening state of AVDTP connection, if SDP client fails to get valid A2DP service record\
from peer SDP server, then do not initiate AVDTP connection request
2018-09-10 03:35:58 +00:00
wangmengyang
e9e3bc492b component/bt: bugfix that A2DP sink device can be connected by another A2DP sink device
In pevious implementation, A2DP sink will register an A2DP source Stream End Point(SEP) although the SEP is not\
supposed to be used. Now remove the unused SEP for source so that only one role of A2DP can be supported at one
time. Service record in local SDP server only includes at most one service for A2DP sink role or source
2018-09-10 03:35:58 +00:00
Angus Gratton
9844779553 Merge branch 'bugfix/add_missing_CMakeLists' into 'master'
Added missing CMakeLists.txt file to satisfy CI checks

See merge request idf/esp-idf!3229
2018-09-10 10:54:48 +08:00
krzychb
15c10b3cbe Added missing CMakeLists.txt file to satisfy CI checks 2018-09-09 21:32:57 +02:00
Mahavir Jain
94c571c017 ipc: fix esp_ipc_call_blocking to return after callback execution is completed
Signed-off-by: Mahavir Jain <mahavir@espressif.com>
2018-09-07 14:19:35 +05:30
He Yin Ling
6f5820814f Merge branch 'test/driver_case_review' into 'master'
Test/driver case review

See merge request idf/esp-idf!3206
2018-09-07 16:48:59 +08:00
Ivan Grokhotkov
7e514c11ca Merge branch 'bugfix/http_server_strcasecmp' into 'master'
using case-insensitive compare for getting http header

See merge request idf/esp-idf!3155
2018-09-07 16:45:52 +08:00
Angus Gratton
e7243a2cdd Merge branch 'doc/eclipse_parallel_build' into 'master'
doc: Add parallel builds to the Eclipse setup guide

See merge request idf/esp-idf!3209
2018-09-07 16:03:53 +08:00
Ivan Grokhotkov
457e8d4265 Merge branch 'bugfix/slow_mem_keep_rtc_noinit' into 'master'
sleep: keep RTC_SLOW_MEM powered on if RTC_NOINIT is used

See merge request idf/esp-idf!3213
2018-09-07 15:54:52 +08:00
morris
1e9ce6a2e1 doc: translate parallel build in Eclipse 2018-09-07 14:39:40 +08:00
Angus Gratton
4eeed31a04 Merge branch 'feature/cmake' into 'master'
Merge experimental CMake support to master

See merge request idf/esp-idf!3024
2018-09-07 13:44:17 +08:00
michael
2d748b5d38 spi_slave: fix the issue rx dma get broken by master unexpected transaction 2018-09-07 12:04:55 +08:00
Angus Gratton
70cacc8b4e doc: Add parallel builds to the Eclipse setup guide 2018-09-07 11:48:17 +08:00
Tuan PM
738d49e02b esp_http_client: add support OPPTIONS/SUB/UNSUB/NOTIFY methods 2018-09-07 03:06:09 +00:00
XiaXiaotian
7d56115992 esp32: update API to set CSI channel filter and HT_LTF data generating
method and apply pre-read APB register dport access method to PHY

Close: https://github.com/espressif/esp-idf/issues/2337
2018-09-07 11:05:59 +08:00
Tuan PM
958bf62e5f http_server: using case-insensitive compare for getting http header 2018-09-07 03:04:43 +00:00
zhiweijian
d12982dc6e Component/bt: add set default passkey function 2018-09-07 10:55:44 +08:00
Angus Gratton
aab43e6dda Merge branch 'bugfix/enlarge_ethernet_mac_stack_size' into 'master'
ethernet: enlarge ethernet task stack size

See merge request idf/esp-idf!3203
2018-09-07 10:47:30 +08:00
Ivan Grokhotkov
8893438f08 Merge branch 'feature/cpp_exceptions_example' into 'master'
examples: add C++ exception handling example

See merge request idf/esp-idf!3178
2018-09-07 10:34:18 +08:00
Ivan Grokhotkov
13107d5968 Merge branch 'feature/light_sleep_gpio_uart_wakeup' into 'master'
sleep: add support for GPIO and UART wakeup from light sleep

See merge request idf/esp-idf!3004
2018-09-07 10:33:33 +08:00
morris
161a506f00 ethernet: enlarge ethernet task stack size
1. In original driver, the stack size for emac driver task "emacT" is only 2048 Bytes, which also can not be changed by user.
2. Each time when invoking "emac_start" function, it will reset emac registers, the driver should reconfig some important registers again.
2018-09-07 10:16:34 +08:00
Jiang Jiang Jian
8484b9cfd3 Merge branch 'feature/btdm_legacy_paring' into 'master'
component/bt: Add Legacy Pairing

See merge request idf/esp-idf!3057
2018-09-07 10:15:52 +08:00
Angus Gratton
36bc73e5a6 idf.py: Choose a default serial port for all targets if '-p' is not given 2018-09-06 20:32:49 +08:00
Angus Gratton
deb46b415f lwip: Re-add CONFIG_PPP_SUPPORT check, remove redundant CFLAGS 2018-09-06 20:23:20 +08:00
Angus Gratton
cff2ef695a Merge branch 'master' into feature/cmake 2018-09-06 20:23:04 +08:00
Jiang Jiang Jian
affe75a102 Merge branch 'bugfix/btdm_hfp_invalid_hci_sync_pkt_len' into 'master'
bugfix/btdm_hfp_invalid_hci_sync_pkt_len

See merge request idf/esp-idf!3186
2018-09-06 19:51:42 +08:00
houchenyao
0cfed0b79b rmt test: add the case for bug in github[#1815] 2018-09-06 19:43:30 +08:00
houchenyao
47fcdeaa0b rmt test: add case test test the bug of re-install problem
add pending bug case:rmt_tx_stop function cause the re-install fail when rmt_config_t.tx_config.loop_en==true
2018-09-06 19:43:30 +08:00
houchenyao
09dd1034de rmt test: add case to check memory block.
add RMT channel num and memory block relationship test case to check the memory block range is used in right way.
2018-09-06 19:43:30 +08:00
houchenyao
836d01dcea ledc test: ignore one case.
a bug caused by pcnt. it will fail randomly caused by PCNT bug. It will open when PCNT problem is resolved
2018-09-06 19:43:30 +08:00
Jiang Jiang Jian
b999d10e8c Merge branch 'feature/sync_lwip_as_submodule' into 'master'
Feature/sync lwip as submodule

See merge request idf/esp-idf!2685
2018-09-06 19:43:08 +08:00
Zhang Yan Jiao
3578fe39e0 Feature/sync lwip as submodule 2018-09-06 19:43:08 +08:00
houchenyao
f647ea81cc pcnt test: ignore pcnt two test cases
a bug caused by pcnt. these two cases has about 10% fail ratio. they fail randomly in CI. stress test needed. they are ignored until this bug fixed.
2018-09-06 19:42:20 +08:00
Ivan Grokhotkov
de0e9a1e05 Merge branch 'bugfix/http_server_example_tests_regex' into 'master'
HTTP Server Example Tests : Fix various issues

See merge request idf/esp-idf!3162
2018-09-06 19:37:11 +08:00
Angus Gratton
55756550dd Merge branch 'feature/pyenv_multiple_run' into 'master'
CI: Simplify running commands with several versions of Python

See merge request idf/esp-idf!3123
2018-09-06 19:29:03 +08:00
Ivan Grokhotkov
281345c53a sleep: keep RTC_SLOW_MEM powered on if RTC_NOINIT is used
Fixes a bug that if application uses RTC_NOINIT variables but doesn’t
use RTC_DATA variables, then RTC_NOINIT variables loose their values
after deep sleep.

Reported in https://esp32.com/viewtopic.php?f=2&t=7045&p=30301#p30299
2018-09-06 18:31:17 +08:00
Roland Dobai
9538059f84 CI: Simplify running commands with several versions of Python 2018-09-06 11:50:17 +02:00
houchenyao
22ac8cf424 ledc test: test low speed mode frequency.
remove the comment to test the scenario that ledc in low speed mode frequency can be changed, to make sure the bug has been resolved
2018-09-06 17:44:39 +08:00
houchenyao
98c868ff09 gpio test: add GPIO multi-level interrupt test
add case to test the bug of v3.0. If we trigger the level interrupt more than once, will cause the interrupt be triggered many times
2018-09-06 17:43:23 +08:00
krzychb
91c7149f6e Included information about power on and diagnostics LEDs. Closes https://github.com/espressif/esp-idf/issues/2365. 2018-09-06 11:28:23 +02:00
Angus Gratton
c1b8949a1e cmake: Add CMakeLists.txt file for WiFi station example 2018-09-06 16:20:13 +08:00
Ivan Grokhotkov
599da58070 Merge branch 'feature/disable_rom_logging' into 'master'
esp32/sleep: Add a function to disable logging from ROM code

See merge request idf/esp-idf!3182
2018-09-06 16:11:23 +08:00
Ivan Grokhotkov
09d0b8d47b sleep: allow esp_sleep_get_wakeup_cause to be used for light sleep 2018-09-06 15:42:34 +08:00
Ivan Grokhotkov
6fbf585703 docs/sleep: mention new wakeup sources, use generated API reference 2018-09-06 15:42:34 +08:00
Ivan Grokhotkov
31e969aded examples/console: add light sleep command 2018-09-06 15:40:46 +08:00
Ivan Grokhotkov
cf4f2c19e4 sleep: allow disabling all wakeup sources 2018-09-06 15:40:46 +08:00
Ivan Grokhotkov
75629b7fc3 sleep: add support for GPIO and UART wakeup from light sleep 2018-09-06 15:40:46 +08:00
Ivan Grokhotkov
002d913ab6 uart: add function to set light sleep wakeup threshold 2018-09-06 15:40:46 +08:00
Ivan Grokhotkov
1c5522575e driver/gpio: support wakeup function for RTC IOs 2018-09-06 15:40:46 +08:00
zhangyanjiao
770e413d4c esp32: fix the bug that SYSTEM_EVENT_STA_GOT_IP is forbidden when gateway is 0.0.0.0
Closes: https://github.com/espressif/esp-idf/issues/2344
2018-09-06 14:52:04 +08:00
Jiang Jiang Jian
5c3ca78a07 Merge branch 'bugfix/btdm_discovery_ble' into 'master'
component/bt : fix bug that set discovery mode will stop ble adv

See merge request idf/esp-idf!3183
2018-09-06 14:18:11 +08:00
Jiang Jiang Jian
e675c3cfed Merge branch 'test/split_test_env_for_integration_test' into 'master'
test: split CI test environment

See merge request idf/esp-idf!3099
2018-09-06 13:09:11 +08:00
Angus Gratton
0bc5dcc2c2 cmake: Post-merge fixups 2018-09-06 11:14:30 +08:00
krzychb
1d99531328 Corrected RGB LED pin assignment. Closes https://github.com/espressif/esp-idf/issues/2363. 2018-09-05 22:10:42 +02:00
krzychb
62389b6be6 Included ESP-WROVER-KIT V4.1 in documenation: Added 'Get Started' guide and updated 'HW Reference' 2018-09-05 22:10:42 +02:00
Anurag Kar
3ed5af18fd HTTP Server Example Tests : Fix various issues
* Fixed regex constraints for parsing IP and other parameters from monitor log.
* httplib connection timeouts set
* Redundent tests (commented out earlier) have been removed from advanced_tests. These tests are already run during unit testing.
2018-09-05 23:29:07 +05:30
Ivan Grokhotkov
a0d2dd0385 Merge branch 'bugfix/eclipse_compiler_command_cpp' into 'master'
docs/eclipse: update command to get compiler specs

See merge request idf/esp-idf!3167
2018-09-05 18:35:25 +08:00
Angus Gratton
b1380707e4 Merge branch 'bugfix/ci_github_deploy' into 'master'
ci: Fix spurious pipeline failure when deploying a tag to GitHub

See merge request idf/esp-idf!3021
2018-09-05 18:07:24 +08:00
Jiang Jiang Jian
d7079b6842 Merge branch 'bugfix/tw25969_esp_derive_local_mac_missing' into 'master'
defination: fix the bug that esp_derive_local_mac() defination missing

See merge request idf/esp-idf!3198
2018-09-05 17:21:02 +08:00
zhangyanjiao
8d698a59f4 defination: fix the bug that esp_derive_local_mac() defination missing
Closes: https://github.com/espressif/esp-idf/issues/2352
2018-09-05 14:36:37 +08:00
Ivan Grokhotkov
312424b5ac docs: update command to get compiler specs in a few more places 2018-09-05 11:05:52 +08:00
Ivan Grokhotkov
bcd384eb87 Merge branch 'doc/get_started_override_options' into 'master'
doc: Add environent variable overriding to get started

See merge request idf/esp-idf!3160
2018-09-05 11:02:47 +08:00
Angus Gratton
b355854d4d Merge branch 'master' into feature/cmake 2018-09-05 10:35:04 +08:00
Ivan Grokhotkov
52477d77fb Merge branch 'bugfix/nvs_doc' into 'master'
nvs_flash: Minor changes to NVS documentation

See merge request idf/esp-idf!3192
2018-09-05 10:20:34 +08:00
He Yin Ling
b9f7e0a1a2 test: split CI test environment:
Currently CI test environment is complicated, usually includes NIC, AP.
These devices are not used for a lot test cases. Therefore we split the
test environment, remove unnecessary devices. Then it will be easier to
create CI runners.
2018-09-05 01:45:48 +00:00
Darian Leung
d268677017 doc: Add environemt variable overriding to get started
This comit adds details about the overriding of environment variables such as
ESPPORT and ESPBAUD to the get started guide.
2018-09-05 02:05:31 +08:00
Sagar Bijwe
db7c257f33 nvs_flash: Minor changes to NVS documentation
1) Change API doc to reflect new limits on string and blob length.
2) Add "version" field to Page Header structure in README.

Fixes: https://github.com/espressif/esp-idf/issues/2321
2018-09-04 18:51:31 +05:30
baohongde
bd8b9960d5 component/bt: Add Legacy Pairing 2018-09-04 21:11:03 +08:00
Ivan Grokhotkov
cb2876ff4e examples: add C++ exception handling example 2018-09-04 21:00:14 +08:00
Ivan Grokhotkov
6d865c6104 Merge branch 'feature/termios' into 'master'
Add basic support for termios.h

See merge request idf/esp-idf!3085
2018-09-04 20:42:21 +08:00
Ivan Grokhotkov
97b2281c49 Merge branch 'bugfix/can_driver_multiple_bugs' into 'master'
CAN: Add pm_lock, fix gpio bug, update docs

See merge request idf/esp-idf!3138
2018-09-04 20:34:06 +08:00
Ivan Grokhotkov
2469718481 Merge branch 'bugfix/check_python_order_only_prereq' into 'master'
Use check_python_dependencies everywhere as order-only-prerequisite

See merge request idf/esp-idf!3174
2018-09-04 20:31:49 +08:00
Ivan Grokhotkov
4197ee746a Merge branch 'bugfix/monitor_win_encoding' into 'master'
idf_monitor: Fix Unicode decoding on Windows

See merge request idf/esp-idf!3157
2018-09-04 20:31:37 +08:00
wangmengyang
4e6b3936c0 component/bt: bugfix for incorrect length of HCI SCO packet size in HFP resulted from uninitialized data buffer length 2018-09-04 20:09:07 +08:00
Jiang Jiang Jian
f83926a6e6 Merge branch 'doc/btdm_a2dp_sink_example_improvement' into 'master'
component/bt: fix the format and add more content to A2DP sink example

See merge request idf/esp-idf!2995
2018-09-04 19:37:31 +08:00
Jiang Jiang Jian
619eadf8d3 Merge branch 'doc/btdm_a2dp_source_example_improvement' into 'master'
component/bt: fix the format and add more content to A2DP source example

See merge request idf/esp-idf!2996
2018-09-04 19:14:55 +08:00
Jiang Jiang Jian
69610acbe3 Merge branch 'feature/modify_simple_wifi' into 'master'
modify simple wifi example to getting_started example

See merge request idf/esp-idf!3143
2018-09-04 19:04:42 +08:00
Angus Gratton
2ec0fd8fd6 Merge branch 'feature/signature_verify_updates' into 'master'
secure boot: Support signed app verification without hardware secure boot

See merge request idf/esp-idf!2814
2018-09-04 18:56:47 +08:00
Konstantin Kondrashov
dbad72e6b5 examples/ulp: Add using esp_deep_sleep_disable_rom_logging 2018-09-04 18:21:34 +08:00
Tian Hao
069f495006 component/bt : fix bug that set discovery mode will stop ble adv
As the bluedroid original implmentation of BR/EDR and BLE dual mode about discovery mode,
when set discovery mode for BR/EDR, it will stop ble advertising.

Reference to https://github.com/espressif/esp-idf/issues/2306
2018-09-04 17:07:10 +08:00
Konstantin Kondrashov
38098b713f esp32/sleep: Add a function to disable logging from ROM code 2018-09-04 16:03:18 +08:00
zhangyanjiao
45d596d821 1. modify simple wifi example
2. add README file
2018-09-04 14:44:43 +08:00
Jiang Jiang Jian
b91cf5a33f Merge branch 'bugfix/esp_bt_mem_release' into 'master'
components/bt: Fix broken API esp_bt_mem_release() for parameter ESP_BT_MODE_BTDM

See merge request idf/esp-idf!3121
2018-09-04 14:17:10 +08:00
Jiang Jiang Jian
76669ca817 Merge branch 'feature/modify_espnow' into 'master'
modify espnow example

See merge request idf/esp-idf!3144
2018-09-04 13:09:43 +08:00
Angus Gratton
e54f3d9616 Merge branch 'bugfix/bootloader_random_in_app' into 'master'
esp32: Allow bootloader_random.h use in app, add esp_fill_random() function

See merge request idf/esp-idf!3124
2018-09-04 10:39:12 +08:00
Angus Gratton
49656656c3 Merge branch 'bugfix/lock_up_if_supply_is_varying' into 'master'
bootloader_support: Fix enable wdt for resolve issue with varying supply

See merge request idf/esp-idf!2769
2018-09-04 00:37:52 +08:00
Angus Gratton
6fa52ca8fe cmake: Call check_python_dependencies.py from idf.py & cmake 2018-09-03 18:37:53 +08:00
Roland Dobai
f755a0371d Use check_python_dependencies everywhere as order-only-prerequisite 2018-09-03 11:42:10 +02:00
Angus Gratton
1c452c8e98 Merge branch 'bugfix/make_mconf_deps' into 'master'
kconfig: Don't include system headers in dependency files

See merge request idf/esp-idf!3163
2018-09-03 15:43:20 +08:00
Angus Gratton
6976f5671c Merge branch 'bugfix/heap_dma_pool_fixes' into 'master'
heap: Fixes around DMA reserved pool

See merge request idf/esp-idf!3034
2018-09-03 15:43:01 +08:00
Angus Gratton
1a0b39a1b3 Merge branch 'bugfix/add_core_id_to_idle_task_name' into 'master'
freertos: Add core ID to idle task names

See merge request idf/esp-idf!3159
2018-09-03 14:40:37 +08:00
Konstantin Kondrashov
26ee0f5203 esp32/task_wdt: Add timestamp to message isr_twdt
Closes https://github.com/espressif/esp-idf/issues/2270
2018-09-03 14:31:22 +08:00
Konstantin Kondrashov
4fc84306a2 esp32/task_wdt: Add esp_task_wdt_isr_user_handler function
Added esp_task_wdt_isr_user_handler function to receive twdt events in
the user code.

Closes https://github.com/espressif/esp-idf/issues/2270
2018-09-03 14:31:20 +08:00
Darian Leung
977619f23c freertos: Add core ID to idle task names
This commit adds the core number to the name of each idle task.
2018-09-03 13:50:05 +08:00
Konstantin Kondrashov
9c715d7946 bootloader_support: Fix enable rtc_wdt for resolve issue with varying supply
Eliminates the issue with the lock up in the bootloader due to a power drawdown during its operation.

Closes https://github.com/espressif/esp-idf/issues/1814
2018-09-03 05:43:01 +00:00
Angus Gratton
83a179abb0 esp32: Add esp_fill_random() function
Convenience function to fill a buffer with random bytes.

Add some unit tests (only sanity checks, really.)
2018-09-03 04:39:45 +00:00
Angus Gratton
767ec27350 bootloader_support: Move bootloader_random.h to public header directory 2018-09-03 04:39:45 +00:00
Angus Gratton
ae4efeb3dc mconf: Don't include system headers in dependency files
Fixes issue where build gets stuck because of .d files in the
tools/kconfig directory.

Closes https://github.com/espressif/esp-idf/issues/712
2018-09-03 03:45:15 +00:00
Angus Gratton
5f1844a0c8 Merge branch 'bugfix/heap_poison_swap_check' into 'master'
heap: When verifying & swapping a fill pattern, stop swapping if verification fails

See merge request idf/esp-idf!2890
2018-09-03 11:19:16 +08:00
Angus Gratton
084ca82f96 Merge branch 'feature/bootloader_minor_enhancements' into 'master'
Feature/bootloader minor enhancements

See merge request idf/esp-idf!3111
2018-09-03 10:56:30 +08:00
Angus Gratton
27a1758908 Merge branch 'mesh/rewrite_docs' into 'master'
docs/rewrite_mesh_docs

See merge request idf/esp-idf!2990
2018-09-03 10:52:33 +08:00
Darian Leung
f4c3917712 docs/rewrite_mesh_docs
The following commit rewrites the ESP-MESH docs. This commit includes
new diagrams and a structure approach to the mesh docs. Some mesh api references
have also been modified.
2018-09-02 21:34:21 +08:00
negativekelvin
1d5dc2b9ef wpa2_enterprise fixes 2018-09-01 22:19:48 -07:00
Darian Leung
dc3fa14a26 CAN: Add pm_lock, fix gpio bug, update docs
This commit does the following

- Add power management lock to CAN driver so that APB frequency does not change
whilst CAN driver is in use
- Fix incorrect flag in can_transmit()
- Refactor can_driver_install() and can_driver_uninstall() so that critical sections
are shorter
- Fix CAN gpio configuration bug on RX pin. Closes #2302
- Add docs about multiple ID configuration and fix example links
2018-09-01 02:46:05 +08:00
Hrishikesh Dhayagude
4abe47437f components/bt: Fix broken API esp_bt_mem_release() for parameter ESP_BT_MODE_BTDM
Problem:
The new API esp_bt_mem_release() that was added freed BTDM data to heap from esp_bt_controller_mem_release().
Now with the BT memory optimization commit ee787085f9,
the BTDM data is optimized and reduced to only 32 bytes which is not sufficient amount to be added to heap.
So, using the API leads to assert saying that the region is too small.

Solution:
Modify heap_caps_add_region_with_caps to return ESP_ERR_INVALID_SIZE in case the range is too small to create a new heap.
Do not assert if return value is ESP_ERR_INVALID_SIZE

This also fixes using API esp_bt_controller_mem_release() with ESP_BT_MODE_BTDM

Signed-off-by: Hrishikesh Dhayagude <hrishi@espressif.com>
2018-08-31 14:28:23 +00:00
Jiang Jiang Jian
a557e8cc14 Merge branch 'bugfix/fix_bt_hdr_files' into 'master'
components/bt: Make a pass through Bluetooth header files

See merge request idf/esp-idf!3093
2018-08-31 22:04:39 +08:00
Jiang Jiang Jian
2d0124698e Merge branch 'bugfix/btdm_update_private_address' into 'master'
component/bt: Update BLE private address after it's private address interval

See merge request idf/esp-idf!2987
2018-08-31 21:33:54 +08:00
Jiang Jiang Jian
4542bf19f7 Merge branch 'bugfix/btdm_rfcomm_test_command_cause_crash' into 'master'
component/bt: Fix bug rfcomm test command cause crash

See merge request idf/esp-idf!3080
2018-08-31 21:33:39 +08:00
Jiang Jiang Jian
e3778d7bd9 Merge branch 'bugfix/btdm_find_remote_service_by_uuid_always_return_success' into 'master'
component/bt: Fix bug of SDP find services by uuid always return success

See merge request idf/esp-idf!3036
2018-08-31 21:27:21 +08:00
Jiang Jiang Jian
da1a439153 Merge branch 'feature/modify_smart_config' into 'master'
modify smart config example

See merge request idf/esp-idf!3142
2018-08-31 21:01:57 +08:00
Jiang Jiang Jian
430eeef5a2 Merge branch 'bugfix/esp_wifi_disconnect_fail' into 'master'
update wifi lib to fix two bugs

See merge request idf/esp-idf!3125
2018-08-31 21:01:12 +08:00
Jiang Jiang Jian
76413309a5 Merge branch 'bugfix/tw23350_fix_brownout_reset' into 'master'
when brownout reset occurs, set the phy TX Power to the lowest

See merge request idf/esp-idf!2854
2018-08-31 20:37:18 +08:00
zhangyanjiao
6daecf73ce modify espnow example 2018-08-31 19:21:15 +08:00
Roland Dobai
276cba1103 idf_monitor: Fix Unicode decoding on Windows
Closes https://github.com/espressif/esp-idf/issues/2348
2018-08-31 12:20:55 +02:00
Angus Gratton
38c0626090 cmake app_update: Add "flash blank otadata" functionality to cmake 2018-08-31 12:30:14 +08:00
Angus Gratton
a6282e3e5e cmake idf.py: Print flasher file arguments in order of file offset
Previously, order was random
2018-08-31 12:29:38 +08:00
Angus Gratton
c921f14128 cmake: Generate list of components with dependent items first, use deterministic ordering
Guarantees that a component's project_include.cmake will be called after its dependent components'
project_include.cmake. Because of cycles in the dependency graph, this is less useful than you'd
think but it gives a strong guarantee for any component which is not part of a cycle.

Also applies deterministic ordering (ordering is initialised as COMPONENT_REQUIRES_COMMON then all
COMPONENTS in alphabetical order, but then the sorting by dependencies is applied.)
2018-08-31 12:29:13 +08:00
zhangyanjiao
b952031947 fix the esp_wifi_disconnect() err when wifi is not started or inited
Closes: https://github.com/espressif/esp-idf/issues/2336
2018-08-31 10:49:52 +08:00
Angus Gratton
6de75e03ac Merge branch 'ci/add_check_stage' into 'master'
ci: Add 'check' stage, move all check-related jobs to this stage

See merge request idf/esp-idf!2986
2018-08-31 10:08:59 +08:00
Dennis Damen
d8cf8074ec Updated command to get compiler specs.
Eclipse was unable to resolve the std::mutex type eventhough the mutex header file was succesfully included. By adding this modification, the issues was resolved.
2018-08-30 22:00:47 +02:00
Jiang Jiang Jian
4cd1643006 Merge branch 'bugfix/btdm_security_vulnerability' into 'master'
fix bluetooth security vulnerability of ECDH public key checking

See merge request idf/esp-idf!3089
2018-08-31 02:02:59 +08:00
Jiang Jiang Jian
cda3eff3a2 Merge branch 'bugfix/wifi_reorder_mpdu_as_ampdu' into 'master'
esp32: reorder MPDU as AMPDU

See merge request idf/esp-idf!3108
2018-08-31 01:59:50 +08:00
XiaXiaotian
cfaf6c2729 esp32: reorder MPDU as AMPDU
Some APs transmit AMPDU and MPDU by turns. Moreover, the sequence
    numbers of AMPDU and MPDU are out of order, e.g. MPDU(1253) -
    AMPDU(1251, 1252) - MPDU(1254) - AMPDU(1255, 1256). In order to
    receive both AMPDU and MPDU in order, MPDU must be reordered with
    AMPDU.
2018-08-30 17:18:48 +00:00
Roland Dobai
5395435816 Add basic support for termios.h
Closes https://github.com/espressif/esp-idf/issues/2063
2018-08-30 14:29:20 +02:00
Ivan Grokhotkov
499d06746b Merge branch 'bugfix/py3_error_code_generator_from_docs' into 'master'
Docs: Check Python packages

See merge request idf/esp-idf!3135
2018-08-30 20:25:09 +08:00
zhangyanjiao
98cf74d1b7 modify static variables and README file 2018-08-30 19:52:10 +08:00
Roland Dobai
7cfef29eb8 Docs: Check Python packages 2018-08-30 13:20:42 +02:00
Angus Gratton
5fbfd20f10 Merge branch 'master' into feature/cmake 2018-08-30 18:52:31 +08:00
Angus Gratton
a9c4ed7139 Merge branch 'master' into feature/cmake 2018-08-30 18:51:01 +08:00
Angus Gratton
31cbd1b251 Merge branch 'feature/emmc_ddr' into 'master'
sdmmc: eMMC support, command layer refactoring

See merge request idf/esp-idf!3062
2018-08-30 18:14:35 +08:00
Angus Gratton
7440d5f920 Merge branch 'feature/py3_idf_size' into 'master'
tools: Support Python 3 in idf_size.py

See merge request idf/esp-idf!2849
2018-08-30 18:12:17 +08:00
zhangyanjiao
5425979932 when brownout reset occurs,set the phy TX Power to the lowest 2018-08-30 14:22:03 +08:00
Angus Gratton
c4ed9d15f7 heap: Drop priority of DMA reserved memory pool
Ensures that non-reserved memory should be used up first, before allocating from this pool.
2018-08-30 06:18:18 +00:00
Angus Gratton
776c57e0ac heap: When adding a new heap, allocate its metadata block from internal memory only 2018-08-30 06:18:18 +00:00
Angus Gratton
fafe532f35 ci: Add 'check' stage, move all check-related jobs to this stage
Allows us to prevent pushing to GitHub if a check fails on master/release branch.
2018-08-30 14:14:48 +08:00
Ivan Grokhotkov
da34e3eb68 sdmmc: document eMMC support, host features 2018-08-30 13:14:26 +08:00
Ivan Grokhotkov
b7e5b28f49 sdmmc: update unit tests for ESP_eMMC_TestBoard_V1
1. New tests for SD card on slot 0. Currently frequency for 4-bit mode
has to be reduced in the test.

2. Change pin for CD/WP tests, re-enable CD tests.
2018-08-30 13:14:26 +08:00
Ivan Grokhotkov
78fab8a0f9 sdmmc: implement partial DDR support
Works for 3.3V eMMC in 4 line mode.
Not implemented:
- DDR mode for SD cards (UHS-I) also need voltage to be switched to 1.8V.
- 8-line DDR mode for eMMC to be implemented later.
2018-08-30 13:11:54 +08:00
Ivan Grokhotkov
de42d99b1d sdmmc: command layer refactoring 2018-08-30 13:11:54 +08:00
Angus Gratton
1806a69abf Merge branch 'bugfix/http_server_example_tests' into 'master'
http_server : Fix and enable example tests

See merge request idf/esp-idf!2960
2018-08-30 12:46:29 +08:00
Tian Hao
5a8917c337 fix bluetooth security vulnerability of ECDH publick key checking 2018-08-30 11:39:19 +08:00
sergiu2014
383464749a eMMC/MMC support for ESP32
Merges https://github.com/espressif/esp-idf/pull/1941
Previous work in https://github.com/espressif/esp-idf/pull/590
2018-08-30 11:36:28 +08:00
Ivan Grokhotkov
80e47a005d sdmmc host: minor cleanup
Code style, comments
2018-08-30 11:36:28 +08:00
Angus Gratton
100a325129 Merge branch 'fix/spi_example_wait_gpio' into 'master'
spi: fix the misleading example, letting the master wait until slave is ready

See merge request idf/esp-idf!3136
2018-08-30 11:29:38 +08:00
He Yin Ling
b01e87bbaf Merge branch 'test/bugfix_BTSTK_GATT_25007' into 'master'
test: fix bug of BTSTK_GATT_25007

See merge request idf/esp-idf!3096
2018-08-30 11:19:04 +08:00
Jiang Jiang Jian
9be09692b1 Merge branch 'bugfix/btdm_get_acl_num' into 'master'
component/bt : fix get acl number incorrect due to memory release

See merge request idf/esp-idf!3090
2018-08-30 11:12:46 +08:00
Angus Gratton
e5842f69d0 Merge branch 'doc/python_sphinx_build' into 'master'
docs: Call 'python -m sphinx' instead of sphinx-build

See merge request idf/esp-idf!3127
2018-08-30 11:02:35 +08:00
Angus Gratton
ff54bfcde1 Merge branch 'bugfix/hwcrypto_mpi_ecp' into 'master'
mbedtls: Don't unnecessarily grow the result of a hardware bignum operation

See merge request idf/esp-idf!3041
2018-08-30 10:00:07 +08:00
Anurag Kar
e2b4ad8f6e Temporary : Disable leak tests 2018-08-30 03:01:59 +05:30
Anurag Kar
e2da1d9905 http_server : Fix and enable example tests
This introduces the following changes in the example test scripts :
* Dependency on python requests library removed in favor of httplib
* Bug fixed in the logic responsible for receiving and processing http chunked responses
* Default timeouts increased Note : Due to connectivity issues (between runner host and DUT) in the runner environment, some of the advanced_tests are being ignored. These tests are intended for verifying the expected limits of the http_server capabilities, and implement sending and receiving of large HTTP packets and malformed requests, running multiple parallel sessions, etc. It is advised that all these tests be run locally, when making changes or adding new features to this component.
2018-08-30 03:01:59 +05:30
Jiang Jiang Jian
ba17648aea Merge branch 'bugfix/mesh_fix_hard_to_find_parent' into 'master'
mesh: bugfix and add two APIs

See merge request idf/esp-idf!3107
2018-08-29 23:05:32 +08:00
Angus Gratton
5689e446dc cmake: Add missing example CMakeLists.txt files, CI check all examples have both 2018-08-29 20:22:55 +08:00
Angus Gratton
49a910adfb cmake: partition_table: Use PYTHON interpreter when running parttool.py (fixes flasher args on Windows) 2018-08-29 20:22:55 +08:00
Angus Gratton
a528d3a61a kconfig: Merge Kconfig.compiler back into Kconfig
Reverts 5e0a3d99e8 (no longer needed but also not supported by
mconf-idf built from kconfig-frontends repo.)
2018-08-29 20:22:55 +08:00
Angus Gratton
cb158f1194 cmake: Account for missing partition CSV file at cmake runtime
Avoid either breaking menuconfig (if cmake fails), or producing bad build output (if cmake succeeds
but no flashing offsets, etc. were generated.)
2018-08-29 20:22:55 +08:00
Renz Bagaporo
071aaea66b Place embedded data on flash 2018-08-29 20:22:55 +08:00
Angus Gratton
408463d0bf cmake idf.py: Fix bug in JSON parsing when printing flash commands 2018-08-29 20:22:55 +08:00
Angus Gratton
7f06543817 cmake/partitions: Apply offset to partition table metadata correctly
Also warn if the parttool.py has an error
2018-08-29 20:22:55 +08:00
Mahavir Jain
8227db4f5e spi_flash: fix erase_range for block erase check
Erase in block (64k) as much as possible, before falling back
to sector (4k) erase.

Signed-off-by: Mahavir Jain <mahavir@espressif.com>
2018-08-29 12:04:32 +00:00
Mahavir Jain
62746e414e bootloader: add API for erasing flash region
Signed-off-by: Mahavir Jain <mahavir@espressif.com>
2018-08-29 12:04:32 +00:00
Mahavir Jain
4a987dacca bootloader: keep bootloader_common code to retention region
It is possible to utilize some of the routines related to otadata
partition validation, after firmware image is downloaded to RAM. Hence
these routines should be part of app cpu cache, so that they do not
get overwritten by firmware.

Signed-off-by: Mahavir Jain <mahavir@espressif.com>
2018-08-29 12:04:32 +00:00
Angus Gratton
a56b3abf84 kconfiglib: Allow CONFIG_xxx= to disable booleans
But replace all sdkconfig.defaults to use the explicit =n (more correct)
2018-08-29 19:39:17 +08:00
Angus Gratton
393c29b656 cmake: Fix bt component dependencies 2018-08-29 19:37:25 +08:00
Angus Gratton
068a3e2f6a cmake: Fix flasher argument generation 2018-08-29 19:37:19 +08:00
Michael (XIAO Xufeng)
0c64d8e822 spi: fix the misleading example, letting the master wait until slave is ready 2018-08-29 18:40:21 +08:00
Jitin George
458b167f1a docs/en/security: Add documentation for signed apps without hardware secure boot feature 2018-08-29 17:05:34 +08:00
Angus Gratton
b364f23e17 secure boot: Support secure boot signatures without hardware secure boot
Allows OTA updates to be secured via signature checks, without requiring the overhead or complexity
of a full secure boot implementation.

Uses same signing mechanisms (build system and/or espsecure.py as Secure Boot).

Requires:
* [ ] More testing
* [ ] Documentation
2018-08-29 17:05:29 +08:00
Ivan Grokhotkov
27f3c3e668 Merge branch 'bugfix/gcc8_warnings' into 'master'
Fix or silence warnings found by GCC 8

See merge request idf/esp-idf!3130
2018-08-29 15:53:28 +08:00
Angus Gratton
1abd346943 docs: Call 'python -m sphinx' instead of sphinx-build
Fixes mismatches where default Python interpreter may not match the most recently
installed sphinx-build wrapper script (if sphinx 2 & 3 both installed, pip will
clobber any previous copy of /bin/sphinx-build when it installs the new one.)
2018-08-29 14:43:42 +08:00
Ivan Grokhotkov
61dc37a6c3 examples/bluetooth: add fallthrough annotations 2018-08-29 14:40:28 +08:00
Anton Maklakov
8c040e749f bluetooth: fix format overflow warnings 2018-08-29 14:40:28 +08:00
Anton Maklakov
779bce7681 bluetooth: fix incorrect memset size 2018-08-29 14:40:28 +08:00
Anton Maklakov
e8eb8cb2a4 bluetooth: fix missing braces and indentation 2018-08-29 14:40:28 +08:00
Ivan Grokhotkov
ed546797d0 heap: test: don’t warn about oversized mallocs 2018-08-29 14:40:28 +08:00
Ivan Grokhotkov
033b694128 bt/a2dp: fix incorrect return type
res was declared as “bool” so expression

((count == 0) ? A2D_SET_ONE_BIT : A2D_SET_MULTL_BIT)

always evaluated to “true”, and was implicitly converted to
A2D_SET_ONE_BIT.
2018-08-29 14:40:28 +08:00
Ivan Grokhotkov
9fbe42c0f1 bt/bta: fix returning value from function returning void 2018-08-29 14:40:28 +08:00
Ivan Grokhotkov
536df958ad bt/btm: fix misplaced debug statement 2018-08-29 14:40:28 +08:00
Anton Maklakov
6af721e8e4 examples/bluetooth: Fix incompatible cast 2018-08-29 14:40:28 +08:00
Ivan Grokhotkov
c3123b00ae examples/spi_slave: check for truncation in snprintf call
Also fix character array initializer
2018-08-29 14:40:28 +08:00
Ivan Grokhotkov
324004f7b3 spiffs: test: check for truncation in snprintf call 2018-08-29 12:49:15 +08:00
Ivan Grokhotkov
9ba5896d86 driver, ethernet: fix non-static inline functions
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81734
2018-08-29 12:49:15 +08:00
Ivan Grokhotkov
fc0c110efd driver: test: fix memset out of bounds in spi_master test 2018-08-29 12:49:15 +08:00
Ivan Grokhotkov
946a823ccb syscalls: fix type conversion for _raise_r stub 2018-08-29 12:49:15 +08:00
Alexey Gerenkov
7e5c235b9d app_trace: Fix tmo initialization 2018-08-29 10:55:39 +08:00
Angus Gratton
669c5ac538 Merge branch 'feature/add_deinit_to_emac_driver' into 'master'
ethernet: support esp_eth_deinit

See merge request idf/esp-idf!3059
2018-08-28 18:09:55 +08:00
Angus Gratton
961f59ff57 mbedtls: Don't unnecessarily grow the result of a hardware bignum operation
Avoids growing the result of hardware bignum operations
(particularly for multiplication)

Fixes bugs where some Elliptic Curve operations fail or corrupt memory,
as they assume length of the number is never greater than the number of
non-zero limbs.

Includes some general refactoring to standardize terminology.

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

Fixes TW12984

Adds test cases for both these issues.
2018-08-28 09:08:43 +00:00
Tian Hao
eb3f280cd3 component/bt : fix get acl number incorrect due to memory release
1. after memory release MR merged, due to the get acl number condition is not completed, it will cause get acl number value incorrect
2. It may cause set Security Mode (BR/EDR) enable failed
2018-08-28 15:35:40 +08:00
Jiang Jiang Jian
26850880b2 Merge branch 'bugfix/btdm_fix_crash_when_BLE_do_SMP_con_discon_stress_test' into 'master'
component/bt: fix crash when BLE do SMP connect and disconnect stress test

See merge request idf/esp-idf!3077
2018-08-28 13:40:20 +08:00
morris
ec07112f5b ethernet: support esp_eth_deinit
1. change static emac-dma memory to dynamic
2. add esp_eth_deinit
3. modify ethernet example
4. add testcase for ethernet deinit function
5. GPIO0 could not output the 50MHz clock to PHY, so remove this configuration
2018-08-28 12:18:48 +08:00
Angus Gratton
1eaf112589 Merge branch 'bugfix/rtc_wdt_interval_overflow' into 'master'
rtc_wdt: fix overflow issue with setting wdt interval

See merge request idf/esp-idf!3110
2018-08-28 12:12:21 +08:00
chensheng
d04c101c96 test: fix bug of BTSTK_GATT_25007 2018-08-28 12:00:15 +08:00
Ivan Grokhotkov
cc8ad721f9 Merge branch 'bugfix/deep_sleep_stub_ptr_check' into 'master'
reset_reason: fix setting wake stub entry point to 0x80000000

See merge request idf/esp-idf!3101
2018-08-28 11:01:22 +08:00
Jiang Jiang Jian
f5b699cee7 Merge branch 'bugfix/btdm_a2dp_sink_pcm_buf_size' into 'master'
bugfix/btdm_a2dp_sink_pcm_buffer_size

See merge request idf/esp-idf!3052
2018-08-28 10:42:36 +08:00
Ivan Grokhotkov
208530a727 Merge branch 'bugfix/idf_app_assert_print' into 'master'
tiny-test-fw: Print more useful info when download.config doesn't exist

See merge request idf/esp-idf!3112
2018-08-28 10:00:44 +08:00
Ivan Grokhotkov
131ce6c441 Merge branch 'doc/custom_app_flash_map_off' into 'master'
docs: Adds description of OpenOCD command to configure custom app image location

See merge request idf/esp-idf!3030
2018-08-28 09:59:36 +08:00
He Yin Ling
6244f11384 Merge branch 'bugfix/disable_fuzzer_host_test_by_default' into 'master'
CI: disable fuzzer host test by default

See merge request idf/esp-idf!3115
2018-08-27 22:28:44 +08:00
He Yin Ling
a7d2cb138b CI: disable fuzzer host test by default:
Same key in YAML file will overwrite the key introduced by anchor
2018-08-27 21:41:52 +08:00
Roland Dobai
5cdff46370 tools: Support Python 3 in idf_size.py 2018-08-27 13:39:07 +02:00
qiyuexia
91dd05662d mesh: bugfix and add two APIs
1. new APIs: esp_mesh_get_subnet_nodes_num() and esp_mesh_get_subnet_nodes_list().
2. fix hard to find the parent during connect.
3. disable Wi-Fi channel switch function.
4. fix a typo of MESH_EVENT_NO_PARENT_FOUND.
2018-08-27 19:12:40 +08:00
Alexey Gerenkov
ac07c23e37 docs: Adds description of OpenOCD command to configure custom app image location 2018-08-27 14:08:36 +03:00
Ivan Grokhotkov
6dae5b206f reset_reason: fix setting wake stub entry point to 0x80000000
esp_reset_reason_init would check for reset reason hint, and
unconditionally set RTC_RESET_CAUSE_REG (which is also
RTC_ENTRY_ADDR_REG) to hint value 0, i.e. 0x80000000. However the ROM
code treats this value as valid deep sleep wake stub entry point, and
tries to jump to it.

Clear RTC_RESET_CAUSE_REG only if it contained a valid reset reason
hint, and simply set the register value to 0 when doing so. Also add
a check to esp_get_deep_sleep_wake_stub function that deep sleep wake
stub entry address must be in IRAM.

Reported in https://esp32.com/viewtopic.php?f=13&t=6919.
2018-08-27 19:01:03 +08:00
Roland Dobai
bc307c920c tiny-test-fw: Print more useful info when download.config doesn't exist 2018-08-27 12:47:08 +02:00
Angus Gratton
414b84c041 Merge branch 'feature/ci_fuzzer_tests_lwip' into 'master'
ci jobs running fuzz tests on dns, dhcp, dhcps + removed unnecessary references (libexpat)

See merge request idf/esp-idf!2866
2018-08-27 16:25:21 +08:00
Jiang Jiang Jian
147b349799 Merge branch 'bugfix/fix_several_wifi_bugs' into 'master'
esp32: update wifi lib to fix several WiFi bugs

See merge request idf/esp-idf!3095
2018-08-27 14:24:04 +08:00
Jiang Jiang Jian
6519f1833a Merge branch 'bugfix/fix_probable_mem_leak' into 'master'
components/bt: Fix a probable memory leak for BTA_GATTS_CONF_EVT event

See merge request idf/esp-idf!2962
2018-08-27 14:10:22 +08:00
Angus Gratton
3adf41a5fe Merge branch 'feature/py3_idf_monitor' into 'master'
tools: Support Python3 in idf_monitor

See merge request idf/esp-idf!2930
2018-08-27 12:29:38 +08:00
Angus Gratton
2c8c210a66 Merge branch 'feature/py3_for_gen_esp_err_to_name' into 'master'
tools: support python3 in gen_esp_err_to_name.py

See merge request idf/esp-idf!2827
2018-08-27 12:29:03 +08:00
Angus Gratton
b5e1bc1047 Merge branch 'doc/addition_translation_in_get_started' into 'master'
doc: additional translation in get_started

See merge request idf/esp-idf!3087
2018-08-27 12:21:36 +08:00
Jiang Jiang Jian
1c676300f0 Merge branch 'bugfix/btdm_fix_get_error_adv_sometimes' into 'master'
Component/bt: fix get error adv packet sometimes

See merge request idf/esp-idf!3035
2018-08-27 12:17:23 +08:00
zwj
430d3da089 component/bt: fix crash when BLE do SMP connect and disconnect stress test 2018-08-27 11:09:29 +08:00
wangmengyang
3faee500bb component/bt: bugfix for incorrect computation of PCM data buffer size in A2DP sink 2018-08-27 02:53:59 +00:00
morris
988dfc6546 doc: additional translation in get_stated 2018-08-27 10:44:28 +08:00
Jiang Jiang Jian
df78612896 Merge branch 'bugfix/btdm_fix_memory_leak_in_security_server' into 'master'
component/bt: fix memory leak in security server

See merge request idf/esp-idf!3014
2018-08-27 10:19:27 +08:00
baohongde
588e006256 component/bt: Fix bug of SDP find services by uuid always return success 2018-08-27 02:14:45 +00:00
Angus Gratton
d91a44737f Merge branch 'doc/build_system_zh_CN' into 'master'
doc: translate build-system from en to zh_CN

See merge request idf/esp-idf!3067
2018-08-27 09:40:40 +08:00
Angus Gratton
6c95285bdb Merge branch 'bugfix/app_update_test' into 'master'
app_update: Change NUM_PIN_APP_TEST for unit test

See merge request idf/esp-idf!3050
2018-08-27 08:46:02 +08:00
Jiang Jiang Jian
51a4b4ba27 Merge branch 'bugfix/btdm_check_slave_feats_before_set_afh' into 'master'
bugfix/btdm_check_slave_feature_before_set_afh

See merge request idf/esp-idf!2972
2018-08-26 16:19:48 +08:00
Liu Zhi Fu
6a080febbc esp32: update wifi lib to fix several WiFi bugs
Fix following WiFi bugs:
1. Shouldn't scan when connect
2. Check beacon length in modem sleep
3. Fix the bug that AP may deauth wrong station when inactivity timer expires
4. Fix the bug that WiFi assert the system when receiving empty MCS in association response frame
2018-08-26 12:47:24 +08:00
Hrishikesh Dhayagude
29ec0339f6 components/bt: Fix a probable memory leak for BTA_GATTS_CONF_EVT event
Multiple modules register their callback BTA_GATTS_AppRegister().

If any of the callbacks do not free the allocated pointer in
BTA_GATTS_CONF_EVT event, then this can result in memory leak.

So, free the pointer after the callback function is called and remove
the calls to free in the callback functions as it is now not required

Signed-off-by: Hrishikesh Dhayagude <hrishi@espressif.com>
2018-08-25 16:26:37 +00:00
Hrishikesh Dhayagude
739b4aadf7 components/bt: Make a pass through Bluetooth header files
This is just a quick glance at all the header files exposed to the
users from cleanup point of view.

Signed-off-by: Hrishikesh Dhayagude <hrishi@espressif.com>
2018-08-25 21:21:42 +05:30
zhiweijian
f74b041288 Component/bt: fix memory leak in security server 2018-08-25 15:47:47 +00:00
He Yin Ling
b14e87a605 Merge branch 'test/fix_test_summary_duplicate' into 'master'
fix bug BTSTK_GAP_14007,BTSTK_GAP_14008,BTSTK_GAP_14009 duplicate summary

See merge request idf/esp-idf!3079
2018-08-25 10:22:40 +08:00
Mahavir Jain
f0fa66a50e rtc_wdt: fix overflow issue with setting wdt interval
Signed-off-by: Mahavir Jain <mahavir@espressif.com>
2018-08-24 18:06:39 +05:30
He Yin Ling
783d63488b Merge branch 'bugfix/multi_case_test' into 'master'
test: fix the multi device stop thread bug

See merge request idf/esp-idf!3039
2018-08-24 19:54:34 +08:00
wangmengyang
6b0a1bd700 component/bt: check support of AFH in remote slave device's LM feature then determine whether to send LMP_set_AFH 2018-08-24 11:48:12 +00:00
zhiweijian
1ca5b70803 Component/bt: fix get error adv packet sometimes 2018-08-24 09:24:49 +00:00
Konstantin Kondrashov
4e28799709 app_update: Change NUM_PIN_APP_TEST for unit test
Fixed error when `make TESTS_ALL=1`
2018-08-24 16:52:27 +08:00
baohongde
9eefd8c1aa component/bt: Fix bug rfcomm test command cause crash
find when BQB
2018-08-24 14:49:33 +08:00
chensheng
ef0287de7d fix bug BTSTK_GAP_14007,BTSTK_GAP_14008,BTSTK_GAP_14009 duplicate summary 2018-08-24 14:25:24 +08:00
Roland Dobai
79b9948cdf tools: support python3 in gen_esp_err_to_name.py 2018-08-24 08:13:01 +02:00
Roland Dobai
7118f4734b tools: Support Python3 in idf_monitor
Closes https://github.com/espressif/esp-idf/pull/1284
2018-08-24 08:12:19 +02:00
morris
5e36837752 doc: translate build_system from en to zh_CN 2018-08-24 12:31:34 +08:00
Angus Gratton
c7f4fae8d0 Merge branch 'feature/python_future' into 'master'
Add python-future by using python requirements file

See merge request idf/esp-idf!2973
2018-08-24 08:04:18 +08:00
Ivan Grokhotkov
7abed5fc9e Merge branch 'fix/spi_dma_config_in_iram' into 'master'
SPI: put dma config and slave functions into IRAM

See merge request idf/esp-idf!3038
2018-08-23 22:03:28 +08:00
He Yin Ling
9699e3f926 Merge branch 'test/add_mesh_recreate_network_case_to_known_issue' into 'master'
test: add mesh recreate network case as known issue

See merge request idf/esp-idf!3066
2018-08-23 19:12:08 +08:00
He Yin Ling
32171da525 test: disable mesh recreate network test:
We have fixed a bug in test script. Before that, we didn't do strict check when generate the mesh tree, which makes the test pass.

Temp disable these cases, to let CI pass before bug fixed.
2018-08-23 17:49:59 +08:00
Roland Dobai
52d11dcfb0 docs: make the use of pip install clear 2018-08-23 11:41:56 +02:00
Roland Dobai
74fe7c82ae bootloader: Don't use check_python_dependencies in the bootloader command 2018-08-23 11:41:40 +02:00
houchenyao
df83323ee3 bugfix:fix the multi device stop thread bug 2018-08-23 08:51:16 +00:00
Angus Gratton
1d2bcb77af make: Don't invoke check_python_dependencies in bootloader subproject 2018-08-23 08:28:57 +02:00
Angus Gratton
31ae3fe683 make: Use order-only prereq to check python dependencies 2018-08-23 08:28:57 +02:00
morris
1a79900970 translated some parts in get-started section to zh_CN
1. "install required python packages" in docs/zh_CN/get-started/index.rst
2. docs/zh_CN/get-started/linux-setup-scratch.rst
3. docs/zh_CN/get-started/linux-setup.rst
4. docs/zh_CN/get-started/macos-setup-scratch.rst
5. docs/zh_CN/get-started/macos-setup.rst
2018-08-23 08:28:57 +02:00
Roland Dobai
62cad3a7d7 Add python-future by using python requirements file 2018-08-23 08:28:57 +02:00
Michael (XIAO Xufeng)
4f87a62f18 spi_slave: add new menuconfig item to decide whether spi slave should be put into IRAM 2018-08-23 05:21:49 +00:00
Michael (XIAO Xufeng)
e3557b57be spi: fix the issue that spi cannot be used when flash is disabled
The dma configuration function called in the ISR should be put into the IRAM.

Fixes https://github.com/espressif/esp-idf/issues/2307.
2018-08-23 05:21:49 +00:00
Ivan Grokhotkov
88d40e01b4 Merge branch 'feature/rtc_slowclk_extra_options' into 'master'
Add more RTC_SLOW_CLK options

See merge request idf/esp-idf!2984
2018-08-23 11:27:14 +08:00
Jiang Jiang Jian
eb18122038 Merge branch 'bugfix/esp_bt_controller_mem_release' into 'master'
BT/BTDM memory release might fail if any of the memory regions is empty

See merge request idf/esp-idf!3031
2018-08-23 11:02:17 +08:00
Jiang Jiang Jian
33f0eadac9 Merge branch 'bugfix/timer_oneshot_timeout_twice' into 'master'
component/bt: Some timer oneshot will timeout twice

See merge request idf/esp-idf!2979
2018-08-23 10:41:53 +08:00
Ivan Grokhotkov
dda56ff55c Merge branch 'bugfix/nvs_set_blob_bug' into 'master'
nvs_flash: Fix nvs_set_blob hang when partition is near to FULL

See merge request idf/esp-idf!3051
2018-08-23 10:27:20 +08:00
Angus Gratton
7c9439dcbf Merge branch 'bugfix/wrover-kit-camera-socket-pinout' into 'master'
Corrected pinout of the Camera / J4 connector

See merge request idf/esp-idf!3054
2018-08-23 09:06:04 +08:00
Angus Gratton
8846b5fb64 Merge branch 'bugfix/freertos_task_delete' into 'master'
freertos: Expose TCB & Stack memory capabilities as macro, fix task delete test

See merge request idf/esp-idf!3040
2018-08-22 19:39:21 +08:00
David Cermak
882ca87442 lwip: removed ASSERT in dhcp as the error might occur in runtime if packet is altered 2018-08-22 12:13:34 +02:00
David Cermak
ebebda9604 lwip: supported ci jobs running fuzz tests on dns, dhcp, dhcps 2018-08-22 12:13:20 +02:00
Ivan Grokhotkov
902344c516 Merge branch 'bugfix/trace_mem_layout_pro_cpu' into 'master'
soc: fix trace memory region for single core mode

See merge request idf/esp-idf!3029
2018-08-22 16:51:43 +08:00
Ivan Grokhotkov
50ce2b7d05 Merge branch 'feature/make-otadata' into 'master'
make dump_otadata: Displays app ota_seq and crc on console

See merge request idf/esp-idf!2901
2018-08-22 16:51:36 +08:00
Sachin Parekh
7a5400ce77 make dump_otadata: Displays app ota_seq and crc on console 2018-08-22 16:51:36 +08:00
Ivan Grokhotkov
9ab70d5379 Merge branch 'bugfix/http_write_data' into 'master'
esp_http_client: Fix minor bugs in `esp_http_client_write` and `esp_http_client_open` APIs

See merge request idf/esp-idf!2924
2018-08-22 16:49:29 +08:00
Ivan Grokhotkov
81d6c65379 Merge branch 'feature/esp_http_client_add_esp_tls' into 'master'
esp_http_client: Add esp-tls in esp_http_client

See merge request idf/esp-idf!2740
2018-08-22 16:48:35 +08:00
Ivan Grokhotkov
96971e3e9f esp32: add support for 8MD256 and external 32k as slow clock options 2018-08-22 11:46:24 +08:00
Ivan Grokhotkov
5bf3654637 soc/rtc: Force power on 8M clock if it is used to derive RTC slow clock 2018-08-22 11:33:20 +08:00
Ivan Grokhotkov
8365f0f5d2 soc/rtc: add support for external 32k oscillator
Compared to external 32k XTAL, when active oscillator is used as input,
some parameters need to be set differently.
2018-08-22 11:33:20 +08:00
Ivan Grokhotkov
9efc06be0f esp32/clk: remove unused code
When 32k XTAL was selected as clock source, if the first calibration
attempt failed, the code would fall back to 150kHz internal clock.
Calibration with the internal clock will always succeed.
Therefore `wait` would always be either 0 or 1. Based on this, some
code in this routine can be eliminated.
2018-08-22 11:33:20 +08:00
Ivan Grokhotkov
90f5456dba Merge branch 'feature/rtc_cpu_freq_config' into 'master'
soc/rtc: Refactoring, support CPU frequencies lower than XTAL

See merge request idf/esp-idf!2856
2018-08-22 11:32:08 +08:00
Angus Gratton
7b4626f824 ci: Fix spurious pipeline failure when deploying a tag to GitHub
Everything succeeds, but because [ -z ${CI_COMMIT_TAG} ] on the last line returns non-zero, it
fails the job.
2018-08-22 13:11:18 +10:00
krzychb
1857bca871 Corrected pinout of the Camera / J4 connector 2018-08-21 22:01:28 +02:00
Sagar Bijwe
911f96ad21 nvs_flash: Fix nvs_set_blob hang when partition is near to FULL
Marking a page full does not skip it from page selection process and the
same page might get returned if there is no other page with more unused
entries. Added a check for the same while storing blobs.

Fixes: https://github.com/espressif/esp-idf/issues/2313
2018-08-21 17:08:46 +05:30
Jitin George
4d6dcb71ce esp_http_client: Add esp-tls APIs in SSL transport of esp_http_client
esp-tls APIs and SSL transport layer of esp_http_client try to
achieve similar things, so this is an effort to remove code redundancy.
2018-08-21 09:07:07 +00:00
Jitin George
7b56ae319d esp-tls: Add support for network timeout 2018-08-21 09:07:07 +00:00
Jeroen Domburg
4eb28b9ace Merge branch 'feature/spi_burst_desc' into 'master'
spi_master: change to DMA burst mode when access descriptors

See merge request idf/esp-idf!2824
2018-08-21 16:54:38 +08:00
Jeroen Domburg
9de884f586 Merge branch 'feat/spi_non_dma_64byte' into 'master'
spi_master: change high part config to allow transactions of 64 bytes

See merge request idf/esp-idf!3025
2018-08-21 16:53:37 +08:00
Ivan Grokhotkov
e3d76d13b4 docs: update power management section on esp_pm_configure 2018-08-21 13:02:46 +08:00
Ivan Grokhotkov
e59571eece soc/rtc_clk: reduce data size by disabling CSWTCH generation
Saves about 200 bytes of DRAM at the expense of 4 bytes in IRAM.
2018-08-21 13:02:46 +08:00
Ivan Grokhotkov
db2f0f45be soc/rtc_clk: split rtc_clk_init into separate object file
rtc_clk_init and related functions don’t need to be in IRAM/DRAM.
2018-08-21 13:02:46 +08:00
Ivan Grokhotkov
3cec686803 examples/power_save: set CPU frequencies in sdkconfig 2018-08-21 13:02:46 +08:00
Ivan Grokhotkov
bcf79e5cf2 tests: use new CPU frequency setting API 2018-08-21 13:02:46 +08:00
Ivan Grokhotkov
c722cf3e06 bootloader: use new CPU frequency setting API 2018-08-21 13:02:46 +08:00
Ivan Grokhotkov
bec70ce298 esp32: use new CPU frequency setting API 2018-08-21 13:02:46 +08:00
Ivan Grokhotkov
2e31cce390 soc/rtc: CPU frequency settings refactoring
Previous APIs used to set CPU frequency used CPU frequencies listed in
rtc_cpu_freq_t enumeration. This was problematic for two reasons.
First, supporting many possible frequency values obtained by dividing
XTAL frequency was hard, as every value would have to be listed in
the enumeration. Since different base XTAL frequencies are supported,
this further complicated things, since not all of these divided
frequencies would be valid for any given XTAL frequency. Second,
having to deal with enumeration values often involved switch
statements to convert between enumeration and MHz values, handle
PLL/XTAL frequencies separately, etc.

This change introduces rtc_cpu_freq_config_t structure, which contains
CPU frequency (in MHz) and information on how this frequency has to
be generated: clock source (XTAL/PLL), source frequency, clock
divider value. More fields can be added to this structure in the
future. This structure simplifies many parts of the code, since both
frequency value and frequency generation settings can be accessed in
any place in code without the need for conversions.

Additionally, this change adds setting of REF_TICK dividers to support
frequencies lower then XTAL with DFS.
2018-08-21 13:02:03 +08:00
Ivan Grokhotkov
05a5410033 esp_clk.h: add esp_clk_xtal_freq
This adds a user API for getting the XTAL frequency
2018-08-21 13:02:03 +08:00
Ivan Grokhotkov
a6a9484084 Merge branch 'feature/move_CONFIG_TCPIP_LWIP_to_menuconfig' into 'master'
tcpip_adapter: optimise tcpip_adapter and fix a bug in emac_dev.c

See merge request idf/esp-idf!3017
2018-08-21 11:37:15 +08:00
Ivan Grokhotkov
4dd7233b20 Merge branch 'feature/reset_reason' into 'master'
Add API to get reset reason

See merge request idf/esp-idf!2871
2018-08-21 11:34:12 +08:00
baohongde
4fe04ae14d component/bt: Update BLE private address after it's private address interval 2018-08-21 11:01:44 +08:00
Angus Gratton
c5d6845c5a freertos: Expose TCB & Stack memory capabilities as macro, fix task delete test
Test was failing if task was allocating TCB & Stack memory from DMA only pool
which is not MALLOC_CAP_DEFAULT.
2018-08-21 12:19:33 +10:00
Jiang Jiang Jian
ad9db6ff1c Merge branch 'bugfix/bluetooth_demo_sdkconfig' into 'master'
Fix bluetooth example sdkconfig.defaults

See merge request idf/esp-idf!3032
2018-08-20 20:33:35 +08:00
morris
b63f6a8a95 emac:optimise tcpip_adapter and fix emac_dev.c
1. move CONFIG_xx macros to Kconfig
2. fix a bug that make EMAC_DMAOPERATION_MODE_ERG mess
2018-08-20 19:52:48 +08:00
Jitin George
2122e5f83d esp_http_client: Fix minor bugs in esp_http_client_write and esp_http_client_open APIs
`esp_http_client_write` API puts a constraint on the maximum length of the data that can be
written, which is equal to client handle buffer size, but the data to be sent can be more
than that, so in this case, this API has to be called multiple times.

In `esp_http_client_open` API, the return value of `transport_write` API, used to send HTTP
request, is not checked, and in rare cases, data written will be less than expected which will
cause a problem. So there are fixes for these minor issues in this MR.
2018-08-20 10:41:42 +00:00
Ivan Grokhotkov
8403adf4e0 docs: add API reference section for esp_system.h 2018-08-20 16:49:20 +08:00
Ivan Grokhotkov
3ef650cd46 esp32/test: add tests for reset reasons 2018-08-20 16:49:20 +08:00
Ivan Grokhotkov
0aa384d40c esp32: add API to get reset reason 2018-08-20 16:49:20 +08:00
Ivan Grokhotkov
fd61c1440b tiny-test-fw: invoke expect callbacks in order of appearance
Previously the callbacks were invoked in the same order as the list of
patterns to be matched.
2018-08-20 16:49:20 +08:00
Ivan Grokhotkov
b600a908c4 unit test: fix regex for detecting abort 2018-08-20 16:49:20 +08:00
Angus Gratton
76f864511d Merge branch 'feature/docs_new_logo_typeface' into 'master'
Replaced Espressif logo with a new, consistent, modern and neutral typeface design.

See merge request idf/esp-idf!2988
2018-08-20 08:22:02 +08:00
Angus Gratton
9bc74e6815 Merge branch 'bugfix/err_variable_issue' into 'master'
Fix small parameter issue in bt_a2dp_sink example. Merges…

See merge request idf/esp-idf!3012
2018-08-20 07:59:24 +08:00
Tian Hao
99d0624999 Fix bluetooth example sdkconfig.defaults
1. a2dp_gatts_coex
2. blufi BT_RESERVE_DRAM
2018-08-19 11:35:28 +08:00
me-no-dev
afa091fe79 prevent heap_caps_add_region exception if region is empty
Calling `esp_bt_controller_mem_release` or `esp_bt_mem_release` might result in exception if any of the regions returned to heap are empty. This happens usually if BT/BLE is enabled, but not used/linked in the final firmware.
2018-08-17 08:49:48 +02:00
Ivan Grokhotkov
164e324fe2 Merge branch 'feature/bootloader_unit_tests' into 'master'
app_update: Add unit tests for ota, factory, test partitions

See merge request idf/esp-idf!2565
2018-08-17 14:39:50 +08:00
wangmengyang
0465e930d5 component/bt: fix the format and add more content to A2DP source example document and source code 2018-08-16 20:08:00 +08:00
Jiang Jiang Jian
5ba0d6bde6 Merge branch 'bugfix/ut_bt_build_fix' into 'master'
bt: build unit tests only when CONFIG_BT_ENABLED=1

See merge request idf/esp-idf!3000
2018-08-16 19:49:14 +08:00
Jiang Jiang Jian
98eaa5c2ec Merge branch 'docs/security' into 'master'
docs: Added more wordings to capture secure boot and flash encryption dependency.

See merge request idf/esp-idf!2947
2018-08-16 19:31:36 +08:00
Jiang Jiang Jian
00ef8bf726 Merge branch 'feature/decrease_bt_contrller_memory_with_new_mem_reserved' into 'master'
decrease bt contrller memory with new mem reserved

See merge request idf/esp-idf!2791
2018-08-16 19:12:44 +08:00
michael
404e99965d spi_master: change high part config to allow transactions of 64 bytes 2018-08-16 18:55:09 +08:00
Angus Gratton
3012b0f887 Merge branch 'feature/nvs_multi_page_util' into 'master'
Bugfix: multi page blob creation was failing if only one entry was left in page

See merge request idf/esp-idf!2971
2018-08-16 15:23:11 +08:00
Angus Gratton
01f855fd18 Merge branch 'feature/nvs_part_gen_util_file_size' into 'master'
Add support for input custom partition size

See merge request idf/esp-idf!2828
2018-08-16 15:22:24 +08:00
Angus Gratton
ff2404a272 Merge branch 'master' into feature/cmake 2018-08-16 17:14:17 +10:00
Shivani Tipnis
dfde105f25 Add support for input custom partition size 2018-08-16 11:54:46 +05:30
Shivani Tipnis
5ce40fce0c Add nvs part gen utility multi page blob support update 2018-08-16 11:46:25 +05:30
Konstantin Kondrashov
1da0483619 app_update: Add unit tt pests for ota, factory, test partitions 2018-08-16 09:57:32 +05:00
Angus Gratton
4f227a4ce3 Merge branch 'bugfix/spiram_malloc_reserve_internal_fragments' into 'master'
esp32: Allow SPIRAM_MALLOC_RESERVE_INTERNAL to span multiple regions of memory

See merge request idf/esp-idf!2891
2018-08-16 11:19:39 +08:00
Tian Hao
ab73e0ff13 tools: fix ci example build report reassign warnning 2018-08-16 11:12:22 +08:00
Angus Gratton
ccd0c61ea1 Merge branch 'feature/rtc_wdt_api' into 'master'
soc/rtc_wdt: Add API functions for rtc_wdt

See merge request idf/esp-idf!2837
2018-08-16 08:19:12 +08:00
Ivan Grokhotkov
32c01de7a3 Merge branch 'feature/what_driver_for_my_board' into 'master'
Provided a table with development boards by Espressif together with USB-to-serial driver names

See merge request idf/esp-idf!2792
2018-08-16 05:24:40 +08:00
Krzysztof Budzynski
df5d3ea692 Provided a table with development boards by Espressif together with USB-to-serial driver names 2018-08-16 05:24:40 +08:00
Ivan Grokhotkov
73e18a4c96 Merge branch 'docs/simplified_rtd_theme_configuration' into 'master'
Removed redundant code to configure 'sphinx-rtd-theme' for documentation

See merge request idf/esp-idf!2921
2018-08-16 05:23:54 +08:00
Mahavir Jain
0075e2f316 soc: fix trace memory region for single core mode
Signed-off-by: Mahavir Jain <mahavir@espressif.com>
2018-08-15 20:52:39 +05:30
Jiang Jiang Jian
020ade652d Merge branch 'bugfix/tw24588_Android_get_IP_fail' into 'master'
fix the bug for Android phone getting IP fail when STA+AP mode

See merge request idf/esp-idf!3006
2018-08-15 11:47:13 +08:00
Angus Gratton
802fc7236d Merge branch 'doc/unit_test_zh_CN' into 'master'
doc: translate the unit-tests.rst into Chinese

See merge request idf/esp-idf!2998
2018-08-15 09:05:17 +08:00
Piocky
23a510c752 Fix small parameter issue in bt_a2dp_sink example. Merges https://github.com/espressif/esp-idf/pull/2261
The wrong parameter was used to print the error if something failed during the bt init.
2018-08-14 22:13:00 +02:00
Jiang Jiang Jian
b96fa40dd1 Merge branch 'bugfix/mdns_any_type_share' into 'master'
mdns: Fix a portion of the queries are issued with the wildcard query type

See merge request idf/esp-idf!2886
2018-08-15 00:52:21 +08:00
Konstantin Kondrashov
a8e46775c6 soc/rtc_wdt: Add API functions for rtc_wdt
Added functions:
rtc_wdt_protect_off/on
rtc_wdt_set_length_of_reset_signal
rtc_wdt_set_stage
rtc_wdt_set_time
rtc_wdt_feed
rtc_wdt_disable/enable
2018-08-14 17:48:02 +05:00
morris
90350cb82d doc/unit-tests:translate the unit-tests into zh_CN 2018-08-14 15:47:08 +08:00
Liu Han
f3f0445f4d mdns: Fix a portion of the queries are issued with the wildcard query type 2018-08-14 07:25:08 +00:00
zhangyanjiao
89601e0b9f fix the bug for Android phone getting IP fail when STA+AP mode 2018-08-14 15:04:47 +08:00
Jiang Jiang Jian
b4b1b361da Merge branch 'bugfix/bt_fix_incorrect_handle_print' into 'master'
examples/bluetooth: Fix incorrect end handle print in the GATT client applications

See merge request idf/esp-idf!2880
2018-08-14 14:16:53 +08:00
Sagar Bijwe
b27773e87c docs: Added more wordings to capture secure boot and flash encryption dependency. 2018-08-14 11:27:29 +05:30
Angus Gratton
08ae7ef9dc Merge branch 'feature/ota_get_sha-256_of_partition' into 'master'
bootloader_support: Add API for getting sha256_of_partition

See merge request idf/esp-idf!2479
2018-08-14 11:32:39 +08:00
Tian Hao
ee787085f9 component/bt : decrease memory consumption by conn number
1. BLE only with 9(max) connection will decrease 3K DRAM
2. BR/EDR only with 7(max) connection will decrease 16K DRAM
3. Any of BLE or BR/EDR connection number decrease will also decrease DRAM consumption
4. Decrease one BLE connection will save about 1KB DRAM
5. Decrease one BR/EDR ACL connection will save about 1.2KB DRAM
6. Decrease one BR/EDR SCO/eSCO will save 2KB DRAM.
7. fix some definition and kconfig
8. remove 1.2k of vhci tx cache and make .bss & .data to heap about 1.4K
9. modify BT Reserved Memory size and modify example to support new bt kconfig
2018-08-14 02:29:17 +00:00
Ivan Grokhotkov
a85a8aef62 Merge branch 'bugfix/ulp_jumps_flags' into 'master'
ULP: document JUMPS instruction flags, add tests

See merge request idf/esp-idf!2949
2018-08-14 01:14:12 +08:00
Ivan Grokhotkov
3b5875efe0 ci: only apply BOT_DOCKER_IMAGE_TAG to esp32-ci-env 2018-08-13 16:48:27 +00:00
Ivan Grokhotkov
1fbff01799 docs: update esp32ulp-binutils download link 2018-08-13 16:48:27 +00:00
Ivan Grokhotkov
1bd7d404fe ulp: add documentation for JUMPS instruction conditions
Hardware implements conditions LE, LT, GE, and conditions EQ and GT
are implemented in the assembler by emitting two JUMPS instructions
with other conditions.
2018-08-13 16:48:27 +00:00
Ivan Grokhotkov
c7fc5b1171 ulp: add tests for jumps instruction 2018-08-13 16:48:27 +00:00
Ivan Grokhotkov
7fca027355 bt: build unit tests only when CONFIG_BT_ENABLED=1 2018-08-13 17:38:37 +03:00
wangmengyang
e60db51240 component/bt: fix the format and add more content to A2DP sink example document and source code 2018-08-13 21:17:27 +08:00
Konstantin Kondrashov
117c79eae5 app_update: Add API for getting sha256_of_partition
Added bootloader_common_get_sha256_of_partition() and esp_partition_get_sha256() - get or calculate SHA-256
digest for app and data partitions.
Added bootloader_sha256_hex_to_str() - helps to print SHA-256 digest
Added esp_partition_check_identity() - compares two partitions by SHA-256 digest

Refactoring a function esp_image_load() in bootloader space to esp_image_verify() and
bootloader_load_image(). Old name function esp_image_load is deprecated
and will remove in V4.0 version.

spi_flash/sim: Fix error test_host. Add stub for bootloader_common_get_sha256_of_partition in sim/stubs
2018-08-13 13:59:07 +05:00
Jiang Jiang Jian
886bf4b88e Merge branch 'bugfix/btdm_ecdh_public_key_not_check' into 'master'
component/bt: Fixed the vulnerability released by Bluetooth org when using…

See merge request idf/esp-idf!2933
2018-08-13 15:44:13 +08:00
yulong
72eaaff9fe component/bt: Fixed the vulnerability released by Bluetooth org when using public key not check in the process of ECDH encryption.
1. Add the 100 times test when the private key is generated by the random number;
2. Add the bt components to the unit-test-app/config directory.
3. Added the bt unit test case to CI.
2018-08-13 14:08:11 +08:00
baohongde
31c66af560 component/bt: Some timer oneshot will timeout twice
Find when BQB
2018-08-13 06:00:11 +00:00
Angus Gratton
638581d872 Merge branch 'bugfix/doc_generated_sections' into 'master'
docs: Move version-related includes to run in sphinx-build not make

See merge request idf/esp-idf!2985
2018-08-13 13:57:42 +08:00
krzychb
4946850e82 Replaced Espressif logo with a new, consistent, modern and neutral typeface design. 2018-08-13 07:22:41 +02:00
Angus Gratton
50e7b116c1 docs: Add gen-version-specific-includes.py to executables list 2018-08-13 13:37:23 +10:00
Angus Gratton
69f73eb5ee docs: Move version-related includes to run in sphinx-build not make
Means they show up on ReadTheDocs(!)
2018-08-13 12:24:55 +10:00
Jiang Jiang Jian
30545f4ccc Merge branch 'bugfix/btdm_fix_get_bond_list_error_when_connection_with_no_bond' into 'master'
Component/bt: fix get bond list error when connection with no bond

See merge request idf/esp-idf!2957
2018-08-10 20:46:34 +08:00
Ivan Grokhotkov
8739111218 Merge branch 'bugfix/gpio_reset_bitmask' into 'master'
gpio: Bitmask overflow fix in gpio_reset_pin

See merge request idf/esp-idf!2966
2018-08-10 17:35:26 +08:00
Angus Gratton
383a3f788d Merge branch 'doc/heap_tracing' into 'master'
heap docs: Fix some bad links & errors in the heap docs

See merge request idf/esp-idf!2942
2018-08-10 16:46:52 +08:00
Angus Gratton
c9cbc6b30c heap docs: Fix some bad links & errors in the heap docs
Also add a note about printf() sometimes causing on-demand allocations.
2018-08-10 15:54:58 +10:00
Angus Gratton
f4b23d1505 Merge branch 'bugfix/http_client_null_auth_header' into 'master'
esp_http_client: Fixed exception on 401 without Www-Authenticate header

See merge request idf/esp-idf!2900
2018-08-10 13:44:55 +08:00
Jiang Jiang Jian
3486ce6898 Merge branch 'mesh/bugfix_parent_switch' into 'master'
mesh: modify parent switch mechanism

See merge request idf/esp-idf!2803
2018-08-10 11:31:50 +08:00
Angus Gratton
f341c5c944 Merge branch 'doc/versions' into 'master'
docs: Add version-specific include files, version documentation

See merge request idf/esp-idf!2858
2018-08-10 08:08:10 +08:00
Ivan Grokhotkov
f9a44968bc Merge branch 'bugfix/nvs_mem_leak' into 'master'
nvs: fix memory leak when writing a blob

See merge request idf/esp-idf!2969
2018-08-09 20:48:31 +08:00
Ivan Grokhotkov
5fc6397589 nvs: fix memory leak when writing a blob
Introduced in 5a27a63.
Clear usedPages list in all exit conditions, add test.
2018-08-09 10:35:19 +03:00
Angus Gratton
13ff99867d docs: Combine the common en/zh_CN Makefiles to one common file 2018-08-09 11:08:03 +10:00
Michael (XIAO Xufeng)
522f9c4b4a docs: translate the version include script to Chinese 2018-08-09 11:08:03 +10:00
Angus Gratton
ed8013ccc2 README: Add version-specific links
Make it clearer how the README fits in with the docs.
2018-08-09 11:07:39 +10:00
Michael (XIAO Xufeng)
203ceed1e7 spi_master: change to DMA burst mode when access descriptors 2018-08-08 13:56:01 +00:00
Ivan Grokhotkov
ee3f64cbad Merge branch 'feature/http_client_head' into 'master'
esp_http_client: add head method support

See merge request idf/esp-idf!2895
2018-08-08 20:58:39 +08:00
Taavi Hein
f7749e18a8 gpio: Bitmask overflow fix in gpio_reset_pin
For pins 32 and up the BIT(nr) macro used here overflowed,
causing undetermined GPIO pins to be reset.
Example: freeing SPI device/bus where CS is on pin 33
caused debug UART to cease communication, TXD0 was
disabled.

Fixed as BIT64(nr) macro, to be used elsewhere as needed.
For example in definitions like GPIO_SEL_32..GPIO_SEL_39.
2018-08-08 15:31:17 +03:00
Angus Gratton
a53a5eeabd Merge branch 'bugfix/add_mutex_for_some_touchpad_apis' into 'master'
fix(touch): add_mutex_for_some_touchpad_apis

See merge request idf/esp-idf!2714
2018-08-08 16:28:28 +08:00
Ivan Grokhotkov
80c5547b97 Merge branch 'bugfix/ulp_fixes' into 'master'
ULP fixes

See merge request idf/esp-idf!2948
2018-08-08 15:37:25 +08:00
zhiweijian
57355d7154 Component/bt: fix get bond list error when connection with no bond 2018-08-08 14:44:22 +08:00
qiyuexia
93c0c8da6b mesh: modify parent switch mechanism
1. modify parent switch mechanism.
2. fix non-root doesn't clear the layer value in nvs.
3. fix retransmit the remove announcement packets.
4. add API esp_mesh_flush_upstream_packets().
5. automatically adjust passsive scan time based on the change of beacon interval.
2018-08-08 13:51:05 +08:00
He Yin Ling
a1a9801f00 Merge branch 'bugfix/remove_check_for_reason_assoc_expire' into 'master'
test: remove check for REASON_ASSOC_EXPIRE:

See merge request idf/esp-idf!2904
2018-08-08 12:58:20 +08:00
Angus Gratton
cdc792d72c Merge branch 'feature/http_firmware_upgrade' into 'master'
esp_https_ota: Add esp_https_ota component

See merge request idf/esp-idf!2771
2018-08-08 12:27:05 +08:00
Angus Gratton
f1a4bc7c94 Merge branch 'feature/aws-iot-update-3.0.1' into 'master'
Feature/aws iot update 3.0.1

See merge request idf/esp-idf!2936
2018-08-08 07:14:58 +08:00
Ivan Grokhotkov
48149fa1b1 Merge branch 'bugfix/asio_test_socket_timeout' into 'master'
asio: added socket timeout for example tests

See merge request idf/esp-idf!2931
2018-08-07 21:49:09 +08:00
Ivan Grokhotkov
323caed83b ulp: fix ULP binary format documentation
Fix incorrect offset value (4+2+2+2+2=12) of arbitrary data in ULP
binary format.

Closes https://github.com/espressif/esp-idf/issues/1705.
2018-08-07 16:14:57 +03:00
Ivan Grokhotkov
22dfb92fe0 ulp: use += instead of := when setting component vars
Component which includes component_ulp_common.mk may also need to set
some of the same COMPONENT_XXX variables. Logically, we should combine
the lists of files to embed, ldflags, extra include dirs, etc.

Fixes https://github.com/espressif/esp-idf/issues/2157.
2018-08-07 16:14:57 +03:00
Ivan Grokhotkov
33153748ba ulp: fix missing include in esp32/ulp.h header
ulp.h uses some register base addresses, so needs to include soc.h
2018-08-07 16:14:57 +03:00
Ivan Grokhotkov
479af576ca ulp: fix calculation or ulp_run argument
The argument to ulp_run should be expressed in 32-bit words. Both the
address of ulp_entry and RTC_SLOW_MEM already are uint32_t*, so their
difference is the difference in addresses divided by sizeof(uint32_t).
Therefore the extra division by sizeof(uint32_t) is not needed.
2018-08-07 16:14:57 +03:00
He Yin Ling
28ab4acb7e test: update Wi-Fi test cases:
1. The test step for error code REASON_ASSOC_EXPIRE is not reliable. SoftAP
could also send error code WIFI_REASON_NOT_AUTHED
2. STA will be disconnected now if softAP restart DHCP server
2018-08-07 10:50:05 +00:00
Jiang Jiang Jian
81ac9c1fc7 Merge branch 'bugfix/wrong_connect_in_all_channel_scan' into 'master'
Wifi: bug fix of may connect to wrong AP in all channel scan

See merge request idf/esp-idf!2829
2018-08-07 18:31:31 +08:00
Anuj Deshpande
fe357c3617 aws-iot: Update to 3.0.1 release
- Fixes https://github.com/espressif/esp-idf/issues/2224
- Fixes https://github.com/espressif/esp-idf/issues/1808
2018-08-07 11:28:54 +05:30
Anuj Deshpande
5efc33ce25 aws-iot: Make thing shadow example compatible with v3 of aws iot sdk 2018-08-07 11:28:54 +05:30
Angus Gratton
5f56f2ca01 Merge branch 'feature/nvs_version_check' into 'master'
nvs_flash: Version compatibility check for nvs storage

See merge request idf/esp-idf!2855
2018-08-07 13:31:49 +08:00
David Cermak
c0186858ad asio: added socket timeout for example tests 2018-08-06 22:05:15 +02:00
Jiang Jiang Jian
39921c9db0 Merge branch 'bugfix/fix_crash_for_http2_request' into 'master'
fix the crash when http2_request example send/recv fail

See merge request idf/esp-idf!2916
2018-08-06 20:41:40 +08:00
Deng Xin
65c441a891 Wifi: bug fix of may connect to wrong AP in all channel scan
1. enable threshold in all channel scan
2. bug fix of may connect to an open AP even set password in all channel scan
2018-08-06 19:54:24 +08:00
zhangyanjiao
9063ce9dda fix the crash when http2_request example send/recv fail 2018-08-06 11:39:01 +00:00
Jiang Jiang Jian
c22e42d869 Merge branch 'bugfix/station_state_machine_change_and_ap_loss_happen' into 'master'
Wifi: station state machine change and fix ap loss

See merge request idf/esp-idf!2911
2018-08-06 18:49:31 +08:00
Jiang Jiang Jian
212e25760b Merge branch 'bugfix/btdm_spp_crash_on_reset' into 'master'
component/bt: Fix bug of SPP crash on reset

See merge request idf/esp-idf!2801
2018-08-06 18:39:21 +08:00
Jiang Jiang Jian
744d703dba Merge branch 'bugfix/btdm_hfp_invalid_sco_param' into 'master'
bugfix/btdm_hfp_invalid_sco_param

See merge request idf/esp-idf!2915
2018-08-06 15:35:27 +08:00
Angus Gratton
bceac5d8e7 Merge branch 'feature/component_memory_reservation' into 'master'
soc: Allow components to reserve fixed memory ranges that they need

See merge request idf/esp-idf!2596
2018-08-06 15:32:44 +08:00
wangmengyang
d4cecc5a04 component/bt: modify the invalid retransmission setting for SCO link in HFP 2018-08-06 06:20:51 +00:00
Angus Gratton
ffaa71bcd6 docs: Add version-specific include files, version documentation
* "git clone" command and a small version header are generated
  depending on git properties.
* Add Versions page with details about each version
* Make it clear using master branch is living on the "bleeding
  edge"
2018-08-06 15:38:32 +10:00
Angus Gratton
272b95e8ce linker: Don't link all of 'soc' into IRAM
Moves any code in *_perpih.c, memory_layout_utils.c to flash
2018-08-06 01:37:55 +00:00
Angus Gratton
a5ae5ac4b3 soc: Allow components to reserve fixed memory ranges that they need
No longer necessary to keep all reserved addresses in 'soc'.

Means 'soc' does not need to know about 'bt', for example.

Also means that Bluetooth can be enabled in config without any memory being reserved for BT
controller. Only if code calling the BT controller is linked in, will this memory be reserved...
2018-08-06 01:37:55 +00:00
Jiang Jiang Jian
f2f2744b29 Merge branch 'bugfix/fix_uart_tx_bug_when_using_ringbuffer' into 'master'
driver(uart): Fixed uart tx_empty interrupt wdt timeout bug

See merge request idf/esp-idf!2823
2018-08-05 23:49:40 +08:00
Jiang Jiang Jian
b85e8e10b9 Merge branch 'bugfix/btdm_fix_sc_mitm_bond_failed_in_smp_for_iphones' into 'master'
Component/bt:  fix SC_MITM_BOND failed in smp for iphones

See merge request idf/esp-idf!2863
2018-08-05 23:48:23 +08:00
kooho
2d0af81ccf driver(uart): Fixed uart tx_empty interrupt wdt timeout bug. 2018-08-05 06:34:34 +00:00
Tuan PM
9aec055ac2 esp_http_client: Fixed exception on 401 without Www-Authenticate header
Closes https://github.com/espressif/esp-idf/issues/2246
2018-08-05 06:24:53 +00:00
Deng Xin
97a41f29b8 Wifi: station state machine change and fix ap loss
1. fix ap loss issue
2. change station behavior when receive disassoc and deauth after connect
3. format state machine reason code
2018-08-05 13:44:58 +08:00
baohongde
2cd9eaccc7 component/bt: Fix bug of SPP crash on reset
In response to: https://github.com/espressif/esp-idf/issues/1998
2018-08-05 00:36:51 +00:00
Sagar Bijwe
1df85e0039 nvs_flash: Version compatibility check for nvs storage
This change adds a check for compatibility between the nvs version
found on nvs flash and the one assumed by running code during nvs
initialization. Any mismatch is reported to the user using new error
code ESP_ERR_NVS_NEW_VERSION_FOUND.
2018-08-05 00:00:56 +00:00
Sagar Bijwe
8ef7a49cc3 nvs_flash: Bump up nvs version 2018-08-05 00:00:56 +00:00
Jiang Jiang Jian
230d9adb8a Merge branch 'bugfix/update_libphy_to_fix_some_issues' into 'master'
esp32: update libphy.a to v3960

See merge request idf/esp-idf!2908
2018-08-05 07:36:02 +08:00
zhiweijian
163dbc3200 Component/bt: fix SC_MITM_BOND failed in smp for iphones 2018-08-04 16:52:53 +00:00
Liu Zhi Fu
0fa1fee8e8 esp32: update libphy.a to v3960
Update libphy.a to v3960:
1. Decrease  phy_init time from 900us to 347us in sleep wakeup
2. Fix RX STBC initialization
3. Modify set_chan function to fix interrupt watchdog issue
2018-08-04 16:21:19 +00:00
Jiang Jiang Jian
b674fa0b99 Merge branch 'bugfix/asio_test_timeout' into 'master'
tiny-test-fw: Increase default expect timeout, increase asio example test timeouts

See merge request idf/esp-idf!2925
2018-08-05 00:20:48 +08:00
Jitin George
2d79af3b13 esp_http_client: Add support for getting transport type 2018-08-03 16:47:08 +05:30
Jitin George
1fecdc3891 esp_https_ota: Add support for HTTPS based ota feature 2018-08-03 16:47:07 +05:30
Jiang Jiang Jian
ad739ee791 Merge branch 'feature/support_64mbit_psram' into 'master'
feature(psram): add support for 64MBit psram of 1.8v and 3.3v.

See merge request idf/esp-idf!2696
2018-08-03 17:59:36 +08:00
Jiang Jiang Jian
4f1e8df367 Merge branch 'bugfix/btdm_a2dp_disconnect_reason' into 'master'
bugfix/btdm_a2dp_disconnect_reason

See merge request idf/esp-idf!2914
2018-08-03 15:30:30 +08:00
Jiang Jiang Jian
4649349074 Merge branch 'bugfix/btdm_fix_ble_HIDD_demo_error' into 'master'
Component/bt: fix ble HID demo error

See merge request idf/esp-idf!2892
2018-08-03 15:26:40 +08:00
Jiang Jiang Jian
f1d516314b Merge branch 'bugfix/coex_wifi_pm' into 'master'
Bugfix/coex wifi pm

See merge request idf/esp-idf!2883
2018-08-03 15:22:13 +08:00
Angus Gratton
8b35d8ef25 asio example tests: Increase timeout for DHCP lease to 30s
Covers time to connect to WiFi and negotiate lease,
may be more than 5-10s on some busy APs
2018-08-03 16:59:23 +10:00
Angus Gratton
6bd58beac5 tiny-test-fw: Increase default expect timeout to 10 seconds
Fix CI failures due to (for example) DHCP lease taking more than 5s to be negotiated.
2018-08-03 16:55:50 +10:00
Angus Gratton
b3ff68a935 Merge branch 'bugfix/hard_error_partition_offset' into 'master'
partition_table: Hard error if CSV contains invalid/overlapping offsets

See merge request idf/esp-idf!2755
2018-08-03 14:52:43 +08:00
Tian Hao
d9dc2985e7 fix bug that wifi sleep before receive beacon
it will resolve the problem:
        1. when bluetooth is running (For example: a2dp sink), wifi station cannot connect to AP easily
        2. improve wifi connection success ratio when coexist is working
2018-08-03 05:07:06 +00:00
Angus Gratton
5aff7fd07f Merge branch 'bugfix/btdm_fix_queue_block_when_scanning' into 'master'
Component/bt: fix queue blocking when scanning

See merge request idf/esp-idf!2706
2018-08-03 07:24:08 +08:00
krzychb
df9c701864 Removed redundant code to configure 'sphinx-rtd-theme' for documentation 2018-08-02 22:10:33 +02:00
Ivan Grokhotkov
146e87fed5 Merge branch 'feature/expat_getrandom' into 'master'
expat: add source of entropy

See merge request idf/esp-idf!2912
2018-08-02 18:03:34 +08:00
Roland Dobai
ce3cb5c3aa expat: add source of entropy 2018-08-02 11:02:45 +02:00
Angus Gratton
3c5af26506 Merge branch 'test/spi_region' into 'master'
spi_master: improve some tests

See merge request idf/esp-idf!2809
2018-08-02 12:09:44 +08:00
Ivan Grokhotkov
7ab4615757 Merge branch 'bugfix/http_chunked_read' into 'master'
bugfix/esp_http_client: fixed http chunked encoding packet loss & add check data before read for ssl transport

See merge request idf/esp-idf!2631
2018-08-02 09:40:39 +08:00
Angus Gratton
b6bdde1eeb Merge branch 'bugfix/github_deploy_regression' into 'master'
ci: Fix bad push command when pushing branch to github

See merge request idf/esp-idf!2902
2018-08-02 08:26:30 +08:00
Angus Gratton
d3ae52afd2 Merge branch 'feature/add_logo_to_docs' into 'master'
Added Espressif logo to documentation

See merge request idf/esp-idf!2763
2018-08-02 08:26:14 +08:00
fuzhibo
81c762eb86 fix(touch): add_mutex_for_some_touchpad_apis 2018-08-01 18:06:21 +08:00
Ivan Grokhotkov
20147f951c Merge branch 'bugfix/heap_caps_alloc_32bit' into 'master'
heap: heap_caps_malloc(..., MALLOC_CAP_32_BIT) should always allocate a 32-bit aligned size

See merge request idf/esp-idf!2889
2018-08-01 17:39:14 +08:00
Angus Gratton
f2a3429812 partition table: Document 'flags' properly 2018-08-01 19:23:38 +10:00
Angus Gratton
6dea5c9546 partition table: Remove hard-coded offsets from default partition tables
Makes them compatible with moving the partition table offset
2018-08-01 19:23:38 +10:00
Angus Gratton
28801449e3 partition_table: Hard error if CSV contains invalid/overlapping offsets
Based on report on forum here:
https://esp32.com/viewtopic.php?f=13&t=6382&p=27514

Previous versions were much more relaxed about what could be in the partition
table, erroring out avoids unexpected changes on upgrade like different
partition offsets.
2018-08-01 19:23:38 +10:00
wangmengyang
7f7f8a02d0 component/bt: retrieve disconnection reason in AVDT when ACL-U link is disconnected 2018-08-01 17:16:52 +08:00
Angus Gratton
7457054c1f Merge branch 'feature/add_rom_elf' into 'master'
Support for ROM functions in core dump backtraces

See merge request idf/esp-idf!2672
2018-08-01 15:21:03 +08:00
Tuan PM
2718a5f674 Add http_buffer description 2018-08-01 07:14:36 +00:00
Tuan
5589954800 esp_http_client: fixed http chunked encoding packet loss & add check data before read for ssl transport
- A bug of the http client when it downloads a chunked encoding packet is greater than the http_client's buffer, http_parser will call the callback body more than once, and the client will only handle the last
- with ssl_read, need to check before read to avoid timeout blocked when no data for reading
2018-08-01 07:14:36 +00:00
zhiweijian
658668b386 Component/bt: fix hci_hal_env.rx_q and xHciH4Queue blocking when scanning 2018-08-01 15:06:56 +08:00
Angus Gratton
7ea4db72de Merge branch 'bugfix/wl_encryption' into 'master'
Bugfix: WL works with encrypted flash

See merge request idf/esp-idf!2530
2018-08-01 15:05:47 +08:00
Ivan Grokhotkov
98255f4225 Merge branch 'feature/mbedtls_2_12_0' into 'master'
mbedtls: update to 2.12.0

See merge request idf/esp-idf!2879
2018-08-01 14:56:50 +08:00
Ivan Grokhotkov
1898e5fbab Merge branch 'bugfix/spi_flash_mmap_malloc_internal' into 'master'
spi_flash: allocate mmap pages array in internal memory

See merge request idf/esp-idf!2885
2018-08-01 14:56:18 +08:00
Ivan Grokhotkov
2a2f960afa Merge branch 'feature/mbedtls_platform_memory_pr2237' into 'master'
Adds a Kconfig option for mbedtls' MBEDTLS_PLATFORM_MEMORY define. This makes it…

See merge request idf/esp-idf!2903
2018-08-01 14:55:54 +08:00
Jiang Jiang Jian
fe09c1cb59 Merge branch 'bugfix/btdm_oob_included' into 'master'
Fix undefined reference error by changing BTM_OOB_INCLUDED

See merge request idf/esp-idf!2878
2018-08-01 14:53:37 +08:00
Ivan Grokhotkov
5452e7848d Merge branch 'bugfix/raise_r_signature' into 'master'
syscalls: fix arguments and return type for _raise_r

See merge request idf/esp-idf!2897
2018-08-01 14:50:59 +08:00
Jiang Jiang Jian
f048da2bf7 Merge branch 'feature/wifi_add_internal_api_to_set_fix_rate' into 'master'
esp32: add internal API to enable or disable transmitting WiFi MAC frame with fixed rate

See merge request idf/esp-idf!2835
2018-08-01 14:50:15 +08:00
Jiang Jiang Jian
a539754c2e Merge branch 'doc/wifi_update_channel_state_information_document' into 'master'
docs: update channel state information document

See merge request idf/esp-idf!2793
2018-08-01 14:49:14 +08:00
Jiang Jiang Jian
29d7382c2b Merge branch 'bugfix/btdm_lmp_trans_coll_state_uncleared' into 'master'
component/bt: btdm_lmp_transcation_collision_state_uncleared

See merge request idf/esp-idf!2731
2018-08-01 14:47:29 +08:00
Jiang Jiang Jian
b6f52a6455 Merge branch 'bugfix/fix_several_wpa2_issues' into 'master'
esp32: fix several wpa2 enterprise issues

See merge request idf/esp-idf!2825
2018-08-01 14:38:15 +08:00
Angus Gratton
6851af3c4b Merge branch 'bugfix/btdm_fix_gattc_count_invalid' into 'master'
Component/bt: fix gattc get count invalid and discover included service error

See merge request idf/esp-idf!2770
2018-08-01 14:06:38 +08:00
Angus Gratton
e6dc0c7bde Merge branch 'bugfix/remove_bt_dependency_on_lwip_header' into 'master'
Bugfix/remove bt dependency on lwip header

See merge request idf/esp-idf!2882
2018-08-01 13:57:35 +08:00
Liu Zhi Fu
343bd32bd8 esp32: fix several wpa2 enterprise issues
Fix following issues:
1. Fix heap corrupted bug
2. Fix memory leak bug
3. Make wpa2 enterprise thread-safe
Closes https://github.com/espressif/esp-idf/issues/1569
2018-08-01 03:43:30 +00:00
XiaXiaotian
149d79f9a1 esp32: add internal API to enable or disable transmitting WiFi MAC frame with
fixed rate
2018-08-01 11:19:43 +08:00
Angus Gratton
9082fef6cf Merge branch 'feature/update_libexpat' into 'master'
expat: Move libexpat into submodule and update to version 2.2.5

See merge request idf/esp-idf!2868
2018-08-01 09:44:38 +08:00
Jason von Nieda
d7a17ac941 Adds a Kconfig option for mbedtls' MBEDTLS_PLATFORM_MEMORY define. This makes it possible to override the mbedtls allocator with your own.
Merges https://github.com/espressif/esp-idf/pull/2237
2018-08-01 11:28:28 +10:00
Angus Gratton
99401a16e7 ci: Fix bad push command when pushing branch to github
Fixes regression in e5f4ae63f1
2018-08-01 10:47:38 +10:00
Roland Dobai
1d1533ee8e expat: Move libexpat into submodule and update to version 2.2.5 2018-07-31 13:25:00 +02:00
Ivan Grokhotkov
79e7f02286 spi_flash: allocate mmap pages array in internal memory
* spi_flash_mmap_pages needs pages array to be in internal memory.
  Document and check this.

* Fix a bug that spi_flash_mmap did not allocate pages array in
  internal memory.

* Minor style fixes: const-ify pages argument of spi_flash_mmap, add
  spaces around operators, mark output arguments with [out].

Closes https://github.com/espressif/esp-idf/issues/2229.
2018-07-31 13:11:04 +03:00
Michael (XIAO Xufeng)
0aa52057ed spi_master: enable 2 tests in CI
The test is previously disabled for the requirement of external
connection. Now the signals are connected by internal connections.
Also change the failure logic of the test.
2018-07-31 18:04:51 +08:00
Michael (XIAO Xufeng)
fb15f970d2 spi_master: change test to test DMA tx/rx in regions like psram 2018-07-31 18:04:50 +08:00
wangmengyang
ae7bf1990e component/bt: bugfix for uncleared LMP transaction collision state after rejecting sniff request from slave 2018-07-31 17:10:32 +08:00
Ivan Grokhotkov
1fdbbec13a syscalls: fix arguments and return type for _raise_r
ROM code still uses incorrect function signature.

Closes https://github.com/espressif/esp-idf/issues/2245.
2018-07-31 12:08:04 +03:00
Jason Kölker
483c3d7a7b esp_http_client: add head method support
Merges https://github.com/espressif/esp-idf/pull/2093
2018-07-31 11:08:31 +03:00
Angus Gratton
1c7a8b3b71 Merge branch 'bugfix/spinlock_perf' into 'master'
freertos: Remove either one or two assertions from "fast path" of vPortCPUReleaseMutex()

See merge request idf/esp-idf!2873
2018-07-31 15:31:55 +08:00
zhiweijian
1261b9e40b Component/bt: fix ble HID demo error 2018-07-31 15:25:14 +08:00
Angus Gratton
6e4b0c3e2f freertos: Remove either one or two assertions from "fast path" of vPortCPUReleaseMutex()
Saves a few cycles by only testing the count validity once, and never for the common case where the
mutex was not recursively locked.
2018-07-31 06:35:25 +00:00
Dmitry
6a950d6a17 Build test applicatoin on host failer fixed.
Make host tests compilible.
2018-07-31 08:45:43 +03:00
Dmitry
2281f6318a Remove CR line ends. 2018-07-31 08:45:43 +03:00
Dmitry
e98a49a691 Position save included. 2018-07-31 08:45:43 +03:00
Dmitry
06bab70822 Usless read removed. 2018-07-31 08:45:43 +03:00
Dmitry
76ee450c3d Erase flash before the first use added.
Пожалуйста, введите сообщение коммита для ваших изменений. Строки,
2018-07-31 08:45:43 +03:00
Dmitry
c9872c649e Additional sector position should not be changed at update. 2018-07-31 08:45:43 +03:00
Dmitry
9d609af54c Added check for version after write. 2018-07-31 08:45:43 +03:00
Dmitry
f392727abf Additional info about version update included. 2018-07-31 08:45:42 +03:00
Dmitry
e834d6fffc CRC check improved. 2018-07-31 08:45:42 +03:00
Dmitry
35842d02ab Calculation for heap usage corrected with workaround.
Fixed problem with multiple mount/unmount for different devices.
Additional check for structure length included into the code.
Remove useless spaces.
Added initialization for reserved memory.
2018-07-31 08:45:42 +03:00
Dmitry
f05f3fbde8 Added test for version update from V1 to V2. Problems for tests on host are fixed. Random function changed to esp_random() 2018-07-31 08:45:42 +03:00
Dmitry
a6d6c58eca The version of WL component changed from 1 to 2.
WL version 2 mark used sectors as 16 bytes block of bytes with CRC.
This changes required because old version did not worked with encryption.
Additional unit tests are implemented.
2018-07-31 08:45:42 +03:00
Angus Gratton
304e9085eb esp32: Allow SPIRAM_MALLOC_RESERVE_INTERNAL to span multiple regions of memory
- Allocate this pool after main_task is running, so it can use startup stack RAM
- Raise the maximum allowed value in KConfig to 256KB
- Based on forum discussions https://esp32.com/viewtopic.php?f=2&t=6550&sid=76cd27bda76c6d0e83d3fcc9ec30c650&start=10#p28253
2018-07-31 15:17:07 +10:00
Angus Gratton
8cbd12b9b7 heap: When verifying & swapping a fill pattern, stop swapping if verification fails
Avoids situation where data has been overwritten during any post-mortem analysis
(core dump, gdbstub, etc).

As reported via forum https://esp32.com/viewtopic.php?f=2&t=6471&p=27790
2018-07-31 14:53:24 +10:00
Angus Gratton
ae59d7522a heap: heap_caps_malloc(..., MALLOC_CAP_32_BIT) should always align a 32-bit aligned size
Fixes crash in heap poisoning code if a non-32bit-aligned size is specified.
2018-07-31 14:29:31 +10:00
Angus Gratton
321b1e0205 Merge branch 'feature/unit_tests_command_line' into 'master'
tools: Allow running unit tests from command line

See merge request idf/esp-idf!2589
2018-07-31 11:38:22 +08:00
zhiweijian
feef9b9387 Component/bt: fix gattc get count invalid 2018-07-31 02:36:46 +00:00
Ivan Grokhotkov
9d2f7c60d9 Merge branch 'bugfix/rmt_struct_bad_addressing' into 'master'
removed possible uint16 access to 32bit register, noted fifo use not recommended

See merge request idf/esp-idf!2821
2018-07-31 04:01:46 +08:00
Ivan Grokhotkov
43baa7f2b9 Merge branch 'feature/cermak_asio_support' into 'master'
asio component and examples in esp-idf

See merge request idf/esp-idf!2509
2018-07-31 03:59:28 +08:00
Ivan Grokhotkov
4116c5a5f9 Merge branch 'bugfix/coap_client_parse_url' into 'master'
bugfix: unexpected host item when coap client parse a URL string

See merge request idf/esp-idf!2642
2018-07-31 03:58:06 +08:00
krzychb
42cf4429a9 Fixed logo width to display correctly in Chinese version of documentation 2018-07-30 21:16:27 +02:00
Jiang Jiang Jian
fd05dd206f Merge branch 'bugfix/btdm_sco_end_crash_on_supv_to' into 'master'
bugfix/btdm_sco_end_crash_on_supv_to

See merge request idf/esp-idf!2737
2018-07-30 22:14:07 +08:00
Roland Dobai
40486c8723 tools: Allow running unit tests from command line
Add argument parsing to unit_test.py to allow running unit tests from
command line.
2018-07-30 13:05:41 +02:00
Hrishikesh Dhayagude
eb92a06aaf examples/bluetooth: Fix incorrect end handle print in the GATT client applications
End handle is incorrectly printed as start handle

Tested that gatt_client, gatt_security_client and gattc_multi_connect compile successfully

Signed-off-by: Hrishikesh Dhayagude <hrishi@espressif.com>
2018-07-30 12:04:07 +05:30
Angus Gratton
bba047fb3e Merge branch 'bugfix/heap_metadata_tests' into 'master'
heap: Fix heap metadata test to account for background memory allocations

See merge request idf/esp-idf!2872
2018-07-30 14:30:59 +08:00
David Cermak
1ef13c524c asio: initial idf port of asio library without ssl 2018-07-30 06:28:43 +00:00
David Cermak
eee34ddd91 lwip fix for udp receivefrom 2018-07-30 06:28:43 +00:00
Ivan Grokhotkov
5b9feaa1fd mbedtls: update to 2.12.0 2018-07-30 09:11:16 +03:00
Noble-Mushtak
dbd429af1b Changed value of BTM_OOB_INCLUDED to TRUE
Merges https://github.com/espressif/esp-idf/pull/2206
2018-07-30 08:53:01 +03:00
Angus Gratton
97286b3107 Merge branch 'feature/cmd_flash_reset_ota_data' into 'master'
make: Add feature to cmd 'make flash' - reset ota_data partition

See merge request idf/esp-idf!2611
2018-07-30 13:52:43 +08:00
Mahavir Jain
02ddb7302e wpa_supplicant: removed unrequired header dir include from component.mk
- Also fixed license header in rtc driver

Signed-off-by: Mahavir Jain <mahavir@espressif.com>
2018-07-30 11:17:11 +05:30
Mahavir Jain
b79fefa011 bluedroid: remove dependency on arpa/inet.h include
Signed-off-by: Mahavir Jain <mahavir@espressif.com>
2018-07-30 11:16:38 +05:30
Angus Gratton
2ab04621b6 Merge branch 'bugfix/ci_github_deploy' into 'master'
ci: Simplify github deployment

See merge request idf/esp-idf!2862
2018-07-30 12:57:21 +08:00
Angus Gratton
bfc6bb97c0 heap: Fix heap metadata test to account for background memory allocations 2018-07-30 11:41:30 +10:00
He Yin Ling
561884b62f Merge branch 'test/workaround_ci_failures' into 'master'
test: workaround ci failures

See merge request idf/esp-idf!2859
2018-07-28 09:01:36 +08:00
He Yin Ling
2b7dd2ef9a ci: temp modify http server tests to get CI pass:
1. change the default value of WIFI password
2. disable simple and advanced test cases
2018-07-27 23:38:20 +08:00
He Yin Ling
2d60e24056 ci: temp disable http client tests:
connection is not stable. need to replace with local test servers.
2018-07-27 19:45:12 +08:00
He Yin Ling
85bc2d5967 tiny-test-fw: support ignore test cases in CI assign test stage 2018-07-27 19:44:15 +08:00
He Yin Ling
316d087960 tiny-test-fw: fix exception during print debug info:
DUT log is unicode, might not be able to encode
2018-07-27 19:44:15 +08:00
He Yin Ling
bffcea09df CI: erase nvs partition before test:
Latest NVS partition bin can't be parsed by old IDF revision. Need to erase before test.
2018-07-27 17:22:24 +08:00
Angus Gratton
e5f4ae63f1 ci: Simplify github deployment
CI_COMMIT_REF_NAME lets us use a single line to git push
2018-07-27 12:18:28 +10:00
Jiang Jiang Jian
1ad4ec10b2 Merge branch 'bugfix/add_compatible_to_aes_encryption' into 'master'
Wifi: add compatible to ccmp encryption

See merge request idf/esp-idf!2802
2018-07-27 10:14:33 +08:00
Angus Gratton
ee13dafde2 Merge branch 'doc/esp32_sw_breaks' into 'master'
docs: Adds ESP32 SW flash breakpoints description

See merge request idf/esp-idf!2838
2018-07-27 07:54:33 +08:00
Alexey Gerenkov
821fe3dc5a esp32: Adds SW flash breakpoints description 2018-07-26 13:56:45 +03:00
wangmengyang
a23f857452 component/bt: bugfix on the crash during end of sco link resulted from link supervision timeout 2018-07-26 14:41:25 +08:00
Jiang Jiang Jian
8d5ec413d5 Merge branch 'bugfix/tw23404_dhcp_NAK_issue_3' into 'master'
modify the timers

See merge request idf/esp-idf!2798
2018-07-26 14:06:12 +08:00
Angus Gratton
cf593e84d3 Merge branch 'bugfix/spiffs_readdir_recursion' into 'master'
SPIFFS: fix stack overflow in readdir_r due to recursion

See merge request idf/esp-idf!2839
2018-07-26 08:33:24 +08:00
Jiang Jiang Jian
b3dd6ff9fc Merge branch 'bugfix/btdm_controller_deinit' into 'master'
bt : fix bug that bluetooth controller init/disable/enable/disable may cause exception

See merge request idf/esp-idf!2800
2018-07-25 21:00:35 +08:00
Konstantin Kondrashov
de2b1cb02a make: Add feature to cmd 'make flash' - reset ota_data partition
Add a command `make erase_ota` - erases otadata if it there is in the
partition table otherwise error 'Partition table does not have ota_data partition'.

Closes https://github.com/espressif/esp-idf/issues/1821
2018-07-25 11:22:15 +00:00
Ivan Grokhotkov
a1709a6682 Merge branch 'bugfix/heap_test_alloc_iram' into 'master'
heap/tests: make IRAM allocation size divisible by 4

See merge request idf/esp-idf!2853
2018-07-25 16:20:16 +08:00
Ivan Grokhotkov
9a2583122c heap/tests: make IRAM allocation size divisible by 4
heap_caps_malloc will fail to poison a block in IRAM with size not
divisible by 4. The proper fix will be to make poisoning code
smarter, or to disallow allocations from IRAM with size not aligned
by 4.
2018-07-25 09:45:39 +03:00
Angus Gratton
4f2fe93bc1 Merge branch 'feature/idf-fs-profile-modifications' into 'master'
IDF fs profiling tool modifications

See merge request idf/esp-idf!2705
2018-07-25 08:56:04 +08:00
Angus Gratton
21f327060b Merge branch 'bugfix/host_tools_warnings' into 'master'
Fix host tools warnings

See merge request idf/esp-idf!2729
2018-07-25 08:55:29 +08:00
Ivan Grokhotkov
caeab09f65 Merge branch 'bugfix/src_encoding' into 'master'
Correct source code encoding

See merge request idf/esp-idf!2820
2018-07-24 22:03:46 +08:00
Ivan Grokhotkov
d50c03cc7d Merge branch 'bugfix/unit-test-build-fix' into 'master'
unit-test-app: don’t include project.mk for ut- targets

See merge request idf/esp-idf!2619
2018-07-24 20:48:12 +08:00
Ivan Grokhotkov
f3260cc30f test/uart: fix compilation warning 2018-07-24 09:56:40 +03:00
Ivan Grokhotkov
a981e73e22 heap: move get_all_caps to IRAM, used in unit test 2018-07-24 09:56:40 +03:00
Ivan Grokhotkov
964087b7c8 freertos: bump limit for spinlock performance test to 300 cycles 2018-07-24 09:56:40 +03:00
Ivan Grokhotkov
81ce7e4afa newlib: fix unit test for psram config 2018-07-24 09:56:40 +03:00
Ivan Grokhotkov
7a154d6a4e heap: fix unit test for the case when less than 10k of IRAM is available 2018-07-24 09:56:40 +03:00
Ivan Grokhotkov
253930acd1 spi_master, ulp: fix aliasing errors in unit tests 2018-07-24 09:54:55 +03:00
Ivan Grokhotkov
b0af8ad22f unit-test-app: don’t include project.mk for ut- targets
If project.mk is included twice in recursive invocation of Make, some
variables defined on the first pass will not be redefined on the
second pass. Rather than cleaning up these variables before calling
Make recursively, don’t include IDF project.mk at all, if one of the
ut- targets is requested.
2018-07-24 09:54:55 +03:00
Angus Gratton
28787ad392 Merge branch 'bugfix/bootloader_dev_zero_app_count' into 'master'
bootloader: Fix issue - bs->app_count is zero but ota_data have valid entry

See merge request idf/esp-idf!2842
2018-07-24 14:41:05 +08:00
Renz Bagaporo
8ce14d0406 console: Suppress unused warning asprintf result 2018-07-24 06:08:48 +00:00
Renz Bagaporo
4355eb1bc2 console: Ignore var cloberred warning for argtable 2018-07-24 06:08:48 +00:00
Renz Bagaporo
d31b31787c spiffs: Explicitly indicate unused value 2018-07-24 06:08:48 +00:00
Angus Gratton
beb3611ca3 Merge branch 'bugfix/fix_pcnt_isr_service_register_bug' into 'master'
driver(pcnt): fix the  pcnt isr service can not be re registered bug.

See merge request idf/esp-idf!2439
2018-07-24 13:49:45 +08:00
Angus Gratton
002bf37f14 Merge branch 'bugfix/unit_test_thread_local_storage' into 'master'
ci/esp32: Fix race in "TLS Test" where s_task can go out of scope before cleanup finishes

See merge request idf/esp-idf!2794
2018-07-24 13:43:41 +08:00
Konstantin Kondrashov
8c808c2d9a bootloader: Fix issue - bs->app_count is zero but ota_data have valid entry
If we have the partition table without any ota_apps but in ota_data have
valide entry, in this case we get an error(hang). This commit fix this
case. If bs->app_count is zero when selecting the factory app.

Closes https://github.com/espressif/esp-idf/issues/2218
2018-07-24 13:09:32 +08:00
Angus Gratton
466ec6d9ac Merge branch 'bugfix/ci_use_mirror_for_public' into 'master'
ci: Use local mirrors on the public branches too

See merge request idf/esp-idf!2836
2018-07-24 12:19:24 +08:00
Angus Gratton
c3069b97f9 Merge branch 'bugfix/udp_multicast_example_leak' into 'master'
udp multicast example: Fix leak, change default port (and log UDP port in use)

See merge request idf/esp-idf!2834
2018-07-24 12:12:53 +08:00
kooho
01516abe5a Add some comments in pcnt.h. 2018-07-24 10:33:58 +08:00
Ivan Grokhotkov
baa4613fc1 Merge branch 'bugfix/fix_touchpad_wakeup_status' into 'master'
fix(sleep): swap touchpad num in wakeup status

See merge request idf/esp-idf!2708
2018-07-24 04:08:43 +08:00
krzychb
c7ab37143b Logo version 8, vector graphics and a new typeface 2018-07-23 19:18:50 +02:00
Ivan Grokhotkov
15b22e5aa5 spiffs: add test case for readdir_r with large number of files
Ref. https://esp32.com/viewtopic.php?f=13&t=6486
2018-07-23 15:34:18 +03:00
Angus Gratton
0905aa0103 Merge branch 'bugfix/bootloader_include_priv' into 'master'
bootloader_support: Rename include_priv directory to include_bootloader

See merge request idf/esp-idf!2686
2018-07-23 18:50:35 +08:00
Angus Gratton
b5db59ec31 Merge branch 'bugfix/http_client_enhanced' into 'master'
esp_http_client: Resolve some bugs from the github community

See merge request idf/esp-idf!2831
2018-07-23 17:55:49 +08:00
Anton Maklakov
d5f666dee3 ci: Use local mirrors on the public branches (master, release-) too
Use DONT_USE_MIRROR=1 to force using the original repositories if you need
2018-07-23 17:04:38 +08:00
Angus Gratton
bf665ae62e udp_multicast example: Change port to 3333 to match README, log port from example 2018-07-23 18:25:33 +10:00
Angus Gratton
5fb665dbaf udp_multicast example: Fix memory leak from getaddrinfo() calls
Closes https://github.com/espressif/esp-idf/issues/2201
2018-07-23 18:25:33 +10:00
Angus Gratton
fbec7de7f8 bootloader_support: Rename include_priv directory to include_bootloader
Old rationale for "priv" no longer applies.

As reported here: https://esp32.com/viewtopic.php?f=13&t=6155&p=27151#p26601
2018-07-23 15:58:27 +10:00
David Cermak
409c91bcb9 removed possible uint16 access to 32bit register, noted fifo use not recommended 2018-07-23 07:57:18 +02:00
Renz Bagaporo
70e68c99d3 Modifications for fs profiling tool 2018-07-23 05:24:33 +00:00
Tuan PM
6ef558320a esp_http_client: Resolve some bugs from the github community
- Closes https://github.com/espressif/esp-idf/issues/2135
- Closes https://github.com/espressif/esp-idf/issues/2208
- Closes https://github.com/espressif/esp-idf/issues/2213
2018-07-23 12:22:19 +07:00
Angus Gratton
5f2f84c220 Merge branch 'feature/http_server_finalize' into 'master'
Feature add HTTP Web Server component

See merge request idf/esp-idf!2606
2018-07-23 13:11:04 +08:00
Angus Gratton
57342c449d Merge branch 'feature/tools_mass_mfg' into 'master'
Add files for mass manufacturing tool

See merge request idf/esp-idf!2716
2018-07-23 13:10:17 +08:00
Angus Gratton
cf614120a5 Merge branch 'bugfix/reclaim_bt_ble_bss' into 'master'
components/bt: Reclaim BT/BTDM BSS in bluetooth memory release function

See merge request idf/esp-idf!2750
2018-07-23 12:48:13 +08:00
Angus Gratton
e75a1129e0 Merge branch 'bugfix/bootloader_noreturn_always' into 'master'
bootloader: Ensure bootloader never returns to caller

See merge request idf/esp-idf!2815
2018-07-23 11:56:14 +08:00
Angus Gratton
b6a7458e14 esp32 tests: TLS test: use same size stack for static & non-static task
Use constant instead of magic number of task priorities.
2018-07-23 03:54:44 +00:00
Angus Gratton
7313f3f925 esp32: Fix race in "TLS Test" where s_task can go out of scope before cleanup finishes
Probable cause for CI failures of "LoadStoreError" after this task finishes running.
2018-07-23 03:54:44 +00:00
Angus Gratton
ae24c13da2 Merge branch 'bugfix/secure_boot_padding' into 'master'
secure boot: Fix padding issue allowing unverified data to be mapped into the address space

See merge request idf/esp-idf!2778
2018-07-23 11:44:50 +08:00
Anton Maklakov
ea1a99bcb9 Merge branch 'cermak_fuzzer_ci_job' into 'master'
added CI job for AFL fuzzer tests

See merge request idf/esp-idf!2537
2018-07-23 09:41:10 +08:00
krzychb
992ead0671 Logo version 7 - gray logo background, improved contrast, simplified css overrides 2018-07-21 20:06:27 +02:00
Deng Xin
faede72435 Wifi: add compatible to ccmp encryption 2018-07-21 14:37:27 +08:00
Jiang Jiang Jian
8892174383 Merge branch 'bugfix/coex_pause' into 'master'
fix coex pause cause bluetooth performance decrease

See merge request idf/esp-idf!2741
2018-07-21 14:22:09 +08:00
Konstantin Klitenik
3486b51388 Fix stackoverflow due to recursion in vfs_spiffs_readdir_r 2018-07-20 10:27:53 -04:00
Ivan Grokhotkov
999c3dbf0e Merge branch 'feature/test_exclude_components' into 'master'
build: Add TEST_EXCLUDE_COMPONENTS

See merge request idf/esp-idf!2648
2018-07-20 19:43:46 +08:00
Ivan Grokhotkov
0e3694b542 Merge branch 'feature/freertos_vtasklist_xcoreid' into 'master'
freertos: Add option to display xCoreID in vTaskList

See merge request idf/esp-idf!2728
2018-07-20 18:46:41 +08:00
Anurg Kar
656bef7bb7 Http Server : Add a simple light weight HTTP Server Component.
Also add examples, docs and test apps for the HTTP Server.
2018-07-20 15:49:17 +05:30
David Cermak
0c147648f7 added CI job for AFL fuzzer tests 2018-07-20 10:28:12 +02:00
Tian Hao
6e4342a877 bt : fix bug that bluetooth controller init/disable/enable/disable may cause exception
1. when one task do deinit/init/disable/enable, especially different cpu
core, it may cause controller crash in ISR handler
2. fix while BLE is scanning, bluetooth controller is disabled cause BLE
scan is not abort.
2018-07-20 14:10:55 +08:00
Hrishikesh Dhayagude
f610249bdd Reclaim BT/BTDM BSS and Data in bluetooth memory release function
1. Modify esp_bt_controller_mem_release() to release BTDM BSS and Data to heap if
ESP_BT_MODE_BTDM mode is passed to it
2. Add a new API esp_bt_mem_release() which internally calls
esp_bt_controller_mem_release() with the provided mode and then if mode
is ESP_BT_MODE_BTDM, releases BT BSS and Data to heap.

Background:
For Wi-Fi and BT/BLE applications, for e.g. the usecase is like when
Bluetooth is used for provisioning and once the device is connected to the Wi-Fi
AP, we can turn off Bluetooth completely. In such scenarios, it should be possible to
reclaim all the memory of Bluetooth. Although, currently this does not
happen.

Experiment:
Made the following modifications to examples/bluetooth/gatt_server :
1. Added support of simple_wifi to it
2. Moved all the bluetooth related code under CONFIG_BT_ENABLED config
option
3. Calculated the free heap in 2 similar scenarios:
   i. Disabled BT (CONFIG_BT_ENABLED undefined) and checked the free
heap after STA connected
   ii. Kept BT enabled and disabled it after STA connected and checked
the free heap
Ideally, the numbers for i., ii. above should have been similar. But
there was a delta of almost 30-31K. (i. > ii.)
4. Through make size-components checked the common BSS for libbta.a and libbtdm_app.a
and found it to be almost 30K. Data is around 1K

Solution:
1. Modified the linker script to mark the BSS and Data for these libraries and
free it when ESP_BT_MODE_BTDM mode is passed to mem release APIs.
2. Verified that the free heap is comparable for i. and ii. above.

Note: It is known that once this is done, Bluetooth can only be used
again post reboot.

Signed-off-by: Hrishikesh Dhayagude <hrishi@espressif.com>
2018-07-20 11:33:26 +05:30
Shivani Tipnis
35205d8513 Add files and docs for mass mfg 2018-07-20 10:41:11 +05:30
Jiang Jiang Jian
e4fb359c34 Merge branch 'bugfix/btdm_bt_remove_device_fail_when_ble_connected' into 'master'
component/bt: Fix bug of remove bond device fail when BLE and BT are connectd at the same time

See merge request idf/esp-idf!2767
2018-07-20 10:46:31 +08:00
Angus Gratton
45275ab189 Merge branch 'feature/nvs_multipage_blob' into 'master'
nvs-flash: Support for blobs larger than half of SPI Flash sector size

See merge request idf/esp-idf!2182
2018-07-20 09:13:34 +08:00
Sagar Bijwe
5a27a63541 nvs-flash: Support for blobs larger than half of SPI Flash sector size
This change removes the earlier limitation of 1984 bytes for storing data-blobs.
Blobs larger than the sector size are split and stored on multiple sectors.
For this purpose, two new datatypes (multi-page index and multi-page data) are
added for entries stored in the sectors. The underlying read, write, erase and find
operations are modified to support these large blobs. The change is transparent
to users of the library and no special APIs need to be used to store these large
blobs.
2018-07-20 00:13:15 +05:30
Roland Dobai
0efb4a11ec Correct source code encoding 2018-07-19 14:00:44 +02:00
Ivan Grokhotkov
fec079cd44 Merge branch 'bugfix/rtc_io_hold_regs' into 'master'
Fix errors in rtc_gpio_desc values

See merge request idf/esp-idf!2765
2018-07-19 15:04:42 +08:00
Ivan Grokhotkov
a8f39a892e Merge branch 'bugfix/ulp_example_fix' into 'master'
ulp example: fix for RTC IOs

See merge request idf/esp-idf!2768
2018-07-19 15:04:20 +08:00
Angus Gratton
f0d74b1c64 bootloader: Ensure bootloader never returns to caller
* Fixes some "noreturn" functions in bootloader utils which did return (causing fatal CPU
  exceptions).
* Marks bootloader entry as "noreturn", preventing "user code done" from stalling boot
  Partial fix for https://github.com/espressif/esp-idf/issues/1814 TW20016
  (Comprehensive fix for this issue will be enabling WDT during bootloader, coming shortly.)
2018-07-19 16:24:11 +10:00
Angus Gratton
a7d00f44ab Merge branch 'feature/esp32-pico-kit_v4.1' into 'master'
Added description of ESP32-PICO-KIT V4.1 board

See merge request idf/esp-idf!2762
2018-07-19 08:05:00 +08:00
krzychb
ca15dbd05e Added description of ESP32-PICO-KIT V4.1 board 2018-07-18 20:02:43 +02:00
Wang Jia Lin
de907e8801 Merge branch 'bugfix/rmt_mem_num_maximum_limit_is_not_accurate' into 'master'
bugfix(rmt): Modify the rmt_mem_num maximum limit value from 15 to 8.

See merge request idf/esp-idf!2734
2018-07-18 16:15:14 +08:00
Ivan Grokhotkov
c46b8178f2 Merge branch 'bugfix/sdmmc_auto_stop_cmd' into 'master'
sdmmc: enable host auto_stop only for certain commands

See merge request idf/esp-idf!2710
2018-07-18 14:55:45 +08:00
Ivan Grokhotkov
0b78959070 Merge branch 'bugfix/deep_sleep_flush_uart' into 'master'
sleep: fix flushing UARTs when entering deep sleep

See merge request idf/esp-idf!2698
2018-07-18 14:55:13 +08:00
krzychb
2506a9416e Version 2 of the logo, without a frame an with uniform color 2018-07-18 07:03:00 +02:00
krzychb
2fd5ce3022 Made the logo smaller 2018-07-18 07:03:00 +02:00
krzychb
da86681f21 Added Espressif logo to documentation 2018-07-18 07:03:00 +02:00
kittinson
ae728d66c8 Update theme_overrides.css
Changed colors in css file, in order to make documentation website look like official website.
2018-07-18 07:03:00 +02:00
Jiang Jiang Jian
d62293165b Merge branch 'bugfix/btdm_using_osi_malloc_instead_of_malloc' into 'master'
component/bt: Using osi_malloc instead of malloc

See merge request idf/esp-idf!2748
2018-07-18 11:09:28 +08:00
Angus Gratton
aa4d77467b Merge branch 'bugfix/esp_err_ignore_dirs' into 'master'
esp32: Do not document error codes defined in examples

See merge request idf/esp-idf!2732
2018-07-18 08:29:53 +08:00
Tian Hao
cf14826100 fix coex pause cause bluetooth performance decrease
1. it may cause BLE connection unstable
2. it may cause Classic BT connection unstable
3. it may cause BLE/BREDR scan performance decrease
2018-07-17 21:06:57 +08:00
Jiang Jiang Jian
94a599fb64 Merge branch 'bugfix/btdm_some_misspell' into 'master'
component/bt: Fix some misspell

See merge request idf/esp-idf!2783
2018-07-17 20:48:03 +08:00
Jiang Jiang Jian
603ce05376 Merge branch 'bugfix/ampdu_duplicate' into 'master'
wifi: fix ampdu duplicate issue

See merge request idf/esp-idf!2742
2018-07-17 20:45:45 +08:00
fuzhibo
54a67d92a4 fix(sleep): swap touchpad num in wakeup status 2018-07-17 20:25:06 +08:00
Ivan Grokhotkov
5376a06d7b Merge branch 'bugfix/range_CONFIG_ESP32_RTC_CLK_CAL_CYCLES' into 'master'
soc/clk: Fix range CONFIG_ESP32_RTC_CLK_CAL_CYCLES

See merge request idf/esp-idf!2719
2018-07-17 19:43:11 +08:00
Ivan Grokhotkov
cffaa9f5b5 freertos: add configTASKLIST_INCLUDE_COREID 2018-07-17 10:57:26 +00:00
Dave McNaughton
0fb1945482 Added: display xCoreID in vTaskList
Merges https://github.com/espressif/esp-idf/pull/2064
2018-07-17 10:57:26 +00:00
Ivan Grokhotkov
ea452920bb Merge branch 'bugfix/time_ut_wakeup_from_deep_sleep' into 'master'
esp32/test: Reduces a unit test execution time

See merge request idf/esp-idf!2776
2018-07-17 18:39:15 +08:00
zhangyanjiao
d90f8c06c2 changes for timers 2018-07-17 16:46:53 +08:00
Wang Jia Lin
5480a6b6e5 Merge branch 'bugfix/clear_intr_status_when_enable_intr' into 'master'
driver(gpio): fix the gpio interrupt false triggering issue

See merge request idf/esp-idf!2498
2018-07-17 15:44:00 +08:00
Wang Jia Lin
e7135c53b5 Merge branch 'bugfix/fix_uart_timeout_bug_when_enable_reftick' into 'master'
driver(uart):  Fix uart time_out bug when using ref_tick

See merge request idf/esp-idf!2775
2018-07-17 15:43:47 +08:00
XiaXiaotian
85ad8cfcfc docs: update channel state information document
1. Move channel to the first row of the table.

    2. Remove the condition of HT20/HT40 for they are determined by
    secondary channel.

    3. Clean up the CSI table.
2018-07-17 14:50:30 +08:00
Angus Gratton
5cbc4e976b app_update: Don't double-verify secure boot signature during OTA
esp_image_load() already verifies the signature
2018-07-17 15:33:47 +10:00
Angus Gratton
57b601ab7f secure boot: Pad to avoid data after the signature mapping into the address space
Because address space is mapped in 64KB pages, it was possible for unauthenticated data after the
app .bin to become mapped into the flash cache address space.

This problem is solved by 2 changes:

* "esptool elf2image --secure-pad" will pad the image so that the signature block ends close to the
  64KB boundary. Due to alignment constraints it will be 12 bytes too short after signing (but
  with flash encryption, these 12 bytes are still encrypted as part of the last block and can't be
  arbitrarily changed).
* By default, secure boot now requires all app partitions to be a multiple of 64KB in size.
2018-07-17 15:33:47 +10:00
baohongde
cf061a01b7 component/bt: Fix some misspell
Using CONFIG_BT_SSP_ENABLE instead if BT_SPP_INCLUDED
2018-07-16 20:56:45 +08:00
XiongYu
6d57757840 Modify the rmt_mem_num maximum limit value from 15 to 8. 2018-07-16 19:10:42 +08:00
Konstantin Kondrashov
4df7145564 esp32/test: Reduces a unit test execution time 2018-07-16 14:14:40 +05:00
chenyudong
936b8e1967 wifi: fix ampdu duplicate issue
fix ampdu duplicate issue
2018-07-16 17:10:58 +08:00
Jiang Jiang Jian
70f3933db1 Merge branch 'bugfix/tw23835_add_source_ip_route_for_unicast' into 'master'
lwip: add source ip based route for unicast packet

See merge request idf/esp-idf!2757
2018-07-16 17:01:16 +08:00
hou wen xiang
e2b9b70800 driver(uart): Fix uart time_out bug when using ref_tick 2018-07-16 16:56:14 +08:00
Angus Gratton
e5d2406b1d Merge branch 'bugfix/spi_cs_setup_fulldup' into 'master'
fix(spi_master): allow to use cs_ena_pretrans in full duplex mode without…

See merge request idf/esp-idf!2576
2018-07-16 16:30:36 +08:00
Angus Gratton
fe1ffb3d1c Merge branch 'bugfix/mdns_remove' into 'master'
mdns: Minor fix for mdns_service_remove()

See merge request idf/esp-idf!2760
2018-07-16 16:29:20 +08:00
Angus Gratton
f2f925de78 Merge branch 'bugfix/sh2lib_send_bug' into 'master'
sh2lib: Fix a bug in send

See merge request idf/esp-idf!2656
2018-07-16 16:29:03 +08:00
Angus Gratton
e90a920ea8 Merge branch 'bugfix/add_queueset_critical_sections' into 'master'
freertos: Add critical sections to queue sets.

See merge request idf/esp-idf!2761
2018-07-16 15:57:35 +08:00
baohongde
11ca056320 component/bt: Fix bug of remove bond device fail when BLE and BT are connectd at the same time 2018-07-16 15:46:27 +08:00
Jiang Jiang Jian
7f382f461c Merge branch 'feature/support_for_XM25QU64A' into 'master'
feature(flash): set QIO mode for XM25QU64A(1V8_64M_flash)

See merge request idf/esp-idf!2753
2018-07-16 12:16:13 +08:00
Jiang Jiang Jian
8809fabcd5 Merge branch 'bugfix/ledc_duty_and_freq' into 'master'
bugfix(ledc): fix bugs reported from unit-test and github.

See merge request idf/esp-idf!2735
2018-07-16 12:12:48 +08:00
Angus Gratton
68e01045f1 Merge branch 'bugfix/secure_boot_regression_partitions' into 'master'
Fix secure boot & flash encryption regression, don't verify partitions as part of secure boot

See merge request idf/esp-idf!2764
2018-07-16 12:07:56 +08:00
Jiang Jiang Jian
3b19269fcb Merge branch 'feature/wifi_check_wifi_lib_git_commit_id' into 'master'
check WiFi library git commit id in unit test

See merge request idf/esp-idf!2621
2018-07-16 11:45:59 +08:00
Angus Gratton
cee6d7d5a9 docs: Add more ReST-isms in secure boot & flash encryption docs
(Original version of these docs were in Markdown.)
2018-07-16 11:52:52 +10:00
Angus Gratton
6a498bfe2b docs: Add note about bootloader size for flash encryption & secure boot 2018-07-16 11:52:52 +10:00
Angus Gratton
2ae758ebcb Merge branch 'bugfix/spi_sdio_sdkconfig_include' into 'master'
sdio_example/spi: fix sdkconfig include issue

See merge request idf/esp-idf!2756
2018-07-16 08:00:15 +08:00
Jiang Jiang Jian
394eabdeec Merge branch 'docs/btdm_refactor_ble_spp_readme' into 'master'
component/bt_refactor_ble_spp_readme

See merge request idf/esp-idf!2717
2018-07-15 15:38:40 +08:00
Jiang Jiang Jian
a22d6607f8 Merge branch 'bugfix/autoip_compilation' into 'master'
LWIP AutoIP Compilation Fixed by defining IP_IS_V4_VAL()

See merge request idf/esp-idf!2758
2018-07-15 15:19:11 +08:00
Hou Wen Xiang
733f73067c Update README.md 2018-07-15 12:56:23 +08:00
Hou Wen Xiang
fe238af249 Update README.md 2018-07-15 12:52:55 +08:00
He Yin Ling
be81d2c16d Merge branch 'test/print_debug_info_when_test_failed' into 'master'
tiny-test-fw: print debug info when test failed

See merge request idf/esp-idf!2564
2018-07-13 21:22:29 +08:00
Jiang Jiang Jian
6554bdcbb6 Merge branch 'bugfix/btdm_add_profile_descriptor_list_for_spp' into 'master'
component/bt: Add profile descriptor list for SPP

See merge request idf/esp-idf!2691
2018-07-13 19:20:03 +08:00
Jiang Jiang Jian
8571170abe Merge branch 'feature/btdm_bt_ssp' into 'master'
component/bt: Add Secure Simple Pairing

See merge request idf/esp-idf!2453
2018-07-13 19:19:53 +08:00
Ivan Grokhotkov
4b97a1edb2 ulp example: fix for RTC IOs
- call rtc_gpio_init for pins which aren't configured as RTC by default
- for RTC IOs 16 and 17, read higher part of the input register
- automatically convert GPIO number into RTC IO number
- use ulp_set_wakeup_period instead of writing to register
2018-07-13 17:48:15 +08:00
Piyush Shah
fd8a7666c8 LWIP AutoIP Compilation Fixed by defining IP_IS_V4_VAL() 2018-07-13 15:04:39 +05:30
He Yin Ling
f348076920 esp32/test: set 60s timeout for one deep sleep case 2018-07-13 07:04:05 +00:00
He Yin Ling
4f971619fa tiny-test-fw: save DUT log in different thread:
We found some SD card on Raspberry Pi could have very bad performance.
It could take seconds to save small amount of data.
If the DUT receives data and save it as log, then it stops receiving data until log is saved.
This could lead to expect timeout. As an workaround to this issue,
``BaseDUT`` class will create a thread to save logs.
Then data will be passed to ``expect`` as soon as received.
2018-07-13 07:04:05 +00:00
He Yin Ling
b452cea04e tiny-test-fw: fix incorrect wait timeout in expect 2018-07-13 07:04:05 +00:00
He Yin Ling
5f26b36f0f tiny-test-fw: filter examples with test level 2018-07-13 07:04:05 +00:00
He Yin Ling
23d98aa358 tiny-test-fw: print expect failure when test fails 2018-07-13 07:04:05 +00:00
Ivan Grokhotkov
b354770f42 Merge branch 'bugfix/fixes_from_github' into 'master'
Fixes from Github

See merge request idf/esp-idf!2730
2018-07-13 15:03:50 +08:00
Angus Gratton
8b5a2ccb8d docs: Update Flash Encryption docs to clarify reflashing options 2018-07-13 16:18:07 +10:00
negativekelvin
8a9e3875ed Fix errors in rtc_gpio_desc values 2018-07-12 23:16:15 -07:00
Darian Leung
21ccecc802 freertos: Add critical sections to queue sets.
Queue sets are not SMP safe. This commit adds
critical sections to queue sets. Unit tests for
queue sets have also been added.
2018-07-13 13:58:54 +08:00
Angus Gratton
6fd6e024fc bootloader: Fix warning building reflashable Secure Boot image 2018-07-13 15:45:15 +10:00
Angus Gratton
fb439e48f5 bootloader: Don't verify Partition Table as part of Secure Boot
Partition Tables are still signed for backwards compatibility, but signature is no longer checked as
part of bootloader.

Closes https://github.com/espressif/esp-idf/issues/1641
2018-07-13 15:45:15 +10:00
Angus Gratton
7b9009ca5c bootloader: Fix secure boot & flash encryption functionality
Fixes regression in 3e0ac4db79.
2018-07-13 15:26:18 +10:00
Liu Zhi Fu
2e1427a239 lwip: add source ip based route for unicast packet
Add source IP based route for unicast packets forwarding.
2018-07-13 12:35:17 +08:00
Ivan Grokhotkov
46639bab85 Merge branch 'bugfix/crlf_auto_conversion' into 'master'
Convert CRLF (Windows line endings) to LF (Unix style), add CI check

See merge request idf/esp-idf!2119
2018-07-13 11:44:57 +08:00
Ivan Grokhotkov
6d46eed8e4 sdmmc: enable host auto_stop only for certain commands
Perviously host send_auto_stop flag would be set for every data
transfer over 1 block long. This caused stop commands to be sent
after CMD53, which shouldn't be done. Fix by adding an explicit list
of commands for which send_auto_stop should be set.
2018-07-13 03:28:10 +00:00
Angus Gratton
ffaf08e851 Merge branch 'fix/bootloader_typedef_enum' into 'master'
bootloader: fix missing typedef on enum defintion

See merge request idf/esp-idf!2718
2018-07-13 08:24:28 +08:00
Piyush Shah
5c7eb7e27b mdns: Minor fix for mdns_service_remove()
Send the Goodbye packet while removing an mDNS service as an "Authoritative" packet so
that the listeners remove the service from their records immediately.
2018-07-12 19:18:54 +05:30
hou wen xiang
5402ace528 driver(gpio) : Fixed the gpio related bug for release v3.1. 2018-07-12 20:19:02 +08:00
He Yin Ling
01efe9a300 Merge branch 'feature/ci_support_test_one_case_multiple_times' into 'master'
CI: support test one case multiple times by @bot

See merge request idf/esp-idf!2692
2018-07-12 19:57:21 +08:00
He Yin Ling
05d74d532e Merge branch 'bugfix/tiny_test_fw_filter_invalid_serial_port' into 'master'
tiny-test-fw: filter out invalid IDF ports

See merge request idf/esp-idf!2745
2018-07-12 19:56:48 +08:00
Roland Dobai
bb4c8b725c Tools: Correct line endings in idf_monitor tests 2018-07-12 19:10:37 +08:00
Angus Gratton
a67d5d89e0 Replace all DOS line endings with Unix
Command run was:
git ls-tree -r HEAD --name-only | xargs dos2unix
2018-07-12 19:10:37 +08:00
Angus Gratton
74245d27d3 ci: Add line endings check for CRLF in repository 2018-07-12 19:10:37 +08:00
XiaXiaotian
32bc9f94c0 check WiFi library git commit id in unit test 2018-07-12 17:53:21 +08:00
weyoui
24e7286693 bootloader: fix missing typedef on enum defintion
(MINOR CHANGES)
Closes https://github.com/espressif/esp-idf/pull/2140
2018-07-12 17:43:59 +08:00
Jiang Jiang Jian
dc092366bb Merge branch 'bugfix/beacon_info_do_not_update_after_user_scan' into 'master'
Wifi: bugfix of beacon info don't update after user scan

See merge request idf/esp-idf!2749
2018-07-12 17:24:54 +08:00
Ivan Grokhotkov
b0c049a6c8 Merge branch 'bugfix/fix_esp_pthread_h_compatible_with_cpp' into 'master'
pthread: fix esp_pthread.h to compatible with c++

See merge request idf/esp-idf!2739
2018-07-12 16:54:18 +08:00
Michael (XIAO Xufeng)
95dbfbe4c0 sdio_example/spi: fix sdkconfig include issue
(MINOR CHANGES)
2018-07-12 15:59:16 +08:00
xiewenxiang
91052cd333 component/bt_refactor_ble_spp_readme 2018-07-12 09:09:01 +08:00
Angus Gratton
04caff2fb2 Merge branch 'fix/sdio_speed_4bit' into 'master'
fix(sdio): update sdio to better run in 4bit HS mode

See merge request idf/esp-idf!2704
2018-07-12 08:54:03 +08:00
Angus Gratton
cfb3759635 Merge branch 'bugfix/rtc_isr_deregister_memory_leak' into 'master'
bugfix/memory leak in rtc_isr_deregister

See merge request idf/esp-idf!2754
2018-07-12 08:25:56 +08:00
chenjianqiang
542373b6ef feature(flash): support for QIO mode of XM25QU64A 2018-07-11 22:28:01 +08:00
Darian Leung
882b50dd8c driver: Fix memory leak in rtc_isr_deregister()
Closes #2179
2018-07-11 21:34:09 +08:00
Deng Xin
6e42a2b4b9 Wifi: bugfix of beacon info don't update after user scan 2018-07-11 20:02:33 +08:00
Jiang Jiang Jian
1b1477d16a Merge branch 'bugfix/btdm_err_data_report' into 'master'
component/bt: bugfix for erroneous data reporting always enabled

See merge request idf/esp-idf!2709
2018-07-11 20:00:46 +08:00
baohongde
47a164b3ac component/bt: Using osi_malloc instead of malloc 2018-07-11 11:15:41 +00:00
baohongde
d7c4ec5235 component/bt: Add profile descriptor list for SPP 2018-07-11 11:14:41 +00:00
Ivan Grokhotkov
7937d083e6 Merge branch 'bugfix/wifi_sync_header_file_with_wifi_lib' into 'master'
esp32: synchronize header file with that in wifi library

See merge request idf/esp-idf!2747
2018-07-11 19:13:17 +08:00
morris
5c6e1e6e67 pthread: fix esp_pthread.h to compatible with c++
esp_pthread.h is missing the necessary extern "C"{ ... } wrapper to be compatible with C++. The result is link errors when you call its functions from C++ code, because the compiler generates mangled names.

Closes https://github.com/espressif/esp-idf/issues/2121
Closes https://github.com/espressif/esp-idf/issues/2172
2018-07-11 14:21:09 +08:00
Angus Gratton
b6156105d4 Merge branch 'feature/test_idf_monitor' into 'master'
Test the IDF Monitor through sockets

See merge request idf/esp-idf!2556
2018-07-11 13:39:58 +08:00
Angus Gratton
064261cd3a Merge branch 'bugfix/adc_two_point_cal_val_update' into 'master'
Updated information in  documentation about  'Two Point Values' used to calibrate ADC readings

See merge request idf/esp-idf!2678
2018-07-11 12:53:33 +08:00
XiaXiaotian
c96d80f789 esp32: synchronize header file with that in wifi library 2018-07-11 12:11:06 +08:00
He Yin Ling
15858895a4 CI: support test one case multiple times by @bot 2018-07-11 10:22:13 +08:00
He Yin Ling
5edc9f9752 tiny-test-fw: filter out invalid IDF ports 2018-07-11 00:00:40 +08:00
Konstantin Kondrashov
bec14ad8ee build: Add TEST_EXCLUDE_COMPONENTS
To exclude during the build process of unit tests some components.
2018-07-10 13:44:41 +05:00
Konstantin Kondrashov
ac3508615a soc/clk: Fix range CONFIG_ESP32_RTC_CLK_CAL_CYCLES
Fixed the error division on zero.
Also fixed range CONFIG_ESP32_RTC_CLK_CAL_CYCLES in Kconfig.
Fixed a overflow error by TIMG in the function rtc_clk_cal_internal. This error was due to a limit in values TIMG_RTC_CALI_MAX=0x7FFF (to write the slowclk_cycles) and TIMG_RTC_CALI_VALUE=0x1FFFFFF (to read xtal_cycles). Added assert finctions.

Closes https://github.com/espressif/esp-idf/issues/2147
2018-07-10 11:56:12 +05:00
Wangjialin
6e9c59bfc3 feature(psram): add support for 64MBit psram of 1.8v and 3.3v.
1. Add reading psram EID.
2. Configure different clock mode for different EID.
3. add API to get psram size and voltage.
4. Remove unnecessary VSPI claim.

For 32MBit@1.8V and 64MBit@3.3V psram, there should be 2 extra clock cycles after CS get high level.
For 64MBit@1.8 psram, we can just use standard SPI protocol to drive the psram. We also need to increase the HOLD time for CS in this case.

EID for psram:
32MBit 1.8v: 0x20
64MBit 1.8v: 0x26
64MBit 3.3v: 0x46
2018-07-10 14:24:59 +08:00
Roland Dobai
20f80da723 esp32: Do not document error codes defined in examples 2018-07-10 07:57:54 +02:00
baohongde
21af1d7339 component/bt: Add Secure Simple Pairing 2018-07-10 11:18:52 +08:00
Jiang Jiang Jian
9d830a6f7c Merge branch 'bugfix/tw23667_tcp_pcb_purge_assert' into 'master'
lwip: fix the assertion in tcp_pcb_purge()

See merge request idf/esp-idf!2657
2018-07-10 10:16:47 +08:00
Wangjialin
ab44c6ecc2 bugfix(ledc): fix bugs reported from unit-test and github.
1. In ledc_set_duty_and_update, return if duty updated. Close https://github.com/espressif/esp-idf/issues/2082
2. fix ledc_set_freq function for low speed mode.
2018-07-10 02:22:23 +08:00
Anton Maklakov
27311811e0 Merge branch 'bugfix/gcc8_complation_errors' into 'master'
Warnings and errors detected by GCC8

See merge request idf/esp-idf!2703
2018-07-09 22:55:52 +08:00
Jiang Jiang Jian
3e7a5c4f50 Merge branch 'bugfix/wifi_channel_state_information_data_type' into 'master'
esp32: Change channel state information(CSI) data type from unsigned char to signed char

See merge request idf/esp-idf!2694
2018-07-09 21:28:09 +08:00
Alexey Gerenkov
c2dc09304c gcc8_newlib3: Compilation warnings and errors not specific to newlib v3 2018-07-09 13:22:24 +03:00
Ivan Grokhotkov
82047ff181 Merge branch 'bugfix/smartconfig_ack' into 'master'
smartconfig_ack.c : Fixed the declaration of remote_ip in sc_ack_send_task()

See merge request idf/esp-idf!2689
2018-07-09 16:20:22 +08:00
Chris Morgan
3e1633354a ssl_pm_reload_crt() - Fix verify_mode checking to match openssl documentation https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_verify.html
Merges https://github.com/espressif/esp-idf/pull/2162
2018-07-09 14:41:56 +08:00
Roland Dobai
c1ae49dda1 Test the IDF Monitor through sockets
Creates a socket by socat and sends tests to the idf_monitor through it.
2018-07-09 08:37:40 +02:00
Carney Wu
7ccc28de6c alias 需要添加到 .bashrc 文件中
Merges https://github.com/espressif/esp-idf/pull/2097
2018-07-09 14:36:47 +08:00
Carney Wu
fab55e3266 alias should set in .bashrc
Merges https://github.com/espressif/esp-idf/pull/2097
2018-07-09 14:36:47 +08:00
Le-Andrew
a8da9c1b96 Fixed typos on booleans.
Merges https://github.com/espressif/esp-idf/pull/2067
2018-07-09 14:36:06 +08:00
Avraham Shukron
0cab3cecfd doc/wifi: small fixup
The WiFi station connect sequence diagram does not have any "successful" ending.
It looks like a copy-paste error, because there are two consequent `SYSTEM_EVENT_STA_DISCONNECTED` events firing with nothing happening in between.

I think the original meaning was that the last event should be `SYSTEM_EVENT_STA_CONNECTED` to signify that if all goes well, that is the event that will be fired.

Merges https://github.com/espressif/esp-idf/pull/2065
2018-07-09 14:35:51 +08:00
wangmengyang
1ade9a34d2 component/bt: bugfix for erroneous data reporting always enabled 2018-07-09 13:45:55 +08:00
Jiang Jiang Jian
f22a74b85c Merge branch 'bugfix/btdm_invalid_sco_handle' into 'master'
component/bt: bugfix of invalid SCO handle in HCI number_of_completed_packets event

See merge request idf/esp-idf!2707
2018-07-09 12:10:02 +08:00
Jiang Jiang Jian
6bf435217e Merge branch 'bugfix/disable_lwip_trust_ip_by_default' into 'master'
lwip: disable ETHARP_TRUST_IP_MAC by default

See merge request idf/esp-idf!2652
2018-07-09 10:03:30 +08:00
michael
c34672e7dc fix(sdmmc): disable all pulldowns used by sdmmc host 2018-07-06 18:17:51 +08:00
michael
597eda5f0b fix(sdio_slave): improve sdio slave for high speed and 4 bit mode 2018-07-06 18:17:50 +08:00
michael
823ebba0f0 fix(sdio_slave): fix minor issues like return value of send function, output arg, etc. 2018-07-06 18:17:49 +08:00
Alexey Gerenkov
8fe2a77c46 coredump: Adds support for ROM ELF file to 'espcoredump' script 2018-07-05 22:20:20 +03:00
Alexey Gerenkov
95e26cd461 coredump: Fixes exception stack frame structure indicator
Initializes exception stack frame EXIT field to indicate stack frame format for 'espcoredump'.
2018-07-05 22:20:20 +03:00
Ivan Grokhotkov
d92c1d02e7 Merge branch 'bugfix/bootloader_entry_addr_decoding' into 'master'
bootloader: move iram_seg 1k up to have better looking idf_monitor output

See merge request idf/esp-idf!2699
2018-07-05 16:18:33 +08:00
Ivan Grokhotkov
934df45473 Merge branch 'bugfix/xthal_get_interrupt_volatile' into 'master'
xtensa: make XTHAL_GET_INTERRUPT, XTHAL_GET_CCOUNT volatile

See merge request idf/esp-idf!2681
2018-07-05 16:18:18 +08:00
Liu Zhi Fu
49c236d613 lwip: fix the assertion in tcp_pcb_purge()
Fix the assertion in tcp_pcb_purge().
2018-07-05 14:29:03 +08:00
wangmengyang
0ede362f84 component/bt: bugfix of invalid SCO handle in HCI number_of_completed_packets event 2018-07-05 12:00:41 +08:00
Ivan Grokhotkov
6d46220456 Merge branch 'feature/clock_gettime' into 'master'
newlib: Add function clock_gettime()

See merge request idf/esp-idf!2610
2018-07-04 18:09:04 +08:00
Angus Gratton
c445da47de Merge branch 'feature/CAN_driver' into 'master'
CAN driver, examples, and docs

See merge request idf/esp-idf!2098
2018-07-04 17:33:24 +08:00
Ivan Grokhotkov
6ee3cf67bd Merge branch 'feature/nvs_part_gen_improvements' into 'master'
Feature/nvs part gen improvements

See merge request idf/esp-idf!2555
2018-07-04 17:33:13 +08:00
Darian Leung
1d2727f4c8 CAN Driver
The following commit contains the first version of the ESP32 CAN Driver.

closes #544
2018-07-04 14:01:57 +08:00
Ivan Grokhotkov
5551b3f616 bootloader: move iram_seg 1k up to have better looking idf_monitor output
When 2nd stage bootloader loads the ROM bootloader, it prints a
message similar to "entry 0x40080xxx", which idf_monitor decodes
(using application ELF file) as one of the reset vectors (xxx is <
400h). This moves the iram_seg of bootloader 1k up to prevent overlap
of bootloader .text and application vectors, making the output look
nicer. There is still a chance that the entry point decodes as some
symbol in application ELF file, but at least it won't have
"Exception" in its name.
2018-07-04 12:33:11 +08:00
Ivan Grokhotkov
10c2cddddf sleep: fix flushing UARTs when entering deep sleep
Since 94250e42a0, UART output is suspended when entering sleep mode
(deep or light sleep). This makes sense for light sleep, where sleep
normally takes small amount of time, and flushing the UART would add
a lot of latency. But this breaks existing behaviour for deep sleep,
where UART output was previously sent out before entering sleep mode.

Closes https://github.com/espressif/esp-idf/issues/2145
2018-07-04 12:11:25 +08:00
Xia Xiaotian
eda05b6ce8 esp32: Change channel state information(CSI) data type from unsigned char to signed char 2018-07-04 11:39:14 +08:00
Angus Gratton
a3c43251b4 Merge branch 'feature/fix_rs485_test' into 'master'
driver: fix rs485 test

See merge request idf/esp-idf!2690
2018-07-04 09:13:52 +08:00
Ivan Grokhotkov
9790dafe0e Merge branch 'bugfix/host_io_fseek_args_init' into 'master'
Host file I/O: Fix uninitialized fseek args

See merge request idf/esp-idf!2693
2018-07-04 09:05:23 +08:00
Alexey Gerenkov
13384221a7 host_file_io: Fixes uninitialized 'offset' and 'whence' fseek args 2018-07-03 19:34:13 +03:00
Alex Lisitsyn
9ba0808228 driver: fix rs485 test 2018-07-03 13:26:28 +02:00
Sachin Parekh
e5049021ed smartconfig_ack.c : Fixed the declaration of remote_ip in sc_ack_send_task()
remote_ip was declared to be a pointer to an address that was
overwritten in later stage thus changing the address pointed by remote_ip

esp_smartconfig.h : Fixed a typo. station_config to wifi_config_t

Signed-off-by: Sachin Parekh <sachin.parekh@espressif.com>
2018-07-03 16:28:24 +05:30
Angus Gratton
909eec9c3b Merge branch 'feature/uart_add_rs485_interface_support' into 'master'
driver: add rs485 half duplex interface support to uart driver

See merge request idf/esp-idf!2415
2018-07-03 14:34:33 +08:00
Angus Gratton
52f4ff6220 Merge branch 'feature/spi_little_endien' into 'master'
feature(spi): provide macro to write multi-byte data straightly

See merge request idf/esp-idf!2634
2018-07-03 14:32:41 +08:00
Angus Gratton
91e7a6e7a3 Merge branch 'bugfix/console_performance' into 'master'
idf_monitor: Fix console performance

See merge request idf/esp-idf!2570
2018-07-03 14:04:23 +08:00
Konstantin Kondrashov
e274940a46 newlib: Add some functions from _POSIX_TIMERS
clock_gettime();
clock_settime();
clock_getres();

Closes https://github.com/espressif/esp-idf/issues/1302
2018-07-03 07:28:29 +05:00
Angus Gratton
05a5c58f7a Merge branch 'bugfix/tinytestfw_espport' into 'master'
tiny-test-fw: handle case when ESPPORT is not set

See merge request idf/esp-idf!2684
2018-07-03 09:10:12 +08:00
Ivan Grokhotkov
eb85c4ec15 tiny-test-fw: handle case when ESPPORT is not set
Fix bug introduced in 8a88dd35, where .decode was called on result of
os.getenv, which was None if ESPPORT was not set.
2018-07-02 21:45:27 +08:00
Alex Lisitsyn
a9fca0c775 driver: add rs485 half duplex interface support to uart driver (fix after review)
An existing UART driver does not support RS485 half duplex mode.
This task adds this functionality to ESP_IDF UART driver.
driver/uart.c/h: updated to add support of RS485 half duplex mode
examples/peripherals/uart_echo_rs485/main/rs485_example.c: added test example
components/driver/test/test_uart.c: added test of RS485 half duplex mode
docs/en/api-reference/peripherals/uart.rst: updated documentation
test_uart.c: suppress GCC warnings about discarded const qualifiers
uart.rst: remove sphinx warning - "Duplicate explicit target name"
simple change in uart.h file
update (test_uart.c) after rebase from master
update uart.rst, uart.c, rs485_example.c
Update example description in file Readme.md
update uart.c/h, uart.rst, test_uart.c according to review results
update uart.h (uart_set_rx_timeout() description
test_uart.c remove ignore tag
uart.c/h: fix param errors
test_uart.c: Remove GCC warning supress
uart.rst: fix the notes
rs485_example.c: fix output
uart.c: remove reset using UART_RXFIFO_RST from driver.
readme.md: Update example description

The tests are completed using RS485 adapters hardware connected to two ESP32 WROVER KITs.

TW#13812
Closes https://github.com/espressif/esp-idf/pull/667
Closes https://github.com/espressif/esp-idf/pull/1006
2018-07-02 15:24:58 +02:00
Alex Lisitsyn
a952eb1a92 driver: add rs485 half duplex interface support to uart driver (fix indentation after review)
An existing UART driver does not support RS485 half duplex mode.
This task adds this functionality to ESP_IDF UART driver.
driver/uart.c/h: updated to add support of RS485 half duplex mode
examples/peripherals/uart_echo_rs485/main/rs485_example.c: added test example
components/driver/test/test_uart.c: added test of RS485 half duplex mode
docs/en/api-reference/peripherals/uart.rst: updated documentation
test_uart.c: suppress GCC warnings about discarded const qualifiers
uart.rst: remove sphinx warning - "Duplicate explicit target name"
simple change in uart.h file
update (test_uart.c) after rebase from master
update uart.rst, uart.c, rs485_example.c
Update example description in file Readme.md
update uart.c/h, uart.rst, test_uart.c according to review results
update uart.h (uart_set_rx_timeout() description
test_uart.c remove ignore tag
uart.c/h: fix param errors
test_uart.c: Remove GCC warning supress
uart.rst: fix the notes
rs485_example.c: fix output

The tests are completed using RS485 adapters hardware connected to two ESP32 WROVER KITs.

TW#13812
Closes https://github.com/espressif/esp-idf/pull/667
Closes https://github.com/espressif/esp-idf/pull/1006
2018-07-02 15:24:58 +02:00
Alex Lisitsyn
ef5dc73f6f driver: add rs485 half duplex interface support to uart driver (update after review)
An existing UART driver does not support RS485 half duplex mode.
This task adds this functionality to ESP_IDF UART driver.
driver/uart.c/h: updated to add support of RS485 half duplex mode
examples/peripherals/uart_echo_rs485/main/rs485_example.c: added test example
components/driver/test/test_uart.c: added test of RS485 half duplex mode
docs/en/api-reference/peripherals/uart.rst: updated documentation
test_uart.c: suppress GCC warnings about discarded const qualifiers
uart.rst: remove sphinx warning - "Duplicate explicit target name"
simple change in uart.h file
update (test_uart.c) after rebase from master
update uart.rst, uart.c, rs485_example.c
Update example description in file Readme.md
update uart.c/h, uart.rst, test_uart.c according to review results
update uart.h (uart_set_rx_timeout() description
test_uart.c remove ignore tag
uart.c/h: fix param errors
test_uart.c: Remove GCC warning supress
uart.rst: fix the notes
rs485_example.c: fix output

The tests are completed using RS485 adapters hardware connected to two ESP32 WROVER KITs.

TW#13812
Closes https://github.com/espressif/esp-idf/pull/667
Closes https://github.com/espressif/esp-idf/pull/1006
2018-07-02 15:24:58 +02:00
Alex Lisitsyn
0ec81181b4 driver: add rs485 half duplex interface support to uart driver (add jobs into *.yml file)
An existing UART driver does not support RS485 half duplex mode.
This task adds this functionality to ESP_IDF UART driver.
driver/uart.c/h: updated to add support of RS485 half duplex mode
examples/peripherals/uart_echo_rs485/main/rs485_example.c: added test example
components/driver/test/test_uart.c: added test of RS485 half duplex mode
docs/en/api-reference/peripherals/uart.rst: updated documentation
test_uart.c: suppress GCC warnings about discarded const qualifiers
uart.rst: remove sphinx warning - "Duplicate explicit target name"
simple change in uart.h file
update (test_uart.c) after rebase from master
update uart.rst, uart.c, rs485_example.c
Update example description in file Readme.md
update uart.c/h, uart.rst, test_uart.c according to review results
update uart.h (uart_set_rx_timeout() description
test_uart.c remove ignore tag

The tests are completed using RS485 adapters hardware connected to two ESP32 WROVER KITs.

TW#13812
Closes https://github.com/espressif/esp-idf/pull/667
Closes https://github.com/espressif/esp-idf/pull/1006
2018-07-02 15:24:58 +02:00
Alex Lisitsyn
d096b3abb8 driver: add rs485 half duplex interface support to uart driver (remove ignore tag to check ut case)
An existing UART driver does not support RS485 half duplex mode.
This task adds this functionality to ESP_IDF UART driver.
driver/uart.c/h: updated to add support of RS485 half duplex mode
examples/peripherals/uart_echo_rs485/main/rs485_example.c: added test example
components/driver/test/test_uart.c: added test of RS485 half duplex mode
docs/en/api-reference/peripherals/uart.rst: updated documentation
test_uart.c: suppress GCC warnings about discarded const qualifiers
uart.rst: remove sphinx warning - "Duplicate explicit target name"
simple change in uart.h file
update (test_uart.c) after rebase from master
update uart.rst, uart.c, rs485_example.c
Update example description in file Readme.md
update uart.c/h, uart.rst, test_uart.c according to review results
update uart.h (uart_set_rx_timeout() description
test_uart.c remove ignore tag

The tests are completed using RS485 adapters hardware connected to two ESP32 WROVER KITs.

TW#13812
Closes https://github.com/espressif/esp-idf/pull/667
Closes https://github.com/espressif/esp-idf/pull/1006
2018-07-02 15:24:58 +02:00
Alex Lisitsyn
b76693fe20 driver: add rs485 half duplex interface support to uart driver (update after review)
An existing UART driver does not support RS485 half duplex mode.
This task adds this functionality to ESP_IDF UART driver.
driver/uart.c/h: updated to add support of RS485 half duplex mode
examples/peripherals/uart_echo_rs485/main/rs485_example.c: added test example
components/driver/test/test_uart.c: added test of RS485 half duplex mode
docs/en/api-reference/peripherals/uart.rst: updated documentation
test_uart.c: suppress GCC warnings about discarded const qualifiers
uart.rst: remove sphinx warning - "Duplicate explicit target name"
simple change in uart.h file
update (test_uart.c) after rebase from master
update uart.rst, uart.c, rs485_example.c
Update example description in file Readme.md
update uart.c/h, uart.rst, test_uart.c according to review results
update uart.h (uart_set_rx_timeout() description

The tests are completed using RS485 adapters hardware connected to two ESP32 WROVER KITs.

TW#13812
Closes https://github.com/espressif/esp-idf/pull/667
Closes https://github.com/espressif/esp-idf/pull/1006
2018-07-02 15:24:58 +02:00
Alex Lisitsyn
51e9cf6848 driver: add rs485 half duplex interface support to uart driver (update after review)
An existing UART driver does not support RS485 half duplex mode.
This task adds this functionality to ESP_IDF UART driver.
driver/uart.c/h: updated to add support of RS485 half duplex mode
examples/peripherals/uart_echo_rs485/main/rs485_example.c: added test example
components/driver/test/test_uart.c: added test of RS485 half duplex mode
docs/en/api-reference/peripherals/uart.rst: updated documentation
test_uart.c: suppress GCC warnings about discarded const qualifiers
uart.rst: remove sphinx warning - "Duplicate explicit target name"
simple change in uart.h file
update (test_uart.c) after rebase from master
update uart.rst, uart.c, rs485_example.c
Update example description in file Readme.md
update uart.c/h, uart.rst, test_uart.c according to review results

The tests are completed using RS485 adapters hardware connected to two ESP32 WROVER KITs.

TW#13812
Closes https://github.com/espressif/esp-idf/pull/667
Closes https://github.com/espressif/esp-idf/pull/1006
2018-07-02 15:24:58 +02:00
Ivan Grokhotkov
3d880f59b9 Merge branch 'test/tinyfw_tweaks' into 'master'
tiny-test-fw: small tweaks

See merge request idf/esp-idf!2496
2018-07-02 19:41:25 +08:00
Ivan Grokhotkov
32ff393afa Merge branch 'bugfix/bt_os_abstraction_layer' into 'master'
bt: fix OS abstraction layer for correct critical section API usage

See merge request idf/esp-idf!2676
2018-07-02 18:42:07 +08:00
He Yin Ling
0c3e34b79a tiny-test-fw: add class diagram to document 2018-07-02 10:40:23 +00:00
Ivan Grokhotkov
6a626f7984 tiny-test-fw: add requirements.txt, small docs tweaks 2018-07-02 10:40:23 +00:00
Ivan Grokhotkov
8a88dd3590 tiny-test-fw: IDFDUT: in the absence of configuration, try ESPPORT first 2018-07-02 10:40:23 +00:00
Ivan Grokhotkov
59c96ae331 Merge branch 'bugfix/spi_flash_deadlock' into 'master'
spi_flash: raise priority of the task performing spi_flash operation

See merge request idf/esp-idf!2609
2018-07-02 18:39:16 +08:00
Ivan Grokhotkov
3238531c70 Merge branch 'bugfix/rom_libgcc_functions' into 'master'
Fix linking of libgcc math functions to ROM

See merge request idf/esp-idf!2640
2018-07-02 18:38:44 +08:00
Piyush Shah
e7ddd47716 nvs_partition_generator: Add support for base64 representation of Binary data 2018-07-02 15:40:21 +05:30
Piyush Shah
8369bd244b nvs_partition_generator: Modifications to enable using the utility as a Python library
And also use directly as an executable
2018-07-02 15:39:52 +05:30
Anton Maklakov
4f4182179f Merge branch 'bugfix/gcc8_compile_errors' into 'master'
Fix GCC 8 compile errors

See merge request idf/esp-idf!2466
2018-07-02 17:43:02 +08:00
Anton Maklakov
1f3320ebdf wpa_supplicant: fix errors for GCC 8 support
components/wpa_supplicant/port/include/os.h:259:29: error: 'strncpy' output truncated before terminating nul copying 3 bytes from a string of the same length [-Werror=stringop-truncation]
 #define os_strncpy(d, s, n) strncpy((d), (s), (n))
                             ^~~~~~~~~~~~~~~~~~~~~~
components/wpa_supplicant/src/wpa2/eap_peer/eap.c:410:3: note: in expansion of macro 'os_strncpy'
   os_strncpy(sm->blob[0].name, CLIENT_CERT_NAME, BLOB_NAME_LEN);
   ^~~~~~~~~~
2018-07-02 09:05:00 +00:00
Anton Maklakov
f42b91fe46 spi_flash: fix errors for GCC 8 support
components/spi_flash/partition.c: In function 'load_partitions':
components/spi_flash/partition.c:179:66: error: argument to 'sizeof' in 'strncpy' call is the same expression as the source; did you mean to use the size of the destination? [-Werror=sizeof-pointer-memaccess]
         strncpy(item->info.label, (const char*) it->label, sizeof(it->label));
                                                                  ^
2018-07-02 09:05:00 +00:00
Anton Maklakov
714a9bda92 fatfs: fix errors for GCC 8 support and some indentation
components/fatfs/src/ff.c: In function 'f_fdisk':
components/fatfs/src/ff.c:5995:5: error: this 'for' clause does not guard... [-Werror=misleading-indentation]
     for (n = 16; n < 256 && sz_disk / n / cluster_size > 1024; n *= 2) ;
     ^~~
components/fatfs/src/ff.c:5996:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
  if (n == 256) n--;
  ^~
2018-07-02 09:05:00 +00:00
Anton Maklakov
2a810a318f ipc: fix errors for GCC 8 support
components/esp32/ipc.c: In function 'esp_ipc_init':
components/esp32/ipc.c:82:31: error: '%d' directive writing between 1 and 11 bytes into a region of size 5 [-Werror=format-overflow=]
         sprintf(task_name,"ipc%d",i);
                               ^~
components/esp32/ipc.c:82:27: note: directive argument in the range [-2147483648, 1]
         sprintf(task_name,"ipc%d",i);
                           ^~~~~~~
components/esp32/ipc.c:82:9: note: 'sprintf' output between 5 and 15 bytes into a destination of size 8
         sprintf(task_name,"ipc%d",i);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
2018-07-02 09:05:00 +00:00
Anton Maklakov
93f6700be7 newlib: fix errors for GCC 8 support
components/newlib/include/sys/reent.h:405:11: error: unnecessary parentheses in declaration of '_sig_func' [-Werror=parentheses]
   void (**(_sig_func))(int);
           ^
2018-07-02 09:05:00 +00:00
Michael (XIAO Xufeng)
3d23fe9a61 feature(spi): provide macro to write multi-byte data straightly
resolves https://github.com/espressif/esp-idf/issues/2062
2018-07-02 15:34:47 +08:00
Liu Zhi Fu
c84a2b9027 lwip: disable ETHARP_TRUST_IP_MAC by default
Disable ETHARP_TRUST_IP_MAC by default because:
1. The LAN peer may not be trustful
2. The LAN peer may has problem to update its ARP entry
2018-07-02 13:38:29 +08:00
Ivan Grokhotkov
ae006fed83 esp32: force pure math functions from libgcc to be linked from ROM 2018-07-02 12:49:57 +08:00
Ivan Grokhotkov
40b5f10611 esp32: fix addresses of some libgcc functions in ROM ld script 2018-07-02 12:49:57 +08:00
Angus Gratton
fdee0b64a0 Merge branch 'bugfix/doc_blufi' into 'master'
bugfix/doc_blufi

See merge request idf/esp-idf!2644
2018-07-02 12:12:48 +08:00
Ivan Grokhotkov
da179e0098 xtensa: make XTHAL_GET_INTERRUPT, XTHAL_GET_CCOUNT volatile
INTERRUPT and CCOUNT registers will change outside of program control.
Making the inline assembly used to read these registers volatile
indicates this fact to the compiler.

Fixes https://github.com/espressif/esp-idf/issues/2127
2018-07-02 11:31:19 +08:00
chenwu
4898135c15 coap: pass null-terminated string to gethostbyname
coap client parse a string by `coap_split_uri`,fetch host should by `host.length`
otherwise, would cause `gethostbyname` failed because of inappropriate  parameter.
2018-07-02 10:05:03 +08:00
Angus Gratton
a8fa4201b9 Merge branch 'docs/eclipse_regex' into 'master'
Docs: Fix bugs in Eclipse setup in CN

See merge request idf/esp-idf!2620
2018-07-02 09:18:26 +08:00
Angus Gratton
6d1995b9d2 Merge branch 'bugfix/lwip_socket_leak_accept_enfile' into 'master'
lwip: Fix leak when accept() fails due to max socket limit

See merge request idf/esp-idf!2585
2018-07-02 09:02:21 +08:00
krzychb
8a7ee46b7f Fixed link to 'TEMPLATE_EXAMPLE_README.md' 2018-07-01 19:33:37 +02:00
Mahavir Jain
bd177a34c6 bt: fix OS abstraction layer for correct critical section API usage
Signed-off-by: Mahavir Jain <mahavir@espressif.com>
2018-07-01 19:07:51 +05:30
Ivan Grokhotkov
f9f2937694 spi_flash: raise priority of the task performing spi_flash operation
The fix is for the situation when cache disabling mechanism causes
a deadlock with user tasks. Situation is as follows:

1. spi_flash operation is started from low-priority task on CPU0
2. It uses IPC to wake up high-priority IPC1 task on CPU1, preventing
   all other tasks on CPU1 from running. This is needed to safely
   disable the cache.
3. While the task which started spi_flash operation is waiting for IPC1
   task to acknowledge that CPU1 is not using cache anymore, it is
   preempted by a higher priority application task ("app0").
4. Task app0 busy-waits for some operation on CPU1 to complete. But
   since application tasks are blocked out by IPC1 task, this never
   happens. Since app0 is busy-waiting, the task doing spi flash
   operation never runs.

The more or less logical soltion to the problem would be to also do
cache disabling on CPU0 and the SPI flash operation itself from IPC0
task. However IPC0 task stack would need to be increased to allow doing
SPI flash operation (and IPC1 stack as well). This would waste some
memory. An alternative approach adopted in this fix is to call FreeRTOS
functions to temporary increase the priority of SPI flash operation task
to the same level as the IPC task.

Fixes https://github.com/espressif/arduino-esp32/issues/740
Fixes https://github.com/espressif/esp-idf/issues/1157
2018-07-01 20:44:42 +08:00
Jiang Jiang Jian
abbccb7acd Merge branch 'bugfix/coex_bug' into 'master'
esp32: fix coex bug

See merge request idf/esp-idf!2603
2018-06-30 22:29:18 +08:00
Jiang Jiang Jian
b1fa1ba617 Merge branch 'bugfix/btdm_fix_gattc_register_multi_srvc_chg' into 'master'
Component/bt: fix register multi service change when register multi gattc

See merge request idf/esp-idf!2625
2018-06-30 11:30:41 +08:00
krzychb
f4ef7689bd The 'Two Point Values' used to calibrate ADC readings, unlike 'eFuse Vref', are not measured and burned into eFuse BLOCK3 for each individual chip during factory calibration. This operation should be done by user, if more accurate calibration is required. 2018-06-29 19:01:11 +02:00
Jiang Jiang Jian
b727113fc1 Merge branch 'bugfix/btdm_delete_deprecated_files' into 'master'
Component/bt: delete deprecated files

See merge request idf/esp-idf!2583
2018-06-29 19:37:03 +08:00
Jiang Jiang Jian
53ce5fd106 Merge branch 'bugfix/btdm_bt_remove_device_disconnect' into 'master'
component/bt: Fix bug of BT and BLE remove bond device

See merge request idf/esp-idf!2562
2018-06-29 19:29:57 +08:00
Jiang Jiang Jian
fe0dc407da Merge branch 'bugfix/btdm_bad_pointer_of_bt_gap' into 'master'
component/bt: Fix some bad point calculations of BT GAP

See merge request idf/esp-idf!2655
2018-06-29 19:25:13 +08:00
Tian Hao
e3df7d97a7 esp32: fix coex bug
1. fix BLE connection missing in coex mode
    2. modify other parameters to make coex priority more reasonable
    3. fix modem sleep procedure trap cause Wifi disable RF when BT is
    working. Such cause that BR/EDR is difficult to be connected, BLE
    connection stability decrease and so on.
    4. modify BR/EDR coexist duration to imrove BR/EDR connect success
    ratio.
    5. Due to the hardware coexist bug, BLE scan interval/window should
    be less than 0x100(about 160ms). Therefore, it will cause BLE cannot
    scan any advertising packet while WiFi have higher priority
    behaviour(such like RX beacon, scan, TX/RX VO packets and etc.).
2018-06-29 16:28:11 +08:00
Jiang Jiang Jian
8f804d5ee7 Merge branch 'bugfix/btdm_some_ble_hid_bugs' into 'master'
component/bt: Fix some hid bugs

See merge request idf/esp-idf!2628
2018-06-29 15:36:53 +08:00
Jiang Jiang Jian
824782d6f9 Merge branch 'feature/optimize_wifi_memory' into 'master'
Optimize WiFi memory

See merge request idf/esp-idf!2650
2018-06-29 15:24:09 +08:00
Jiang Jiang Jian
0e4b28e893 Merge branch 'bugfix/btdm_fix_stop_adv_error_in_dual_core' into 'master'
component/bt: fix stop adv error in dual core

See merge request idf/esp-idf!2561
2018-06-29 15:06:49 +08:00
Jiang Jiang Jian
83f1d14162 Merge branch 'bugfix/btdm_modify_service_uuid_of_sec_gatts_demo' into 'master'
Component/bt: modify service uuid of ble_sec_gatts demo

See merge request idf/esp-idf!2612
2018-06-29 15:00:29 +08:00
Jiang Jiang Jian
1124e073d7 Merge branch 'bugfix/btdm_fix_no_adv_packet' into 'master'
component/bt: fix no adv packets

See merge request idf/esp-idf!2647
2018-06-29 14:59:01 +08:00
zhiweijian
d1c3c8494b Component/bt: fix register multi service change when register multi gattc 2018-06-29 06:54:16 +00:00
Jiang Jiang Jian
34797d8d52 Merge branch 'bugfix/btdm_respond_error_when_receives_unsupported_request' into 'master'
component/bt: Fix bug: Respond with the Error Response when receiving a request…

See merge request idf/esp-idf!2591
2018-06-29 14:47:12 +08:00
Jiang Jiang Jian
9510f77f7a Merge branch 'bugfix/btdm_rm_assert_in_isr' into 'master'
bugfix/btdm_rm_assert_in_isr

See merge request idf/esp-idf!2633
2018-06-29 14:24:28 +08:00
Jiang Jiang Jian
a1a2a2009d Merge branch 'bugfix/prevent_btsleep_dfs_coex' into 'master'
prevent Dynamic Frequency Scaling to be used together with bluetooth modem sleep

See merge request idf/esp-idf!2645
2018-06-29 14:23:40 +08:00
Jiang Jiang Jian
be7aa884a1 Merge branch 'bugfix/btdm_singular_sleep_time_correction' into 'master'
Bugfix/btdm singular sleep time correction

See merge request idf/esp-idf!2635
2018-06-29 14:22:58 +08:00
Kedar Sovani
fe1889b923 sh2lib: Fix a bug in send 2018-06-29 09:22:18 +05:30
baohongde
be8ec6b8d2 component/bt: Fix some bad point calculations of BT GAP
In response to: https://github.com/espressif/esp-idf/issues/2103
2018-06-29 11:40:46 +08:00
hou wen xiang
cb8ab7c6a8 driver(rmt): update README.md file of rmt related example. 2018-06-29 11:03:09 +08:00
Liu Zhi Fu
d3388c9a31 Optimize WiFi memory
Optimize wifi memory (b987c01d)
1. Decrease WiFi task stack size by 512 Bytes
2. Modify WiFi NVS configuration array from static to dynamic
3. Move interrupt/RX relating variables from .bss segment to .data segment
4. Modify WiFi management short buffer from static to dynamic
5. Remove some useless WiFi buffer space
2018-06-28 21:24:44 +08:00
wangmengyang
04ea784011 prevent Dynamic Frequency Scaling when using bluetooth modem sleep
This constraint will be elimiated after the issue is fixed
2018-06-28 18:08:18 +08:00
Jin Fang Cheng Cheng
9e3c3f267e Update eclipse-setup.rst 2018-06-28 17:58:19 +08:00
Jin Fang Cheng Cheng
3d6d252b3e Update eclipse-setup-windows.rst 2018-06-28 17:57:55 +08:00
zwj
077380a352 component/bt: fix no adv packets 2018-06-28 17:49:41 +08:00
Jin Fang Cheng Cheng
7fe130c171 Update eclipse-setup.rst 2018-06-28 16:28:54 +08:00
Jin Fang Cheng Cheng
d9653e75e9 Update eclipse-setup.rst 2018-06-28 15:16:20 +08:00
Jin Fang Cheng Cheng
084a6b54e2 Update eclipse-setup-windows.rst 2018-06-28 15:10:36 +08:00
Jin Fang Cheng Cheng
a0928b4ce2 Update eclipse-setup-windows.rst 2018-06-28 15:00:40 +08:00
Jin Fang Cheng Cheng
f1acb27a66 Fix the tables. 2018-06-28 14:09:14 +08:00
Jin Fang Cheng Cheng
dd66dda11e Fix the typo and tables. 2018-06-28 14:06:26 +08:00
He Yin Ling
568da37af7 Merge branch 'ci/remove_test_report' into 'master'
CI: optimize CI stages

See merge request idf/esp-idf!2602
2018-06-28 09:28:49 +08:00
wangmengyang
cfea04b6b3 component/bt: fix the cornered case caused by singular finetime correction value upon waking up from sleep
1. revert previous changes that adds 1-slot margin for first master Tx event, since this bugfix can handle that case
2018-06-27 20:21:39 +08:00
wangmengyang
02a620811d component/bt: remove the call of assert in time conversion functions which can be caused in ISR 2018-06-27 17:23:23 +08:00
He Yin Ling
e75628b4d7 Merge branch 'bugfix/pcnt_event_edge_case' into 'master'
test: fix pcnt unit test fail

See merge request idf/esp-idf!2614
2018-06-27 10:00:53 +08:00
He Yin Ling
76829509b2 Merge branch 'bugfix/ci_stop_all_thread_when_one_failed' into 'master'
ci: stop main thread when one failed

See merge request idf/esp-idf!2615
2018-06-27 09:59:46 +08:00
Angus Gratton
c07ec696dc Merge branch 'bugfix/eclipse_regex' into 'master'
Docs: Fix bugs in Eclipse setup

See merge request idf/esp-idf!2617
2018-06-27 09:38:47 +08:00
Angus Gratton
cff573cbe9 Merge branch 'bugfix/conn_stress_test_test_during_sleep' into 'master'
Bugfix/btdm_le_conn_initiating_assert

See merge request idf/esp-idf!2595
2018-06-27 08:12:49 +08:00
Angus Gratton
d096cac97d Merge branch 'docs/update_resources.rst' into 'master'
docs/update_resources.rst

See merge request idf/esp-idf!2532
2018-06-27 08:09:57 +08:00
Angus Gratton
e9029fd8de Merge branch 'docs/esp32-devkitv-v4_updates' into 'master'
Renamed ESP-WROOM-32 to ESP32-WROOM-32/D/U including links to data sheets,…

See merge request idf/esp-idf!2567
2018-06-27 07:29:52 +08:00
Jin Fang Cheng Cheng
c4eff744b3 Fixed link to documentation and updated some wording 2018-06-26 18:28:15 +02:00
krzychb
b101e118f2 Renamed ESP-WROOM-32 to ESP32-WROOM-32/D/U including links to data sheets, reflected upcoming ESP32-SOLO-1 as one of options for ESP32-DevKitC, provided updated schematics and notes on C15. 2018-06-26 18:08:47 +02:00
Ivan Grokhotkov
70a2160f2c Merge branch 'docs/sdio_slave_protocol_comb' into 'master'
doc(sdio_slave): add some information of slave protocol

See merge request idf/esp-idf!2598
2018-06-26 19:36:08 +08:00
baohongde
7ff84d94aa component/bt: Fix some hid bugs
1. Property of HID Information is Read
2. Property of HID Control Point is WriteWithoutResponse
2018-06-26 17:48:07 +08:00
chenwu
152a060425 fix: response failed when set a large response data
set the last parameter of `coap_pdu_init`, from size to COAP_MAX_PDU_SIZE
refer to https://github.com/obgm/libcoap.git/examples/contiki/coap-observer.c settings -> COAP_DEFAULT_MTU

close https://ezredmine.espressif.cn:8765/issues/23207
2018-06-26 17:13:25 +08:00
Jiang Jiang Jian
a698035fa9 Merge branch 'mesh/bugfix' into 'master'
mesh: update libs

See merge request idf/esp-idf!2580
2018-06-26 17:06:19 +08:00
Angus Gratton
2074d36d43 doc: Clarify some Eclipse setup steps 2018-06-26 17:34:29 +10:00
houchenyao
1878109a7f bugfix: fix pcnt case "PCNT interrupt method test(control IO is high)" 2018-06-26 13:35:14 +08:00
Jin Fang Cheng Cheng
c17c0a2dc5 Update eclipse-setup-windows.rst 2018-06-26 13:19:14 +08:00
Jin Fang Cheng Cheng
6a1250cf19 Update eclipse-setup.rst 2018-06-26 13:15:13 +08:00
Jin Fang Cheng Cheng
fe7647936a Update eclipse-setup-windows.rst 2018-06-26 13:13:08 +08:00
Jin Fang Cheng Cheng
d57649aed1 Update eclipse-setup-windows.rst according to https://gitlab.espressif.cn:6688/idf/esp-idf/merge_requests/2617. 2018-06-26 12:55:34 +08:00
Jin Fang Cheng Cheng
0a033b5e05 Update eclipse-setup.rst according to https://gitlab.espressif.cn:6688/idf/esp-idf/merge_requests/2617 2018-06-26 12:54:15 +08:00
Angus Gratton
75dc2f5800 doc: Fix Build Output Parser command pattern to include C++ correctly
Previously only C files had build output correctly parsed.

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

May also relate to:
https://github.com/espressif/esp-idf/issues/529
https://github.com/espressif/esp-idf/issues/17
2018-06-26 13:47:14 +10:00
wangmengyang
e1bcd6ba0f component/bt: add 1 slot margin to program the 1st master Tx event during BLE connection
this will resolve the issue of failure of BLE connection stress test with sleep enabled
2018-06-26 11:10:47 +08:00
houchenyao
9223639010 stop main thread when one failed 2018-06-26 11:02:23 +08:00
qiyueixa
68ff628927 mesh: update libs
1. add APIs to set/get announce interval values.
2. add API to enable/disable the min rate to 6Mbps for data packages.
3. add APIs to set/get RSSI threshold values.
4. fix ap_loss.
2018-06-25 21:47:53 +08:00
Jiang Jiang Jian
aaf12390eb Merge branch 'feature/btdm_controller_to_host_flow_control' into 'master'
component/bt: Add Controller to Host Flow Control

See merge request idf/esp-idf!2493
2018-06-25 20:33:21 +08:00
Jiang Jiang Jian
6dd786c74d Merge branch 'bugfix/btdm_slave_can_not_receive_long_packets_in_smp' into 'master'
Component/bt: fix slave can not receive long packets in smp

See merge request idf/esp-idf!2586
2018-06-25 20:28:27 +08:00
zhiweijian
ee9db0c76a Component/bt: modify service uuid of ble_sec_gatts demo 2018-06-25 16:04:20 +08:00
He Yin Ling
7e47d397fa CI: add stage host_test:
1. Add `host_test` stage for test jobs running on host.
2. Rename stage `test` to `integration_test`.
2018-06-25 15:20:58 +08:00
He Yin Ling
aeaa480a85 CI: minor optimize of CI config file:
1. set shorter expire time for artifacts
2. set dependency for example test jobs, to limit the artifacts it downloads
2018-06-25 15:20:51 +08:00
Michael (XIAO Xufeng)
fe076f5cb9 doc(sdio_slave): add some information of slave protocol 2018-06-25 06:55:19 +00:00
Ivan Grokhotkov
86d6c09387 Merge branch 'bugfix/esp_err_name_idf_path' into 'master'
docs: fix error code reference build issue

See merge request idf/esp-idf!2587
2018-06-25 13:41:17 +08:00
Ivan Grokhotkov
f525c9ef96 Merge branch 'feature/move_to_soc_rtc_gpio_desc' into 'master'
soc: Fix check_long_hold_gpio and move def to soc

See merge request idf/esp-idf!2550
2018-06-25 12:33:27 +08:00
michael
8676830e61 fix(spi_master): allow to use cs_ena_pretrans in full duplex mode without command and address phases 2018-06-25 04:30:14 +00:00
Ivan Grokhotkov
1cd9949f2d Merge branch 'bugfix/assert' into 'master'
assert: Fix. Move useful functions from wrapped assert functions

See merge request idf/esp-idf!2599
2018-06-25 11:02:42 +08:00
Angus Gratton
3a3a12d48d Merge branch 'bugfix/app_partition_fallback' into 'master'
partition_table: Add parttool.py fallback option, some small cleanups

See merge request idf/esp-idf!2593
2018-06-25 08:43:42 +08:00
He Yin Ling
808c23af89 CI: remove test report stage:
Test report is not used as expected:

1. we rarely download and use test report
2. current test report method doesn't handle large amount data well,
   need to be replaced by other methods

Test report also make test jobs allow to fail. It breaks the
original flow of Gitlab CI and make user confused.
2018-06-24 13:58:27 +08:00
Konstantin Kondrashov
899fa2dc55 assert: Fix. Move useful functions from wrapped assert functions
Moved useful functions from wrapped assert functions, because option `CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED=y` will remove this functions.

Closes https://github.com/espressif/esp-idf/issues/2068
2018-06-22 15:17:55 +05:00
zhiweijian
2469e90953 Component/bt: fix slave can not receive long packets in smp 2018-06-22 18:10:58 +08:00
Jiang Jiang Jian
8a7e112a72 Merge branch 'bugfix/read_rssi' into 'master'
bt : fix read rssi conflict when in dual mode

See merge request idf/esp-idf!2592
2018-06-22 17:19:23 +08:00
Angus Gratton
0a02d824fc partition_table: Warn if the partition table name doesn't match type & subtype 2018-06-22 17:51:34 +10:00
Jiang Jiang Jian
af42165b36 Merge branch 'bugfix/btdm_modify_throught_demo_default_config' into 'master'
Component/bt: modify throughput demo default config

See merge request idf/esp-idf!2590
2018-06-22 15:24:02 +08:00
hou wen xiang
10e8e22558 driver(mcpwm): Fix mcpwm api in mcpwm.c mismatch with mcpwm.h bug. 2018-06-22 12:26:43 +08:00
Konstantin Kondrashov
32da455384 soc: Fix check_long_hold_gpio and move def to soc
Fix factory_reset_pin init as input
Move definition a structure rtc_gpio_desc to soc

Closes https://github.com/espressif/esp-idf/issues/2030
2018-06-22 09:20:27 +05:00
baohongde
29b7d4e916 component/bt: Fix bug of BT and BLE remove bond device
1. esp_ble_remove_bond_device will only remove BLE bond key and disconnect BLE device.
2. esp_bt_gap_remove_bond_device  will only remove BT bond key and disconnect BT device.
2018-06-22 11:54:40 +08:00
Tian Hao
e3d3ed5a06 bt : fix read rssi conflict when in dual mode 2018-06-22 11:16:16 +08:00
Angus Gratton
6acf28db90 gen_esp32part: Fix input/output handling, regression when Python 3 was supported
Also remove misleading help about using stdin (was broken) and --display argument (doesn't exist).
2018-06-22 11:27:09 +10:00
Angus Gratton
05fe65c7d9 partition_table: Use names not numeric values in default OTA example partition 2018-06-22 11:15:41 +10:00
Angus Gratton
077469c823 partition_table: Support same fallback logic as bootloader for default boot partition
Generates correct "make flash" command even when partition table has no factory partition.

Also adds unit tests for parttool.py

Closes https://github.com/espressif/esp-idf/issues/2086
2018-06-22 11:14:22 +10:00
He Yin Ling
9d1cc00e54 Merge branch 'test/add_mesh_test_cases' into 'master'
test: add mesh basic function test cases

See merge request idf/esp-idf!2330
2018-06-21 22:55:56 +08:00
zhiweijian
4aae691519 Component/bt: modify throughput demo default config 2018-06-21 20:48:20 +08:00
Ivan Grokhotkov
4b0087a387 Merge branch 'bugfix/mdns_service_limit' into 'master'
fix(mdns): add the maximum number of services

See merge request idf/esp-idf!2559
2018-06-21 20:32:06 +08:00
baohongde
012415c9f8 component/bt: Fix bug: Respond with the Error Response when receiving a request that it does not support 2018-06-21 20:20:21 +08:00
Jiang Jiang Jian
4df08f9815 Merge branch 'bugfix/wifi_support_null_mode_again' into 'master'
support WiFi null mode again

See merge request idf/esp-idf!2577
2018-06-21 15:25:45 +08:00
Ivan Grokhotkov
858cfc2950 esp_err_to_name.py: guess IDF_PATH if not set in environement
Fixes the issue that esp_err_to_name.py would fail when called in
documentation build process, when there was no IDF_PATH set.
2018-06-21 15:22:56 +08:00
Ivan Grokhotkov
8c87df538e docs: conf.py: check return code when calling os.system
Several calls were made but results were not checked, obfuscating the
errors.
2018-06-21 15:22:56 +08:00
zhiweijian
41b57d35c8 Component/bt: delete deprecated files 2018-06-21 06:07:21 +00:00
Angus Gratton
75d732887b Merge branch 'doc/examples_guide' into 'master'
docs: Add "Creating Examples" docs page, template example README

See merge request idf/esp-idf!2536
2018-06-21 13:59:44 +08:00
Angus Gratton
3cd22cb1ef Merge branch 'bugfix/heap_int_overflow' into 'master'
heap: Add integer overflow checks

See merge request idf/esp-idf!2568
2018-06-21 13:58:08 +08:00
Ivan Grokhotkov
99b075b28a Merge branch 'example/sdio_example' into 'master'
example(sdio): example to use sdmmc host to do SDIO communication with SDIO slave

See merge request idf/esp-idf!1946
2018-06-21 13:55:23 +08:00
Angus Gratton
df816f4940 lwip: Fix leak when accept() fails due to max socket limit
As reported https://esp32.com/viewtopic.php?f=14&t=6171

event_callback() in sockets.c calls conn->socket-- to register
activity on a netconn which may not have any socket yet,
so any socket value < 0 indicates "no controlling socket"
for the netconn.
2018-06-21 15:22:48 +10:00
baohongde
de8a735a7a component/bt: Add Controller to Host Flow Control 2018-06-21 11:44:40 +08:00
Jiang Jiang Jian
b7d02f7b67 Merge branch 'bugfix/btdm_k_mem_assert_bug' into 'master'
component/bt: Fix the bug of when operating the list on interrupt function,…

See merge request idf/esp-idf!2575
2018-06-21 11:15:11 +08:00
Liu Han
ba458c69cf fix(mdns): add the maximum number of services 2018-06-21 10:31:09 +08:00
Angus Gratton
b47c8fcbf7 Merge branch 'bugfix/fix_http_client_header_bug' into 'master'
esp_http_client: Fix content-type header overwritten by esp_http_client_set_post_field

See merge request idf/esp-idf!2552
2018-06-21 08:10:13 +08:00
He Yin Ling
770e848c1f Merge branch 'test/driver_pcnt' into 'master'
test: add pcnt test cases

See merge request idf/esp-idf!1930
2018-06-20 18:31:24 +08:00
XiaXiaotian
d61ae91fef support WiFi null mode again 2018-06-20 16:45:30 +08:00
Michael (XIAO Xufeng)
90345050b2 example(sdio): example to use sdmmc host to do SDIO communication with SDIO slave 2018-06-20 07:00:05 +00:00
michael
8ab87a6a87 chore(sdio_slave): format source files 2018-06-20 07:00:05 +00:00
houchenyao
3238c6f968 test: components/driver: pcnt case 2018-06-20 06:00:26 +00:00
He Yin Ling
baa0b8547c test: add mesh basic function test cases 2018-06-20 05:59:54 +00:00
Ivan Grokhotkov
4b91c82cc4 Merge branch 'feat/sdio_pullup' into 'master'
feature(sdio): add features to make SDIO slave compatible with more devkits

See merge request idf/esp-idf!2454
2018-06-20 13:58:56 +08:00
Jitin George
9ae3df7ec2 esp_http_client: Fix content-type header overwritten by esp_http_client_set_post_field
Also, references of non-existent function `esp_http_client_finalize_open` is removed
from `esp_http_client` documentation.

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

Closes https://github.com/espressif/esp-idf/issues/2040
2018-06-20 10:49:26 +05:30
Angus Gratton
fd88d6d89c heap: Add integer overflow checks 2018-06-19 23:31:37 +00:00
yulong
225c4371c1 component/bt: Fix the bug of when operating the list on interrupt function, there is no lock protection. 2018-06-19 21:01:50 +08:00
Roland Dobai
797340f7f8 idf_monitor: Fix console performance
51e42d8e92
introduced filtering options which handles the last (unterminated) line
with a delay. This introduced poor performance for console applications
when the user interacts with the ESP32 device in the same line because
there is an artificial delay for each key-press.

bb152030a0
decreased the delay but there are still delays for each key-presses.

The current fix makes only one delay per line instead of each
key-presses. When an unterminated line is detected then no more
"delayed" print is used for the given line.

Fixes https://github.com/espressif/esp-idf/issues/2054
2018-06-19 13:29:57 +02:00
zwj
c9aac643e3 component/bt: fix stop adv error in dual core 2018-06-15 20:43:10 +08:00
Angus Gratton
df4e227855 docs: Add "Creating Examples" docs page, template example README 2018-06-14 16:49:22 +10:00
michael
85b08684e3 doc(sdio_slave): add descriptions about conflicts on MTDI pin 2018-06-14 12:04:23 +08:00
michael
9b1f2df900 fix(sdio_slave): fix the intr_recv issue that trigger receiving too fast cause assertion failed.
also fix a race risk issue when recycle receiving buffers.
2018-06-14 12:04:23 +08:00
michael
5b37a96ddc feature(sdio): allow to enable internal pullups of the SDIO host and slave as a debug feature
NOTE: the internal pullups are not totally reliable, please do add external pullups on your bus.
2018-06-14 12:04:22 +08:00
XuanZe
dc30603242 Translate the resources.rst Merges https://github.com/espressif/esp-idf/pull/1979 2018-06-08 14:58:36 +08:00
1996 changed files with 162332 additions and 174868 deletions

8
.gitignore vendored
View File

@@ -43,6 +43,11 @@ tools/unit-test-app/build
tools/unit-test-app/builds
tools/unit-test-app/output
# 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.*
@@ -56,7 +61,10 @@ coverage_report/
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/

View File

@@ -2,7 +2,9 @@ stages:
- build
- assign_test
- host_test
- target_test
- unit_test
- integration_test
- check
- deploy
- post_check
@@ -18,11 +20,12 @@ variables:
GET_SOURCES_ATTEMPTS: "10"
ARTIFACT_DOWNLOAD_ATTEMPTS: "10"
# We use get-full-sources.sh script to fetch the submodules and/or re-fetch the repo
# We use get_sources.sh script to fetch the submodules and/or re-fetch the repo
# if it was corrupted (if submodule update fails this can happen)
GIT_STRATEGY: fetch
GIT_SUBMODULE_STRATEGY: none
UNIT_TEST_BUILD_SYSTEM: make
# IDF environment
IDF_PATH: "$CI_PROJECT_DIR"
@@ -31,6 +34,9 @@ variables:
APPLY_BOT_FILTER_SCRIPT: "$CI_PROJECT_DIR/tools/ci/apply_bot_filter.py"
CHECKOUT_REF_SCRIPT: "$CI_PROJECT_DIR/tools/ci/checkout_project_ref.py"
# Docker images
BOT_DOCKER_IMAGE_TAG: ":latest"
# When 'fetch' strategy is used, Gitlab removes untracked files before checking out
# new revision. However if the new revision doesn't include some of the submodules
# which were present in the old revision, such submodule directories would not be
@@ -38,10 +44,10 @@ variables:
# are removed.
.git_clean_stale_submodules: &git_clean_stale_submodules >
find . -name '.git' -not -path './.git' -printf '%P\n'
| sed 's|/.git||'
| sed 's|/.git||'
| xargs -I {} sh -c '
grep -q {} .gitmodules
|| (echo "Removing {}, has .git directory but not in .gitmodules file"
grep -q {} .gitmodules
|| (echo "Removing {}, has .git directory but not in .gitmodules file"
&& rm -rf {});'
# before each job, we need to check if this job is filtered by bot stage/job filter
@@ -69,6 +75,13 @@ before_script:
# fetch the submodules (& if necessary re-fetch repo) from gitlab
- time ./tools/ci/get-full-sources.sh
# used for check scripts which we want to run unconditionally
.do_nothing_before_no_filter:
before_script: &do_nothing_before_no_filter
- source tools/ci/setup_python.sh
- *git_clean_stale_submodules
# used for everything else where we want to do no prep, except for bot filter
.do_nothing_before:
before_script: &do_nothing_before
- source tools/ci/setup_python.sh
@@ -108,15 +121,12 @@ build_template_app:
- $BOT_LABEL_BUILD
- $BOT_LABEL_REGULAR_TEST
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"}
- git clone ${ESP_IDF_TEMPLATE_GIT}
- git clone https://github.com/espressif/esp-idf-template.git
- cd esp-idf-template
# 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
- cd esp-idf-template
- make defconfig
- python $CHECKOUT_REF_SCRIPT esp-idf-template
# Test debug build (default)
- make all V=1
# Now test release build
@@ -143,7 +153,7 @@ build_template_app:
artifacts:
paths:
- SSC/ssc_bin
expire_in: 1 mos
expire_in: 1 week
variables:
SSC_CONFIG_FOLDER: "$CI_PROJECT_DIR/SSC/configs/ESP32_IDF"
only:
@@ -154,8 +164,8 @@ build_template_app:
- $BOT_LABEL_REGULAR_TEST
script:
- git clone $SSC_REPOSITORY
- python $CHECKOUT_REF_SCRIPT SSC SSC
- cd SSC
- python $CHECKOUT_REF_SCRIPT SSC
- MAKEFLAGS= ./ci_build_ssc.sh "${CI_JOB_NAME}" "${IDF_PATH}/.gitlab-ci.yml"
# don't forget to add to dependency to test_template when adding new build_ssc jobs
@@ -177,7 +187,7 @@ build_esp_idf_tests:
- tools/unit-test-app/output
- components/idf_test/unit_test/TestCaseAll.yml
- components/idf_test/unit_test/CIConfigs/*.yml
expire_in: 1 mos
expire_in: 2 days
only:
variables:
- $BOT_TRIGGER_WITH_LABEL == null
@@ -185,11 +195,24 @@ build_esp_idf_tests:
- $BOT_LABEL_UNIT_TEST
- $BOT_LABEL_REGULAR_TEST
script:
- cd tools/unit-test-app
- MAKEFLAGS= make help # make sure kconfig tools are built in single process
- make ut-clean-all-configs
- export PATH="$IDF_PATH/tools:$PATH"
- cd $CI_PROJECT_DIR/tools/unit-test-app
- export EXTRA_CFLAGS="-Werror -Werror=deprecated-declarations"
- export EXTRA_CXXFLAGS=${EXTRA_CFLAGS}
# Build with CMake first
- idf.py ut-clean-all-configs
- idf.py ut-build-all-configs
- python tools/UnitTestParser.py
# Check if test demands CMake or Make built binaries. If CMake leave the built artifacts as is then exit.
- if [ "$UNIT_TEST_BUILD_SYSTEM" == "cmake" ]; then exit 0; fi
# If Make, delete the CMake built artifacts
- rm -rf builds output sdkconfig
- rm -rf components/idf_test/unit_test/TestCaseAll.yml
- rm -rf components/idf_test/unit_test/CIConfigs/*.yml
# Then build with Make
- cd $CI_PROJECT_DIR/tools/unit-test-app
- MAKEFLAGS= make help # make sure kconfig tools are built in single process
- make ut-clean-all-configs
- make ut-build-all-configs
- python tools/UnitTestParser.py
@@ -205,7 +228,7 @@ build_esp_idf_tests:
- build_examples/*/*/*/build/download.config
- build_examples/*/*/*/build/bootloader/*.bin
- $LOG_PATH
expire_in: 1 week
expire_in: 2 days
variables:
IDF_CI_BUILD: "1"
LOG_PATH: "$CI_PROJECT_DIR/log_examples_make"
@@ -238,10 +261,16 @@ build_esp_idf_tests:
- build_examples_cmake/*/*/*/build/download.config
- build_examples_cmake/*/*/*/build/bootloader/*.bin
- $LOG_PATH
expire_in: 1 week
expire_in: 2 days
variables:
IDF_CI_BUILD: "1"
LOG_PATH: "$CI_PROJECT_DIR/log_examples_cmake"
only:
variables:
- $BOT_TRIGGER_WITH_LABEL == null
- $BOT_LABEL_BUILD
- $BOT_LABEL_EXAMPLE_TEST
- $BOT_LABEL_REGULAR_TEST
script:
# it's not possible to build 100% out-of-tree and have the "artifacts"
# mechanism work, but this is the next best thing
@@ -315,12 +344,13 @@ build_docs:
- docs/en/sphinx-warning-log.txt
- docs/en/sphinx-warning-log-sanitized.txt
- docs/en/_build/html
- docs/sphinx-err-*
# Chinese version of documentation
- docs/zh_CN/doxygen-warning-log.txt
- docs/zh_CN/sphinx-warning-log.txt
- docs/zh_CN/sphinx-warning-log-sanitized.txt
- docs/zh_CN/_build/html
expire_in: 1 mos
expire_in: 1 day
only:
variables:
- $BOT_TRIGGER_WITH_LABEL == null
@@ -332,7 +362,7 @@ build_docs:
- ./check_lang_folder_sync.sh
- cd en
- make gh-linkcheck
- make html
- make html || cat /tmp/sphinx-err*.log
- ../check_doc_warnings.sh
- cd ../zh_CN
- make gh-linkcheck
@@ -342,8 +372,6 @@ build_docs:
verify_cmake_style:
stage: build
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
tags:
- host_test
only:
variables:
- $BOT_TRIGGER_WITH_LABEL == null
@@ -375,6 +403,7 @@ test_nvs_coverage:
artifacts:
paths:
- components/nvs_flash/test_nvs_host/coverage_report
expire_in: 1 week
only:
refs:
- triggers
@@ -390,29 +419,80 @@ test_partition_table_on_host:
- build
script:
- cd components/partition_table/test_gen_esp32part_host
- ./gen_esp32part_tests.py
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./gen_esp32part_tests.py
test_wl_on_host:
<<: *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:
<<: *host_test_template
tags:
- wl_host_test
script:
- cd components/fatfs/test_fatfs_host/
- make test
.host_fuzzer_test_template: &host_fuzzer_test_template
stage: host_test
image: $CI_DOCKER_REGISTRY/afl-fuzzer-test
tags:
- host_test
dependencies: []
artifacts:
when: always
paths:
- ${FUZZER_TEST_DIR}/out/crashes
- ${FUZZER_TEST_DIR}/fuzz_output.log
expire_in: 1 week
only:
refs:
# can only be triggered
- triggers
variables:
- $BOT_LABEL_FUZZER_TEST
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:
<<: *host_fuzzer_test_template
variables:
BOT_NEEDS_TRIGGER_BY_NAME: 1
FUZZER_TEST_DIR: components/mdns/test_afl_fuzz_host
test_lwip_dns_fuzzer_on_host:
<<: *host_fuzzer_test_template
variables:
BOT_NEEDS_TRIGGER_BY_NAME: 1
FUZZER_TEST_DIR: components/lwip/test_afl_host
FUZZER_PARAMS: MODE=dns
test_lwip_dhcp_fuzzer_on_host:
<<: *host_fuzzer_test_template
variables:
BOT_NEEDS_TRIGGER_BY_NAME: 1
FUZZER_TEST_DIR: components/lwip/test_afl_host
FUZZER_PARAMS: MODE=dhcp_client
test_lwip_dhcps_fuzzer_on_host:
<<: *host_fuzzer_test_template
variables:
BOT_NEEDS_TRIGGER_BY_NAME: 1
FUZZER_TEST_DIR: components/lwip/test_afl_host
FUZZER_PARAMS: MODE=dhcp_server
test_spiffs_on_host:
<<: *host_test_template
tags:
- wl_host_test
script:
- cd components/spiffs/test_spiffs_host/
- make test
@@ -427,7 +507,7 @@ test_confserver:
<<: *host_test_template
script:
- cd tools/kconfig_new/test
- ./test_confserver.py
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_confserver.py
test_build_system:
<<: *host_test_template
@@ -447,12 +527,54 @@ test_build_system_cmake:
- cd test_build_system
- ${IDF_PATH}/tools/ci/test_build_system_cmake.sh
test_idf_monitor:
<<: *host_test_template
artifacts:
when: on_failure
paths:
- tools/test_idf_monitor/outputs/*
expire_in: 1 week
script:
- cd ${IDF_PATH}/tools/test_idf_monitor
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./run_test_idf_monitor.py
test_idf_size:
<<: *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
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test.sh
test_esp_err_to_name_on_host:
<<: *host_test_template
artifacts:
when: on_failure
paths:
- components/esp32/esp_err_to_name.c
expire_in: 1 week
script:
- cd tools/
- ./gen_esp_err_to_name.py
- cd ${IDF_PATH}/tools/
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 2.7.15 ./gen_esp_err_to_name.py
- git diff --exit-code -- ../components/esp32/esp_err_to_name.c || (echo 'Differences found. Please run gen_esp_err_to_name.py and commit the changes.'; exit 1)
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.4.8 ./gen_esp_err_to_name.py
- git diff --exit-code -- ../components/esp32/esp_err_to_name.c || (echo 'Differences found between running under Python 2 and 3.'; exit 1)
test_espcoredump:
<<: *host_test_template
artifacts:
when: always
paths:
- components/espcoredump/test/.coverage
- components/espcoredump/test/output
expire_in: 1 week
script:
- cd components/espcoredump/test/
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_espcoredump.sh
push_to_github:
stage: deploy
@@ -482,7 +604,6 @@ deploy_docs:
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
tags:
- deploy
- shiny
only:
refs:
- master
@@ -532,7 +653,7 @@ check_doc_links:
artifacts:
paths:
- docs/_build/linkcheck
expire_in: 1 mos
expire_in: 1 week
script:
# must be triggered with CHECK_LINKS=Yes, otherwise exit without test
- test "$CHECK_LINKS" = "Yes" || exit 0
@@ -541,17 +662,21 @@ check_doc_links:
- cd docs
- make linkcheck
check_commit_msg:
stage: deploy
.check_job_template: &check_job_template
stage: check
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
tags:
- build
except:
- master
- /^release\/v/
- /^v\d+\.\d+(\.\d+)?($|-)/
dependencies: []
before_script: *do_nothing_before
before_script: *do_nothing_before_no_filter
check_line_endings:
<<: *check_job_template
script:
- tools/ci/check-line-endings.sh ${IDF_PATH}
check_commit_msg:
<<: *check_job_template
script:
- git status
- git log -n10 --oneline
@@ -559,35 +684,22 @@ check_commit_msg:
- 'git log --pretty=%s master.. -- | grep "^WIP: " && exit 1 || exit 0'
check_permissions:
stage: deploy
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
tags:
- build
except:
- master
- /^release\/v/
- /^v\d+\.\d+(\.\d+)?($|-)/
dependencies: []
before_script: *do_nothing_before
<<: *check_job_template
script:
- tools/ci/check-executable.sh
check_examples_cmake_make:
stage: deploy
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
tags:
- build
<<: *check_job_template
except:
- master
- /^release\/v/
- /^v\d+\.\d+(\.\d+)?($|-)/
dependencies: []
before_script: *do_nothing_before
script:
- tools/ci/check_examples_cmake_make.sh
check_submodule_sync:
stage: deploy
check_ut_cmake_make:
stage: check
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
tags:
- build
@@ -596,23 +708,27 @@ check_submodule_sync:
- /^release\/v/
- /^v\d+\.\d+(\.\d+)?($|-)/
dependencies: []
tags:
- github_sync
before_script: *do_nothing_before
script:
- tools/ci/check_ut_cmake_make.sh
check_submodule_sync:
<<: *check_job_template
variables:
GIT_STRATEGY: clone
before_script: *do_nothing_before
retry: 2
script:
# check if all submodules are correctly synced to public repostory
- git submodule update --init --recursive
check_artifacts_expire_time:
<<: *check_job_template
script:
# check if we have set expire time for all artifacts
- python tools/ci/check_artifacts_expire_time.py
check_pipeline_triggered_by_label:
<<: *check_job_template
stage: post_check
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
dependencies: []
before_script: *do_nothing_before
tags:
- build
only:
variables:
- $BOT_TRIGGER_WITH_LABEL
@@ -641,7 +757,7 @@ assign_test:
- components/idf_test/*/CIConfigs
- components/idf_test/*/TC.sqlite
- $EXAMPLE_CONFIG_OUTPUT_PATH
expire_in: 1 mos
expire_in: 1 week
only:
variables:
- $BOT_TRIGGER_WITH_LABEL == null
@@ -656,13 +772,13 @@ assign_test:
- python $TEST_FW_PATH/CIAssignUnitTest.py $IDF_PATH/components/idf_test/unit_test/TestCaseAll.yml $IDF_PATH/.gitlab-ci.yml $IDF_PATH/components/idf_test/unit_test/CIConfigs
# clone test script to assign tests
- git clone $TEST_SCRIPT_REPOSITORY
- python $CHECKOUT_REF_SCRIPT auto_test_script auto_test_script
- cd auto_test_script
- python $CHECKOUT_REF_SCRIPT auto_test_script
# assgin integration test cases
- python CIAssignTestCases.py -t $IDF_PATH/components/idf_test/integration_test -c $IDF_PATH/.gitlab-ci.yml -b $IDF_PATH/SSC/ssc_bin
.example_test_template: &example_test_template
stage: target_test
stage: integration_test
when: on_success
only:
refs:
@@ -697,8 +813,6 @@ assign_test:
paths:
- $LOG_PATH
expire_in: 1 week
reports:
junit: $LOG_PATH/*/XUNIT_RESULT.xml
variables:
TEST_FW_PATH: "$CI_PROJECT_DIR/tools/tiny-test-fw"
TEST_CASE_PATH: "$CI_PROJECT_DIR/examples"
@@ -710,14 +824,15 @@ assign_test:
- test -e $CONFIG_FILE || exit 0
# clone test env configs
- git clone $TEST_ENV_CONFIG_REPOSITORY
- python $CHECKOUT_REF_SCRIPT ci-test-runner-configs ci-test-runner-configs
- cd ci-test-runner-configs
- python $CHECKOUT_REF_SCRIPT ci-test-runner-configs
- cd $TEST_FW_PATH
# run test
- python Runner.py $TEST_CASE_PATH -c $CONFIG_FILE -e $ENV_FILE
.unit_test_template: &unit_test_template
<<: *example_test_template
stage: target_test
stage: unit_test
dependencies:
- assign_test
- build_esp_idf_tests
@@ -739,7 +854,7 @@ assign_test:
ENV_FILE: "$CI_PROJECT_DIR/ci-test-runner-configs/$CI_RUNNER_DESCRIPTION/EnvConfig.yml"
.test_template: &test_template
stage: target_test
stage: integration_test
when: on_success
only:
refs:
@@ -760,25 +875,25 @@ assign_test:
when: always
paths:
- $LOG_PATH
expire_in: 1 mos
expire_in: 1 week
variables:
LOCAL_ENV_CONFIG_PATH: "$CI_PROJECT_DIR/ci-test-runner-configs/$CI_RUNNER_DESCRIPTION/ESP32_IDF"
LOG_PATH: "$CI_PROJECT_DIR/$CI_COMMIT_SHA"
TEST_CASE_FILE_PATH: "$CI_PROJECT_DIR/components/idf_test/integration_test"
MODULE_UPDATE_FILE: "$CI_PROJECT_DIR/components/idf_test/ModuleDefinition.yml"
CONFIG_FILE: "$CI_PROJECT_DIR/components/idf_test/integration_test/CIConfigs/${CI_JOB_NAME}_.yml"
CONFIG_FILE: "$CI_PROJECT_DIR/components/idf_test/integration_test/CIConfigs/$CI_JOB_NAME.yml"
before_script: *add_gitlab_key_before
script:
# first test if config file exists, if not exist, exit 0
- test -e $CONFIG_FILE || exit 0
# clone local test env configs
- git clone $TEST_ENV_CONFIG_REPOSITORY
- python $CHECKOUT_REF_SCRIPT ci-test-runner-configs ci-test-runner-configs
- cd ci-test-runner-configs
- python $CHECKOUT_REF_SCRIPT ci-test-runner-configs
# clone test bench
- git clone $TEST_SCRIPT_REPOSITORY
- python $CHECKOUT_REF_SCRIPT auto_test_script auto_test_script
- cd auto_test_script
- python $CHECKOUT_REF_SCRIPT auto_test_script
# run test
- python CIRunner.py -l "$LOG_PATH/$CI_JOB_NAME" -c $CONFIG_FILE -e $LOCAL_ENV_CONFIG_PATH -t $TEST_CASE_FILE_PATH -m $MODULE_UPDATE_FILE
@@ -796,12 +911,12 @@ nvs_compatible_test:
script:
# clone local test env configs
- git clone $TEST_ENV_CONFIG_REPOSITORY
- python $CHECKOUT_REF_SCRIPT ci-test-runner-configs ci-test-runner-configs
- cd ci-test-runner-configs
- python $CHECKOUT_REF_SCRIPT ci-test-runner-configs
# clone test bench
- git clone $TEST_SCRIPT_REPOSITORY
- python $CHECKOUT_REF_SCRIPT auto_test_script auto_test_script
- cd auto_test_script
- git checkout ${CI_COMMIT_REF_NAME} || echo "Using default branch..."
# prepare nvs bins
- ./Tools/prepare_nvs_bin.sh
# run test
@@ -813,22 +928,37 @@ example_test_001_01:
- ESP32
- Example_WIFI
example_test_002_01:
example_test_001_02:
<<: *example_test_template
tags:
- ESP32
- Example_ShieldBox_Basic
- Example_WIFI
example_test_006_01:
example_test_002_01:
<<: *example_test_template
image: $CI_DOCKER_REGISTRY/ubuntu-test-env$BOT_DOCKER_IMAGE_TAG
only:
variables:
- $BOT_LABEL_IPERF_STRESS_TEST
tags:
- ESP32
- Example_ShieldBox
example_test_003_01:
<<: *example_test_template
tags:
- ESP32
- Example_SDIO
example_test_004_01:
<<: *example_test_template
tags:
- ESP32
- Example_CAN
example_test_005_01:
<<: *example_test_template
tags:
- ESP32
- Example_WIFI_BT
UT_001_01:
<<: *unit_test_template
tags:
@@ -1021,61 +1151,41 @@ UT_001_32:
- ESP32_IDF
- UT_T1_1
UT_001_32:
UT_001_33:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_1
UT_001_33:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_no32kXTAL
UT_001_34:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_no32kXTAL
- UT_T1_1
UT_001_35:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_no32kXTAL
- UT_T1_1
UT_001_36:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_no32kXTAL
- psram
- UT_T1_1
UT_001_37:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_32kXTAL
- UT_T1_1
UT_001_38:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_32kXTAL
UT_001_39:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_32kXTAL
UT_001_40:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_32kXTAL
- psram
- UT_T1_1
UT_002_01:
<<: *unit_test_template
@@ -1181,7 +1291,7 @@ UT_004_10:
tags:
- ESP32_IDF
- UT_T1_1
- psram
- psram
UT_004_11:
<<: *unit_test_template
@@ -1190,6 +1300,20 @@ UT_004_11:
- UT_T1_1
- psram
UT_004_12:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_1
- psram
UT_004_13:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_1
- psram
UT_005_01:
<<: *unit_test_template
tags:
@@ -1204,6 +1328,13 @@ UT_005_02:
- UT_T1_SPIMODE
- psram
UT_005_03:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_SPIMODE
- psram
UT_006_01:
<<: *unit_test_template
tags:
@@ -1229,6 +1360,31 @@ UT_006_04:
- UT_T1_GPIO
- psram
UT_007_01:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_PCNT
UT_007_02:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_PCNT
UT_007_03:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_PCNT
UT_007_04:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_PCNT
- psram
UT_008_01:
<<: *unit_test_template
tags:
@@ -1253,6 +1409,31 @@ UT_008_04:
- ESP32_IDF
- UT_T1_LEDC
- psram
UT_009_01:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T2_RS485
UT_009_02:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T2_RS485
UT_009_03:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T2_RS485
UT_009_04:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T2_RS485
- psram
UT_010_01:
<<: *unit_test_template
@@ -1279,36 +1460,43 @@ UT_010_04:
- UT_T1_RMT
- psram
UT_017_01:
UT_011_01:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T2_1
- EMMC
UT_017_02:
UT_011_02:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T2_1
- EMMC
UT_017_03:
UT_011_03:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T2_1
- EMMC
UT_017_04:
UT_012_01:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T2_1
- psram
- UT_T1_1
- 8Mpsram
UT_017_05:
UT_012_02:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T2_1
- UT_T1_1
- 8Mpsram
UT_012_03:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_1
- 8Mpsram
UT_601_01:
@@ -1317,18 +1505,6 @@ UT_601_01:
- ESP32_IDF
- UT_T1_1
UT_601_02:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_1
UT_601_03:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_1
IT_001_01:
<<: *test_template
tags:
@@ -1479,18 +1655,6 @@ IT_006_05:
- ESP32_IDF
- SSC_T1_6
IT_006_06:
<<: *test_template
tags:
- ESP32_IDF
- SSC_T1_6
IT_006_07:
<<: *test_template
tags:
- ESP32_IDF
- SSC_T1_6
IT_007_01:
<<: *test_template
tags:
@@ -1503,12 +1667,6 @@ IT_007_02:
- ESP32_IDF
- SSC_T1_7
IT_007_03:
<<: *test_template
tags:
- ESP32_IDF
- SSC_T1_7
IT_008_01:
<<: *test_template
tags:
@@ -1527,29 +1685,11 @@ IT_010_01:
- ESP32_IDF
- SSC_T5_1
IT_010_02:
<<: *test_template
tags:
- ESP32_IDF
- SSC_T5_1
IT_010_03:
<<: *test_template
tags:
- ESP32_IDF
- SSC_T5_1
IT_010_04:
<<: *test_template
tags:
- ESP32_IDF
- SSC_T5_1
IT_011_01:
<<: *test_template
tags:
- ESP32_IDF
- SSC_T12_MESH1
- SSC_T50_1
IT_012_01:
<<: *test_template
@@ -1557,12 +1697,6 @@ IT_012_01:
- ESP32_IDF
- SSC_T1_9
IT_012_02:
<<: *test_template
tags:
- ESP32_IDF
- SSC_T1_9
IT_013_01:
<<: *test_template
tags:
@@ -1585,10 +1719,4 @@ IT_015_01:
<<: *test_template
tags:
- ESP32_IDF
- SSC_T2_4
UT_001_41:
<<: *unit_test_template
tags:
- ESP32_IDF
- UT_T1_1
- SSC_T2_4

20
.gitmodules vendored
View File

@@ -41,3 +41,23 @@
[submodule "components/mbedtls/mbedtls"]
path = components/mbedtls/mbedtls
url = https://github.com/espressif/mbedtls.git
[submodule "components/asio/asio"]
path = components/asio/asio
url = https://github.com/espressif/asio.git
[submodule "components/expat/expat"]
path = components/expat/expat
url = https://github.com/libexpat/libexpat.git
[submodule "components/lwip/lwip"]
path = components/lwip/lwip
url = https://github.com/espressif/esp-lwip.git
[submodule "components/mqtt/esp-mqtt"]
path = components/mqtt/esp-mqtt
url = https://github.com/espressif/esp-mqtt.git
[submodule "components/protobuf-c/protobuf-c"]
path = components/protobuf-c/protobuf-c
url = https://github.com/protobuf-c/protobuf-c

View File

@@ -1,16 +0,0 @@
# .readthedocs.yml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Optionally build your docs in additional formats such as PDF and ePub
formats:
- pdf
# Optionally set the version of Python and requirements required to build your docs
python:
version: 2.7
install:
- requirements: docs/requirements.txt

View File

@@ -25,6 +25,8 @@ Before sending us a Pull Request, please consider this list of points:
* Are comments and documentation written in clear English, with no spelling or grammar errors?
* 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 <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.
@@ -51,5 +53,6 @@ Related Documents
style-guide
documenting-code
creating-examples
../api-reference/template
contributor-agreement
contributor-agreement

17
Kconfig
View File

@@ -8,10 +8,6 @@ config IDF_CMAKE
bool
option env="IDF_CMAKE"
config IDF_FIRMWARE_CHIP_ID
hex
default 0x0000
menu "SDK tool configuration"
config TOOLPREFIX
string "Compiler toolchain path/prefix"
@@ -136,17 +132,17 @@ choice STACK_CHECK_MODE
- In NORMAL mode (GCC flag: -fstack-protector) only functions that call alloca,
and functions with buffers larger than 8 bytes are protected.
- STRONG mode (GCC flag: -fstack-protector-strong) is like NORMAL, but includes
additional functions to be protected -- those that have local array definitions,
or have references to local frame addresses.
- In OVERALL mode (GCC flag: -fstack-protector-all) all functions are protected.
Modes have the following impact on code performance and coverage:
- performance: NORMAL > STRONG > OVERALL
- coverage: NORMAL < STRONG < OVERALL
@@ -180,6 +176,13 @@ config WARN_WRITE_STRINGS
For C++, this warns about the deprecated conversion from string
literals to ``char *``.
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.
endmenu # Compiler Options
menu "Component config"

View File

@@ -1,6 +1,6 @@
# Espressif IoT Development Framework
[![alt text](https://readthedocs.org/projects/docs/badge/?version=latest "Documentation Status")](https://docs.espressif.com/projects/esp-idf/en/latest/?badge=latest)
[![Documentation Status](https://readthedocs.com/projects/espressif-esp-idf/badge/?version=latest)](https://docs.espressif.com/projects/esp-idf/en/latest/?badge=latest)
ESP-IDF is the official development framework for the [ESP32](https://espressif.com/en/products/hardware/esp32/overview) chip.

View File

@@ -9,8 +9,11 @@
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_PATH}/components/espcoredump:${IDF_PATH}/components/partition_table/"
export PATH="${PATH}:${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

@@ -31,10 +31,13 @@
#include "esp_log.h"
const static char *TAG = "esp_gcov_rtio";
static void (*s_gcov_exit)(void);
#if GCC_NOT_5_2_0
void __gcov_dump(void);
void __gcov_reset(void);
#else
/* The next code for old GCC */
/* TODO: remove code extracted from GCC when IDF toolchain will be updated */
/*=============== GCC CODE START ====================*/
static void (*s_gcov_exit)(void);
/* Root of a program/shared-object state */
struct gcov_root
{
@@ -53,27 +56,36 @@ static void esp_gcov_reset_status(void)
__gcov_root.dumped = 0;
__gcov_root.run_counted = 0;
}
/*=============== GCC CODE END ====================*/
#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");
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) {
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, "Failed to send files transfer stop cmd (%d)!", ret);
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... %p", s_gcov_exit);
s_gcov_exit();
ESP_EARLY_LOGV(TAG, "Free apptrace down buf");
free(down_buf);
// 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");
ret = esp_apptrace_fstop(ESP_APPTRACE_DEST_TRAX);
if (ret != ESP_OK) {
@@ -91,24 +103,26 @@ static int esp_dbg_stub_gcov_dump_do(void)
*/
static int esp_dbg_stub_gcov_entry(void)
{
#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();
// reset dump status to allow incremental data accumulation
esp_gcov_reset_status();
portEXIT_CRITICAL_NESTED(irq_state);
return ret;
#endif
}
void esp_gcov_dump()
{
#if CONFIG_FREERTOS_UNICORE == 0
// 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;
@@ -121,24 +135,27 @@ void esp_gcov_dump()
}
esp_dbg_stub_gcov_dump_do();
// reset dump status to allow incremental data accumulation
esp_gcov_reset_status();
#if CONFIG_FREERTOS_UNICORE == 0
#if !CONFIG_FREERTOS_UNICORE
esp_cpu_unstall(other_core);
#endif
portEXIT_CRITICAL_NESTED(irq_state);
}
int gcov_rtio_atexit(void (*function)(void))
int gcov_rtio_atexit(void (*function)(void) __attribute__ ((unused)))
{
#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);
return 0;
}
void *gcov_rtio_fopen(const char *path, const char *mode)
{
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
ESP_EARLY_LOGV(TAG, "%s '%s' '%s'", __FUNCTION__, path, mode);
return esp_apptrace_fopen(ESP_APPTRACE_DEST_TRAX, path, mode);
}
@@ -150,8 +167,10 @@ 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", __FUNCTION__);
return esp_apptrace_fread(ESP_APPTRACE_DEST_TRAX, ptr, size, nmemb, stream);
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;
}
size_t gcov_rtio_fwrite(const void *ptr, size_t size, size_t nmemb, void *stream)
@@ -162,17 +181,15 @@ size_t gcov_rtio_fwrite(const void *ptr, size_t size, size_t nmemb, void *stream
int gcov_rtio_fseek(void *stream, long offset, int whence)
{
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
int ret = esp_apptrace_fseek(ESP_APPTRACE_DEST_TRAX, stream, offset, whence);
ESP_EARLY_LOGV(TAG, "%s EXIT", __FUNCTION__);
ESP_EARLY_LOGV(TAG, "%s(%p %ld %d) = %d", __FUNCTION__, stream, offset, whence, ret);
return ret;
}
long gcov_rtio_ftell(void *stream)
{
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
long ret = esp_apptrace_ftell(ESP_APPTRACE_DEST_TRAX, stream);
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
ESP_EARLY_LOGV(TAG, "%s(%p) = %ld", __FUNCTION__, stream, ret);
return ret;
}
#endif

View File

@@ -279,6 +279,8 @@ static void esp_apptrace_fseek_args_prepare(uint8_t *buf, void *priv)
esp_apptrace_fseek_args_t *args = priv;
memcpy(buf, &args->file, sizeof(args->file));
memcpy(buf + sizeof(args->file), &args->offset, sizeof(args->offset));
memcpy(buf + sizeof(args->file) + sizeof(args->offset), &args->whence, sizeof(args->whence));
}
int esp_apptrace_fseek(esp_apptrace_dest_t dest, void *stream, long offset, int whence)

View File

@@ -41,6 +41,7 @@ static inline void esp_apptrace_tmo_init(esp_apptrace_tmo_t *tmo, uint32_t user_
{
tmo->start = portGET_RUN_TIME_COUNTER_VALUE();
tmo->tmo = user_tmo;
tmo->elapsed = 0;
}
/**

View File

@@ -1,102 +1,102 @@
/*********************************************************************
* SEGGER Microcontroller GmbH & Co. KG *
* The Embedded Experts *
**********************************************************************
* *
* (c) 2015 - 2017 SEGGER Microcontroller GmbH & Co. KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* SEGGER SystemView * Real-time application analysis *
* *
**********************************************************************
* *
* All rights reserved. *
* *
* SEGGER strongly recommends to not make any changes *
* to or modify the source code of this software in order to stay *
* compatible with the RTT protocol and J-Link. *
* *
* Redistribution and use in source and binary forms, with or *
* without modification, are permitted provided that the following *
* conditions are met: *
* *
* o Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* o Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
* nor the names of its contributors may be used to endorse or *
* promote products derived from this software without specific *
* prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
* DAMAGE. *
* *
**********************************************************************
* *
* SystemView version: V2.42 *
* *
**********************************************************************
----------------------------------------------------------------------
File : Global.h
Purpose : Global types
In case your application already has a Global.h, you should
merge the files. In order to use Segger code, the types
U8, U16, U32, I8, I16, I32 need to be defined in Global.h;
additional definitions do not hurt.
---------------------------END-OF-HEADER------------------------------
*/
#ifndef GLOBAL_H // Guard against multiple inclusion
#define GLOBAL_H
#define U8 unsigned char
#define U16 unsigned short
#define U32 unsigned long
#define I8 signed char
#define I16 signed short
#define I32 signed long
#ifdef _WIN32
//
// Microsoft VC6 compiler related
//
#define U64 unsigned __int64
#define U128 unsigned __int128
#define I64 __int64
#define I128 __int128
#if _MSC_VER <= 1200
#define U64_C(x) x##UI64
#else
#define U64_C(x) x##ULL
#endif
#else
//
// C99 compliant compiler
//
#define U64 unsigned long long
#define I64 signed long long
#define U64_C(x) x##ULL
#endif
#endif // Avoid multiple inclusion
/*************************** End of file ****************************/
/*********************************************************************
* SEGGER Microcontroller GmbH & Co. KG *
* The Embedded Experts *
**********************************************************************
* *
* (c) 2015 - 2017 SEGGER Microcontroller GmbH & Co. KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* SEGGER SystemView * Real-time application analysis *
* *
**********************************************************************
* *
* All rights reserved. *
* *
* SEGGER strongly recommends to not make any changes *
* to or modify the source code of this software in order to stay *
* compatible with the RTT protocol and J-Link. *
* *
* Redistribution and use in source and binary forms, with or *
* without modification, are permitted provided that the following *
* conditions are met: *
* *
* o Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* o Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
* nor the names of its contributors may be used to endorse or *
* promote products derived from this software without specific *
* prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
* DAMAGE. *
* *
**********************************************************************
* *
* SystemView version: V2.42 *
* *
**********************************************************************
----------------------------------------------------------------------
File : Global.h
Purpose : Global types
In case your application already has a Global.h, you should
merge the files. In order to use Segger code, the types
U8, U16, U32, I8, I16, I32 need to be defined in Global.h;
additional definitions do not hurt.
---------------------------END-OF-HEADER------------------------------
*/
#ifndef GLOBAL_H // Guard against multiple inclusion
#define GLOBAL_H
#define U8 unsigned char
#define U16 unsigned short
#define U32 unsigned long
#define I8 signed char
#define I16 signed short
#define I32 signed long
#ifdef _WIN32
//
// Microsoft VC6 compiler related
//
#define U64 unsigned __int64
#define U128 unsigned __int128
#define I64 __int64
#define I128 __int128
#if _MSC_VER <= 1200
#define U64_C(x) x##UI64
#else
#define U64_C(x) x##ULL
#endif
#else
//
// C99 compliant compiler
//
#define U64 unsigned long long
#define I64 signed long long
#define U64_C(x) x##ULL
#endif
#endif // Avoid multiple inclusion
/*************************** End of file ****************************/

View File

@@ -1,298 +1,298 @@
/*********************************************************************
* SEGGER Microcontroller GmbH & Co. KG *
* The Embedded Experts *
**********************************************************************
* *
* (c) 2015 - 2017 SEGGER Microcontroller GmbH & Co. KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* SEGGER SystemView * Real-time application analysis *
* *
**********************************************************************
* *
* All rights reserved. *
* *
* SEGGER strongly recommends to not make any changes *
* to or modify the source code of this software in order to stay *
* compatible with the RTT protocol and J-Link. *
* *
* Redistribution and use in source and binary forms, with or *
* without modification, are permitted provided that the following *
* conditions are met: *
* *
* o Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* o Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
* nor the names of its contributors may be used to endorse or *
* promote products derived from this software without specific *
* prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
* DAMAGE. *
* *
**********************************************************************
* *
* SystemView version: V2.42 *
* *
**********************************************************************
---------------------------END-OF-HEADER------------------------------
File : SEGGER_RTT_Conf.h
Purpose : Implementation of SEGGER real-time transfer (RTT) which
allows real-time communication on targets which support
debugger memory accesses while the CPU is running.
Revision: $Rev: 5626 $
*/
#ifndef SEGGER_RTT_CONF_H
#define SEGGER_RTT_CONF_H
#ifdef __IAR_SYSTEMS_ICC__
#include <intrinsics.h>
#endif
/*********************************************************************
*
* Defines, configurable
*
**********************************************************************
*/
#define SEGGER_RTT_MAX_NUM_UP_BUFFERS (3) // Max. number of up-buffers (T->H) available on this target (Default: 3)
#define SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (3) // Max. number of down-buffers (H->T) available on this target (Default: 3)
#define BUFFER_SIZE_UP (1024) // Size of the buffer for terminal output of target, up to host (Default: 1k)
#define BUFFER_SIZE_DOWN (16) // Size of the buffer for terminal input to target from host (Usually keyboard input) (Default: 16)
#define SEGGER_RTT_PRINTF_BUFFER_SIZE (64u) // Size of buffer for RTT printf to bulk-send chars via RTT (Default: 64)
#define SEGGER_RTT_MODE_DEFAULT SEGGER_RTT_MODE_NO_BLOCK_SKIP // Mode for pre-initialized terminal channel (buffer 0)
//
// Target is not allowed to perform other RTT operations while string still has not been stored completely.
// Otherwise we would probably end up with a mixed string in the buffer.
// If using RTT from within interrupts, multiple tasks or multi processors, define the SEGGER_RTT_LOCK() and SEGGER_RTT_UNLOCK() function here.
//
// SEGGER_RTT_MAX_INTERRUPT_PRIORITY can be used in the sample lock routines on Cortex-M3/4.
// Make sure to mask all interrupts which can send RTT data, i.e. generate SystemView events, or cause task switches.
// When high-priority interrupts must not be masked while sending RTT data, SEGGER_RTT_MAX_INTERRUPT_PRIORITY needs to be adjusted accordingly.
// (Higher priority = lower priority number)
// Default value for embOS: 128u
// Default configuration in FreeRTOS: configMAX_SYSCALL_INTERRUPT_PRIORITY: ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
// In case of doubt mask all interrupts: 1 << (8 - BASEPRI_PRIO_BITS) i.e. 1 << 5 when 3 bits are implemented in NVIC
// or define SEGGER_RTT_LOCK() to completely disable interrupts.
//
#define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) // Interrupt priority to lock on SEGGER_RTT_LOCK on Cortex-M3/4 (Default: 0x20)
/*********************************************************************
*
* RTT lock configuration for SEGGER Embedded Studio,
* Rowley CrossStudio and GCC
*/
#if (defined __SES_ARM) || (defined __CROSSWORKS_ARM) || (defined __GNUC__)
#ifdef __ARM_ARCH_6M__
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
__asm volatile ("mrs %0, primask \n\t" \
"mov r1, $1 \n\t" \
"msr primask, r1 \n\t" \
: "=r" (LockState) \
: \
: "r1" \
);
#define SEGGER_RTT_UNLOCK() __asm volatile ("msr primask, %0 \n\t" \
: \
: "r" (LockState) \
: \
); \
}
#elif (defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__))
#ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY
#define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)
#endif
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
__asm volatile ("mrs %0, basepri \n\t" \
"mov r1, %1 \n\t" \
"msr basepri, r1 \n\t" \
: "=r" (LockState) \
: "i"(SEGGER_RTT_MAX_INTERRUPT_PRIORITY) \
: "r1" \
);
#define SEGGER_RTT_UNLOCK() __asm volatile ("msr basepri, %0 \n\t" \
: \
: "r" (LockState) \
: \
); \
}
#elif defined(__ARM_ARCH_7A__)
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
__asm volatile ("mrs r1, CPSR \n\t" \
"mov %0, r1 \n\t" \
"orr r1, r1, #0xC0 \n\t" \
"msr CPSR_c, r1 \n\t" \
: "=r" (LockState) \
: \
: "r1" \
);
#define SEGGER_RTT_UNLOCK() __asm volatile ("mov r0, %0 \n\t" \
"mrs r1, CPSR \n\t" \
"bic r1, r1, #0xC0 \n\t" \
"and r0, r0, #0xC0 \n\t" \
"orr r1, r1, r0 \n\t" \
"msr CPSR_c, r1 \n\t" \
: \
: "r" (LockState) \
: "r0", "r1" \
); \
}
#else
#define SEGGER_RTT_LOCK()
#define SEGGER_RTT_UNLOCK()
#endif
#endif
/*********************************************************************
*
* RTT lock configuration for IAR EWARM
*/
#ifdef __ICCARM__
#if (defined (__ARM6M__) && (__CORE__ == __ARM6M__))
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
LockState = __get_PRIMASK(); \
__set_PRIMASK(1);
#define SEGGER_RTT_UNLOCK() __set_PRIMASK(LockState); \
}
#elif ((defined (__ARM7EM__) && (__CORE__ == __ARM7EM__)) || (defined (__ARM7M__) && (__CORE__ == __ARM7M__)))
#ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY
#define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)
#endif
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
LockState = __get_BASEPRI(); \
__set_BASEPRI(SEGGER_RTT_MAX_INTERRUPT_PRIORITY);
#define SEGGER_RTT_UNLOCK() __set_BASEPRI(LockState); \
}
#endif
#endif
/*********************************************************************
*
* RTT lock configuration for IAR RX
*/
#ifdef __ICCRX__
#define SEGGER_RTT_LOCK() { \
unsigned long LockState; \
LockState = __get_interrupt_state(); \
__disable_interrupt();
#define SEGGER_RTT_UNLOCK() __set_interrupt_state(LockState); \
}
#endif
/*********************************************************************
*
* RTT lock configuration for KEIL ARM
*/
#ifdef __CC_ARM
#if (defined __TARGET_ARCH_6S_M)
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
register unsigned char PRIMASK __asm( "primask"); \
LockState = PRIMASK; \
PRIMASK = 1u; \
__schedule_barrier();
#define SEGGER_RTT_UNLOCK() PRIMASK = LockState; \
__schedule_barrier(); \
}
#elif (defined(__TARGET_ARCH_7_M) || defined(__TARGET_ARCH_7E_M))
#ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY
#define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)
#endif
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
register unsigned char BASEPRI __asm( "basepri"); \
LockState = BASEPRI; \
BASEPRI = SEGGER_RTT_MAX_INTERRUPT_PRIORITY; \
__schedule_barrier();
#define SEGGER_RTT_UNLOCK() BASEPRI = LockState; \
__schedule_barrier(); \
}
#endif
#endif
/*********************************************************************
*
* RTT lock configuration for TI ARM
*/
#ifdef __TI_ARM__
#if defined (__TI_ARM_V6M0__)
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
LockState = __get_PRIMASK(); \
__set_PRIMASK(1);
#define SEGGER_RTT_UNLOCK() __set_PRIMASK(LockState); \
}
#elif (defined (__TI_ARM_V7M3__) || defined (__TI_ARM_V7M4__))
#ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY
#define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)
#endif
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
LockState = OS_GetBASEPRI(); \
OS_SetBASEPRI(SEGGER_RTT_MAX_INTERRUPT_PRIORITY);
#define SEGGER_RTT_UNLOCK() OS_SetBASEPRI(LockState); \
}
#endif
#endif
/*********************************************************************
*
* RTT lock configuration fallback
*/
#ifndef SEGGER_RTT_LOCK
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();
#define SEGGER_RTT_UNLOCK() SEGGER_SYSVIEW_X_RTT_Unlock() // Unlock RTT (nestable) (i.e. enable previous interrupt lock state)
#endif
#endif
/*************************** End of file ****************************/
/*********************************************************************
* SEGGER Microcontroller GmbH & Co. KG *
* The Embedded Experts *
**********************************************************************
* *
* (c) 2015 - 2017 SEGGER Microcontroller GmbH & Co. KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* SEGGER SystemView * Real-time application analysis *
* *
**********************************************************************
* *
* All rights reserved. *
* *
* SEGGER strongly recommends to not make any changes *
* to or modify the source code of this software in order to stay *
* compatible with the RTT protocol and J-Link. *
* *
* Redistribution and use in source and binary forms, with or *
* without modification, are permitted provided that the following *
* conditions are met: *
* *
* o Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* o Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
* nor the names of its contributors may be used to endorse or *
* promote products derived from this software without specific *
* prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
* DAMAGE. *
* *
**********************************************************************
* *
* SystemView version: V2.42 *
* *
**********************************************************************
---------------------------END-OF-HEADER------------------------------
File : SEGGER_RTT_Conf.h
Purpose : Implementation of SEGGER real-time transfer (RTT) which
allows real-time communication on targets which support
debugger memory accesses while the CPU is running.
Revision: $Rev: 5626 $
*/
#ifndef SEGGER_RTT_CONF_H
#define SEGGER_RTT_CONF_H
#ifdef __IAR_SYSTEMS_ICC__
#include <intrinsics.h>
#endif
/*********************************************************************
*
* Defines, configurable
*
**********************************************************************
*/
#define SEGGER_RTT_MAX_NUM_UP_BUFFERS (3) // Max. number of up-buffers (T->H) available on this target (Default: 3)
#define SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (3) // Max. number of down-buffers (H->T) available on this target (Default: 3)
#define BUFFER_SIZE_UP (1024) // Size of the buffer for terminal output of target, up to host (Default: 1k)
#define BUFFER_SIZE_DOWN (16) // Size of the buffer for terminal input to target from host (Usually keyboard input) (Default: 16)
#define SEGGER_RTT_PRINTF_BUFFER_SIZE (64u) // Size of buffer for RTT printf to bulk-send chars via RTT (Default: 64)
#define SEGGER_RTT_MODE_DEFAULT SEGGER_RTT_MODE_NO_BLOCK_SKIP // Mode for pre-initialized terminal channel (buffer 0)
//
// Target is not allowed to perform other RTT operations while string still has not been stored completely.
// Otherwise we would probably end up with a mixed string in the buffer.
// If using RTT from within interrupts, multiple tasks or multi processors, define the SEGGER_RTT_LOCK() and SEGGER_RTT_UNLOCK() function here.
//
// SEGGER_RTT_MAX_INTERRUPT_PRIORITY can be used in the sample lock routines on Cortex-M3/4.
// Make sure to mask all interrupts which can send RTT data, i.e. generate SystemView events, or cause task switches.
// When high-priority interrupts must not be masked while sending RTT data, SEGGER_RTT_MAX_INTERRUPT_PRIORITY needs to be adjusted accordingly.
// (Higher priority = lower priority number)
// Default value for embOS: 128u
// Default configuration in FreeRTOS: configMAX_SYSCALL_INTERRUPT_PRIORITY: ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
// In case of doubt mask all interrupts: 1 << (8 - BASEPRI_PRIO_BITS) i.e. 1 << 5 when 3 bits are implemented in NVIC
// or define SEGGER_RTT_LOCK() to completely disable interrupts.
//
#define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) // Interrupt priority to lock on SEGGER_RTT_LOCK on Cortex-M3/4 (Default: 0x20)
/*********************************************************************
*
* RTT lock configuration for SEGGER Embedded Studio,
* Rowley CrossStudio and GCC
*/
#if (defined __SES_ARM) || (defined __CROSSWORKS_ARM) || (defined __GNUC__)
#ifdef __ARM_ARCH_6M__
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
__asm volatile ("mrs %0, primask \n\t" \
"mov r1, $1 \n\t" \
"msr primask, r1 \n\t" \
: "=r" (LockState) \
: \
: "r1" \
);
#define SEGGER_RTT_UNLOCK() __asm volatile ("msr primask, %0 \n\t" \
: \
: "r" (LockState) \
: \
); \
}
#elif (defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__))
#ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY
#define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)
#endif
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
__asm volatile ("mrs %0, basepri \n\t" \
"mov r1, %1 \n\t" \
"msr basepri, r1 \n\t" \
: "=r" (LockState) \
: "i"(SEGGER_RTT_MAX_INTERRUPT_PRIORITY) \
: "r1" \
);
#define SEGGER_RTT_UNLOCK() __asm volatile ("msr basepri, %0 \n\t" \
: \
: "r" (LockState) \
: \
); \
}
#elif defined(__ARM_ARCH_7A__)
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
__asm volatile ("mrs r1, CPSR \n\t" \
"mov %0, r1 \n\t" \
"orr r1, r1, #0xC0 \n\t" \
"msr CPSR_c, r1 \n\t" \
: "=r" (LockState) \
: \
: "r1" \
);
#define SEGGER_RTT_UNLOCK() __asm volatile ("mov r0, %0 \n\t" \
"mrs r1, CPSR \n\t" \
"bic r1, r1, #0xC0 \n\t" \
"and r0, r0, #0xC0 \n\t" \
"orr r1, r1, r0 \n\t" \
"msr CPSR_c, r1 \n\t" \
: \
: "r" (LockState) \
: "r0", "r1" \
); \
}
#else
#define SEGGER_RTT_LOCK()
#define SEGGER_RTT_UNLOCK()
#endif
#endif
/*********************************************************************
*
* RTT lock configuration for IAR EWARM
*/
#ifdef __ICCARM__
#if (defined (__ARM6M__) && (__CORE__ == __ARM6M__))
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
LockState = __get_PRIMASK(); \
__set_PRIMASK(1);
#define SEGGER_RTT_UNLOCK() __set_PRIMASK(LockState); \
}
#elif ((defined (__ARM7EM__) && (__CORE__ == __ARM7EM__)) || (defined (__ARM7M__) && (__CORE__ == __ARM7M__)))
#ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY
#define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)
#endif
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
LockState = __get_BASEPRI(); \
__set_BASEPRI(SEGGER_RTT_MAX_INTERRUPT_PRIORITY);
#define SEGGER_RTT_UNLOCK() __set_BASEPRI(LockState); \
}
#endif
#endif
/*********************************************************************
*
* RTT lock configuration for IAR RX
*/
#ifdef __ICCRX__
#define SEGGER_RTT_LOCK() { \
unsigned long LockState; \
LockState = __get_interrupt_state(); \
__disable_interrupt();
#define SEGGER_RTT_UNLOCK() __set_interrupt_state(LockState); \
}
#endif
/*********************************************************************
*
* RTT lock configuration for KEIL ARM
*/
#ifdef __CC_ARM
#if (defined __TARGET_ARCH_6S_M)
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
register unsigned char PRIMASK __asm( "primask"); \
LockState = PRIMASK; \
PRIMASK = 1u; \
__schedule_barrier();
#define SEGGER_RTT_UNLOCK() PRIMASK = LockState; \
__schedule_barrier(); \
}
#elif (defined(__TARGET_ARCH_7_M) || defined(__TARGET_ARCH_7E_M))
#ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY
#define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)
#endif
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
register unsigned char BASEPRI __asm( "basepri"); \
LockState = BASEPRI; \
BASEPRI = SEGGER_RTT_MAX_INTERRUPT_PRIORITY; \
__schedule_barrier();
#define SEGGER_RTT_UNLOCK() BASEPRI = LockState; \
__schedule_barrier(); \
}
#endif
#endif
/*********************************************************************
*
* RTT lock configuration for TI ARM
*/
#ifdef __TI_ARM__
#if defined (__TI_ARM_V6M0__)
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
LockState = __get_PRIMASK(); \
__set_PRIMASK(1);
#define SEGGER_RTT_UNLOCK() __set_PRIMASK(LockState); \
}
#elif (defined (__TI_ARM_V7M3__) || defined (__TI_ARM_V7M4__))
#ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY
#define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20)
#endif
#define SEGGER_RTT_LOCK() { \
unsigned int LockState; \
LockState = OS_GetBASEPRI(); \
OS_SetBASEPRI(SEGGER_RTT_MAX_INTERRUPT_PRIORITY);
#define SEGGER_RTT_UNLOCK() OS_SetBASEPRI(LockState); \
}
#endif
#endif
/*********************************************************************
*
* RTT lock configuration fallback
*/
#ifndef SEGGER_RTT_LOCK
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();
#define SEGGER_RTT_UNLOCK() SEGGER_SYSVIEW_X_RTT_Unlock() // Unlock RTT (nestable) (i.e. enable previous interrupt lock state)
#endif
#endif
/*************************** End of file ****************************/

View File

@@ -1,176 +1,176 @@
/*********************************************************************
* SEGGER Microcontroller GmbH & Co. KG *
* The Embedded Experts *
**********************************************************************
* *
* (c) 2015 - 2017 SEGGER Microcontroller GmbH & Co. KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* SEGGER SystemView * Real-time application analysis *
* *
**********************************************************************
* *
* All rights reserved. *
* *
* SEGGER strongly recommends to not make any changes *
* to or modify the source code of this software in order to stay *
* compatible with the RTT protocol and J-Link. *
* *
* Redistribution and use in source and binary forms, with or *
* without modification, are permitted provided that the following *
* conditions are met: *
* *
* o Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* o Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
* nor the names of its contributors may be used to endorse or *
* promote products derived from this software without specific *
* prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
* DAMAGE. *
* *
**********************************************************************
* *
* SystemView version: V2.42 *
* *
**********************************************************************
-------------------------- END-OF-HEADER -----------------------------
File : SEGGER_SYSVIEW_Conf.h
Purpose : SEGGER SystemView configuration.
Revision: $Rev: 5927 $
*/
#ifndef SEGGER_SYSVIEW_CONF_H
#define SEGGER_SYSVIEW_CONF_H
/*********************************************************************
*
* Defines, fixed
*
**********************************************************************
*/
//
// Constants for known core configuration
//
#define SEGGER_SYSVIEW_CORE_OTHER 0
#define SEGGER_SYSVIEW_CORE_CM0 1 // Cortex-M0/M0+/M1
#define SEGGER_SYSVIEW_CORE_CM3 2 // Cortex-M3/M4/M7
#define SEGGER_SYSVIEW_CORE_RX 3 // Renesas RX
#if (defined __SES_ARM) || (defined __CROSSWORKS_ARM) || (defined __GNUC__)
#ifdef __ARM_ARCH_6M__
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM0
#elif (defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__))
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM3
#endif
#elif defined(__ICCARM__)
#if (defined (__ARM6M__) && (__CORE__ == __ARM6M__))
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM0
#elif ((defined (__ARM7M__) && (__CORE__ == __ARM7M__)) || (defined (__ARM7EM__) && (__CORE__ == __ARM7EM__)))
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM3
#endif
#elif defined(__CC_ARM)
#if (defined(__TARGET_ARCH_6S_M))
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM0
#elif (defined(__TARGET_ARCH_7_M) || defined(__TARGET_ARCH_7E_M))
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM3
#endif
#elif defined(__TI_ARM__)
#ifdef __TI_ARM_V6M0__
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM0
#elif (defined(__TI_ARM_V7M3__) || defined(__TI_ARM_V7M4__))
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM3
#endif
#elif defined(__ICCRX__)
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_RX
#elif defined(__RX)
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_RX
#endif
#ifndef SEGGER_SYSVIEW_CORE
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_OTHER
#endif
/*********************************************************************
*
* Defines, configurable
*
**********************************************************************
*/
/*********************************************************************
*
* SystemView buffer configuration
*/
#define SEGGER_SYSVIEW_RTT_BUFFER_SIZE 1024 // Number of bytes that SystemView uses for the buffer.
#define SEGGER_SYSVIEW_RTT_CHANNEL 1 // The RTT channel that SystemView will use. 0: Auto selection
#define SEGGER_SYSVIEW_USE_STATIC_BUFFER 1 // Use a static buffer to generate events instead of a buffer on the stack
#define SEGGER_SYSVIEW_POST_MORTEM_MODE 0 // 1: Enable post mortem analysis mode
/*********************************************************************
*
* SystemView timestamp configuration
*/
#if SEGGER_SYSVIEW_CORE == SEGGER_SYSVIEW_CORE_CM3
#define SEGGER_SYSVIEW_GET_TIMESTAMP() (*(U32 *)(0xE0001004)) // Retrieve a system timestamp. Cortex-M cycle counter.
#define SEGGER_SYSVIEW_TIMESTAMP_BITS 32 // Define number of valid bits low-order delivered by clock source
#else
#define SEGGER_SYSVIEW_GET_TIMESTAMP() SEGGER_SYSVIEW_X_GetTimestamp() // Retrieve a system timestamp via user-defined function
#define SEGGER_SYSVIEW_TIMESTAMP_BITS 32 // Define number of valid bits low-order delivered by SEGGER_SYSVIEW_X_GetTimestamp()
#endif
/*********************************************************************
*
* SystemView Id configuration
*/
//TODO: optimise it
#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)
/*********************************************************************
*
* SystemView interrupt configuration
*/
#if SEGGER_SYSVIEW_CORE == SEGGER_SYSVIEW_CORE_CM3
#define SEGGER_SYSVIEW_GET_INTERRUPT_ID() ((*(U32 *)(0xE000ED04)) & 0x1FF) // Get the currently active interrupt Id. (i.e. read Cortex-M ICSR[8:0] = active vector)
#elif SEGGER_SYSVIEW_CORE == SEGGER_SYSVIEW_CORE_CM0
#if defined(__ICCARM__)
#define SEGGER_SYSVIEW_GET_INTERRUPT_ID() (__get_IPSR()) // Workaround for IAR, which might do a byte-access to 0xE000ED04. Read IPSR instead.
#else
#define SEGGER_SYSVIEW_GET_INTERRUPT_ID() ((*(U32 *)(0xE000ED04)) & 0x3F) // Get the currently active interrupt Id. (i.e. read Cortex-M ICSR[5:0] = active vector)
#endif
#else
#define SEGGER_SYSVIEW_GET_INTERRUPT_ID() SEGGER_SYSVIEW_X_GetInterruptId() // Get the currently active interrupt Id from the user-provided function.
#endif
void SEGGER_SYSVIEW_X_SysView_Lock();
void SEGGER_SYSVIEW_X_SysView_Unlock();
#define SEGGER_SYSVIEW_LOCK() SEGGER_SYSVIEW_X_SysView_Lock()
#define SEGGER_SYSVIEW_UNLOCK() SEGGER_SYSVIEW_X_SysView_Unlock()
#endif // SEGGER_SYSVIEW_CONF_H
/*************************** End of file ****************************/
/*********************************************************************
* SEGGER Microcontroller GmbH & Co. KG *
* The Embedded Experts *
**********************************************************************
* *
* (c) 2015 - 2017 SEGGER Microcontroller GmbH & Co. KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* SEGGER SystemView * Real-time application analysis *
* *
**********************************************************************
* *
* All rights reserved. *
* *
* SEGGER strongly recommends to not make any changes *
* to or modify the source code of this software in order to stay *
* compatible with the RTT protocol and J-Link. *
* *
* Redistribution and use in source and binary forms, with or *
* without modification, are permitted provided that the following *
* conditions are met: *
* *
* o Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* o Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
* nor the names of its contributors may be used to endorse or *
* promote products derived from this software without specific *
* prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
* DAMAGE. *
* *
**********************************************************************
* *
* SystemView version: V2.42 *
* *
**********************************************************************
-------------------------- END-OF-HEADER -----------------------------
File : SEGGER_SYSVIEW_Conf.h
Purpose : SEGGER SystemView configuration.
Revision: $Rev: 5927 $
*/
#ifndef SEGGER_SYSVIEW_CONF_H
#define SEGGER_SYSVIEW_CONF_H
/*********************************************************************
*
* Defines, fixed
*
**********************************************************************
*/
//
// Constants for known core configuration
//
#define SEGGER_SYSVIEW_CORE_OTHER 0
#define SEGGER_SYSVIEW_CORE_CM0 1 // Cortex-M0/M0+/M1
#define SEGGER_SYSVIEW_CORE_CM3 2 // Cortex-M3/M4/M7
#define SEGGER_SYSVIEW_CORE_RX 3 // Renesas RX
#if (defined __SES_ARM) || (defined __CROSSWORKS_ARM) || (defined __GNUC__)
#ifdef __ARM_ARCH_6M__
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM0
#elif (defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__))
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM3
#endif
#elif defined(__ICCARM__)
#if (defined (__ARM6M__) && (__CORE__ == __ARM6M__))
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM0
#elif ((defined (__ARM7M__) && (__CORE__ == __ARM7M__)) || (defined (__ARM7EM__) && (__CORE__ == __ARM7EM__)))
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM3
#endif
#elif defined(__CC_ARM)
#if (defined(__TARGET_ARCH_6S_M))
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM0
#elif (defined(__TARGET_ARCH_7_M) || defined(__TARGET_ARCH_7E_M))
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM3
#endif
#elif defined(__TI_ARM__)
#ifdef __TI_ARM_V6M0__
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM0
#elif (defined(__TI_ARM_V7M3__) || defined(__TI_ARM_V7M4__))
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM3
#endif
#elif defined(__ICCRX__)
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_RX
#elif defined(__RX)
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_RX
#endif
#ifndef SEGGER_SYSVIEW_CORE
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_OTHER
#endif
/*********************************************************************
*
* Defines, configurable
*
**********************************************************************
*/
/*********************************************************************
*
* SystemView buffer configuration
*/
#define SEGGER_SYSVIEW_RTT_BUFFER_SIZE 1024 // Number of bytes that SystemView uses for the buffer.
#define SEGGER_SYSVIEW_RTT_CHANNEL 1 // The RTT channel that SystemView will use. 0: Auto selection
#define SEGGER_SYSVIEW_USE_STATIC_BUFFER 1 // Use a static buffer to generate events instead of a buffer on the stack
#define SEGGER_SYSVIEW_POST_MORTEM_MODE 0 // 1: Enable post mortem analysis mode
/*********************************************************************
*
* SystemView timestamp configuration
*/
#if SEGGER_SYSVIEW_CORE == SEGGER_SYSVIEW_CORE_CM3
#define SEGGER_SYSVIEW_GET_TIMESTAMP() (*(U32 *)(0xE0001004)) // Retrieve a system timestamp. Cortex-M cycle counter.
#define SEGGER_SYSVIEW_TIMESTAMP_BITS 32 // Define number of valid bits low-order delivered by clock source
#else
#define SEGGER_SYSVIEW_GET_TIMESTAMP() SEGGER_SYSVIEW_X_GetTimestamp() // Retrieve a system timestamp via user-defined function
#define SEGGER_SYSVIEW_TIMESTAMP_BITS 32 // Define number of valid bits low-order delivered by SEGGER_SYSVIEW_X_GetTimestamp()
#endif
/*********************************************************************
*
* SystemView Id configuration
*/
//TODO: optimise it
#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)
/*********************************************************************
*
* SystemView interrupt configuration
*/
#if SEGGER_SYSVIEW_CORE == SEGGER_SYSVIEW_CORE_CM3
#define SEGGER_SYSVIEW_GET_INTERRUPT_ID() ((*(U32 *)(0xE000ED04)) & 0x1FF) // Get the currently active interrupt Id. (i.e. read Cortex-M ICSR[8:0] = active vector)
#elif SEGGER_SYSVIEW_CORE == SEGGER_SYSVIEW_CORE_CM0
#if defined(__ICCARM__)
#define SEGGER_SYSVIEW_GET_INTERRUPT_ID() (__get_IPSR()) // Workaround for IAR, which might do a byte-access to 0xE000ED04. Read IPSR instead.
#else
#define SEGGER_SYSVIEW_GET_INTERRUPT_ID() ((*(U32 *)(0xE000ED04)) & 0x3F) // Get the currently active interrupt Id. (i.e. read Cortex-M ICSR[5:0] = active vector)
#endif
#else
#define SEGGER_SYSVIEW_GET_INTERRUPT_ID() SEGGER_SYSVIEW_X_GetInterruptId() // Get the currently active interrupt Id from the user-provided function.
#endif
void SEGGER_SYSVIEW_X_SysView_Lock();
void SEGGER_SYSVIEW_X_SysView_Unlock();
#define SEGGER_SYSVIEW_LOCK() SEGGER_SYSVIEW_X_SysView_Lock()
#define SEGGER_SYSVIEW_UNLOCK() SEGGER_SYSVIEW_X_SysView_Unlock()
#endif // SEGGER_SYSVIEW_CONF_H
/*************************** End of file ****************************/

View File

@@ -1,155 +1,155 @@
/*********************************************************************
* SEGGER Microcontroller GmbH & Co. KG *
* The Embedded Experts *
**********************************************************************
* *
* (c) 2015 - 2017 SEGGER Microcontroller GmbH & Co. KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* SEGGER SystemView * Real-time application analysis *
* *
**********************************************************************
* *
* All rights reserved. *
* *
* SEGGER strongly recommends to not make any changes *
* to or modify the source code of this software in order to stay *
* compatible with the RTT protocol and J-Link. *
* *
* Redistribution and use in source and binary forms, with or *
* without modification, are permitted provided that the following *
* conditions are met: *
* *
* o Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* o Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
* nor the names of its contributors may be used to endorse or *
* promote products derived from this software without specific *
* prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
* DAMAGE. *
* *
**********************************************************************
* *
* SystemView version: V2.42 *
* *
**********************************************************************
----------------------------------------------------------------------
File : SEGGER.h
Purpose : Global types etc & general purpose utility functions
---------------------------END-OF-HEADER------------------------------
*/
#ifndef SEGGER_H // Guard against multiple inclusion
#define SEGGER_H
#include "Global.h" // Type definitions: U8, U16, U32, I8, I16, I32
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*********************************************************************
*
* Keywords/specifiers
*
**********************************************************************
*/
#ifndef INLINE
#ifdef _WIN32
//
// Microsoft VC6 and newer.
// Force inlining without cost checking.
//
#define INLINE __forceinline
#else
#if (defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__) || defined(__RX) || defined(__ICCRX__))
//
// Other known compilers.
//
#define INLINE inline
#else
//
// Unknown compilers.
//
#define INLINE
#endif
#endif
#endif
/*********************************************************************
*
* Function-like macros
*
**********************************************************************
*/
#define SEGGER_COUNTOF(a) (sizeof((a))/sizeof((a)[0]))
#define SEGGER_MIN(a,b) (((a) < (b)) ? (a) : (b))
#define SEGGER_MAX(a,b) (((a) > (b)) ? (a) : (b))
/*********************************************************************
*
* Types
*
**********************************************************************
*/
typedef struct {
char *pBuffer;
int BufferSize;
int Cnt;
} SEGGER_BUFFER_DESC;
typedef struct {
int CacheLineSize; // 0: No Cache. Most Systems such as ARM9 use a 32 bytes cache line size.
void (*pfDMB) (void); // Optional DMB function for Data Memory Barrier to make sure all memory operations are completed.
void (*pfClean) (void *p, unsigned NumBytes); // Optional clean function for cached memory.
void (*pfInvalidate)(void *p, unsigned NumBytes); // Optional invalidate function for cached memory.
} SEGGER_CACHE_CONFIG;
/*********************************************************************
*
* Utility functions
*
**********************************************************************
*/
void SEGGER_ARM_memcpy (void *pDest, const void *pSrc, int NumBytes);
void SEGGER_memcpy (void *pDest, const void *pSrc, int NumBytes);
void SEGGER_memxor (void *pDest, const void *pSrc, unsigned NumBytes);
void SEGGER_StoreChar (SEGGER_BUFFER_DESC *p, char c);
void SEGGER_PrintUnsigned(SEGGER_BUFFER_DESC *pBufferDesc, U32 v, unsigned Base, int NumDigits);
void SEGGER_PrintInt (SEGGER_BUFFER_DESC *pBufferDesc, I32 v, unsigned Base, unsigned NumDigits);
int SEGGER_snprintf (char *pBuffer, int BufferSize, const char *sFormat, ...);
#if defined(__cplusplus)
} /* Make sure we have C-declarations in C++ programs */
#endif
#endif // Avoid multiple inclusion
/*************************** End of file ****************************/
/*********************************************************************
* SEGGER Microcontroller GmbH & Co. KG *
* The Embedded Experts *
**********************************************************************
* *
* (c) 2015 - 2017 SEGGER Microcontroller GmbH & Co. KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* SEGGER SystemView * Real-time application analysis *
* *
**********************************************************************
* *
* All rights reserved. *
* *
* SEGGER strongly recommends to not make any changes *
* to or modify the source code of this software in order to stay *
* compatible with the RTT protocol and J-Link. *
* *
* Redistribution and use in source and binary forms, with or *
* without modification, are permitted provided that the following *
* conditions are met: *
* *
* o Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* o Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
* nor the names of its contributors may be used to endorse or *
* promote products derived from this software without specific *
* prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
* DAMAGE. *
* *
**********************************************************************
* *
* SystemView version: V2.42 *
* *
**********************************************************************
----------------------------------------------------------------------
File : SEGGER.h
Purpose : Global types etc & general purpose utility functions
---------------------------END-OF-HEADER------------------------------
*/
#ifndef SEGGER_H // Guard against multiple inclusion
#define SEGGER_H
#include "Global.h" // Type definitions: U8, U16, U32, I8, I16, I32
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*********************************************************************
*
* Keywords/specifiers
*
**********************************************************************
*/
#ifndef INLINE
#ifdef _WIN32
//
// Microsoft VC6 and newer.
// Force inlining without cost checking.
//
#define INLINE __forceinline
#else
#if (defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__) || defined(__RX) || defined(__ICCRX__))
//
// Other known compilers.
//
#define INLINE inline
#else
//
// Unknown compilers.
//
#define INLINE
#endif
#endif
#endif
/*********************************************************************
*
* Function-like macros
*
**********************************************************************
*/
#define SEGGER_COUNTOF(a) (sizeof((a))/sizeof((a)[0]))
#define SEGGER_MIN(a,b) (((a) < (b)) ? (a) : (b))
#define SEGGER_MAX(a,b) (((a) > (b)) ? (a) : (b))
/*********************************************************************
*
* Types
*
**********************************************************************
*/
typedef struct {
char *pBuffer;
int BufferSize;
int Cnt;
} SEGGER_BUFFER_DESC;
typedef struct {
int CacheLineSize; // 0: No Cache. Most Systems such as ARM9 use a 32 bytes cache line size.
void (*pfDMB) (void); // Optional DMB function for Data Memory Barrier to make sure all memory operations are completed.
void (*pfClean) (void *p, unsigned NumBytes); // Optional clean function for cached memory.
void (*pfInvalidate)(void *p, unsigned NumBytes); // Optional invalidate function for cached memory.
} SEGGER_CACHE_CONFIG;
/*********************************************************************
*
* Utility functions
*
**********************************************************************
*/
void SEGGER_ARM_memcpy (void *pDest, const void *pSrc, int NumBytes);
void SEGGER_memcpy (void *pDest, const void *pSrc, int NumBytes);
void SEGGER_memxor (void *pDest, const void *pSrc, unsigned NumBytes);
void SEGGER_StoreChar (SEGGER_BUFFER_DESC *p, char c);
void SEGGER_PrintUnsigned(SEGGER_BUFFER_DESC *pBufferDesc, U32 v, unsigned Base, int NumDigits);
void SEGGER_PrintInt (SEGGER_BUFFER_DESC *pBufferDesc, I32 v, unsigned Base, unsigned NumDigits);
int SEGGER_snprintf (char *pBuffer, int BufferSize, const char *sFormat, ...);
#if defined(__cplusplus)
} /* Make sure we have C-declarations in C++ programs */
#endif
#endif // Avoid multiple inclusion
/*************************** End of file ****************************/

File diff suppressed because it is too large Load Diff

View File

@@ -1,334 +1,334 @@
/*********************************************************************
* SEGGER Microcontroller GmbH & Co. KG *
* The Embedded Experts *
**********************************************************************
* *
* (c) 2015 - 2017 SEGGER Microcontroller GmbH & Co. KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* SEGGER SystemView * Real-time application analysis *
* *
**********************************************************************
* *
* All rights reserved. *
* *
* SEGGER strongly recommends to not make any changes *
* to or modify the source code of this software in order to stay *
* compatible with the RTT protocol and J-Link. *
* *
* Redistribution and use in source and binary forms, with or *
* without modification, are permitted provided that the following *
* conditions are met: *
* *
* o Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* o Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
* nor the names of its contributors may be used to endorse or *
* promote products derived from this software without specific *
* prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
* DAMAGE. *
* *
**********************************************************************
* *
* SystemView version: V2.42 *
* *
**********************************************************************
-------------------------- END-OF-HEADER -----------------------------
File : SEGGER_SYSVIEW.h
Purpose : System visualization API.
Revision: $Rev: 5626 $
*/
#ifndef SEGGER_SYSVIEW_H
#define SEGGER_SYSVIEW_H
/*********************************************************************
*
* #include Section
*
**********************************************************************
*/
#include "SEGGER.h"
#ifdef __cplusplus
extern "C" {
#endif
/*********************************************************************
*
* Defines, fixed
*
**********************************************************************
*/
#define SEGGER_SYSVIEW_VERSION 21000
#define SEGGER_SYSVIEW_INFO_SIZE 9 // Minimum size, which has to be reserved for a packet. 1-2 byte of message type, 0-2 byte of payload length, 1-5 bytes of timestamp.
#define SEGGER_SYSVIEW_QUANTA_U32 5 // Maximum number of bytes to encode a U32, should be reserved for each 32-bit value in a packet.
#define SEGGER_SYSVIEW_LOG (0u)
#define SEGGER_SYSVIEW_WARNING (1u)
#define SEGGER_SYSVIEW_ERROR (2u)
#define SEGGER_SYSVIEW_FLAG_APPEND (1u << 6)
#define SEGGER_SYSVIEW_PREPARE_PACKET(p) (p) + 4
//
// SystemView events. First 32 IDs from 0 .. 31 are reserved for these
//
#define SYSVIEW_EVTID_NOP 0 // Dummy packet.
#define SYSVIEW_EVTID_OVERFLOW 1
#define SYSVIEW_EVTID_ISR_ENTER 2
#define SYSVIEW_EVTID_ISR_EXIT 3
#define SYSVIEW_EVTID_TASK_START_EXEC 4
#define SYSVIEW_EVTID_TASK_STOP_EXEC 5
#define SYSVIEW_EVTID_TASK_START_READY 6
#define SYSVIEW_EVTID_TASK_STOP_READY 7
#define SYSVIEW_EVTID_TASK_CREATE 8
#define SYSVIEW_EVTID_TASK_INFO 9
#define SYSVIEW_EVTID_TRACE_START 10
#define SYSVIEW_EVTID_TRACE_STOP 11
#define SYSVIEW_EVTID_SYSTIME_CYCLES 12
#define SYSVIEW_EVTID_SYSTIME_US 13
#define SYSVIEW_EVTID_SYSDESC 14
#define SYSVIEW_EVTID_USER_START 15
#define SYSVIEW_EVTID_USER_STOP 16
#define SYSVIEW_EVTID_IDLE 17
#define SYSVIEW_EVTID_ISR_TO_SCHEDULER 18
#define SYSVIEW_EVTID_TIMER_ENTER 19
#define SYSVIEW_EVTID_TIMER_EXIT 20
#define SYSVIEW_EVTID_STACK_INFO 21
#define SYSVIEW_EVTID_MODULEDESC 22
#define SYSVIEW_EVTID_INIT 24
#define SYSVIEW_EVTID_NAME_RESOURCE 25
#define SYSVIEW_EVTID_PRINT_FORMATTED 26
#define SYSVIEW_EVTID_NUMMODULES 27
#define SYSVIEW_EVTID_END_CALL 28
#define SYSVIEW_EVTID_TASK_TERMINATE 29
#define SYSVIEW_EVTID_EX 31
//
// Event masks to disable/enable events
//
#define SYSVIEW_EVTMASK_NOP (1 << SYSVIEW_EVTID_NOP)
#define SYSVIEW_EVTMASK_OVERFLOW (1 << SYSVIEW_EVTID_OVERFLOW)
#define SYSVIEW_EVTMASK_ISR_ENTER (1 << SYSVIEW_EVTID_ISR_ENTER)
#define SYSVIEW_EVTMASK_ISR_EXIT (1 << SYSVIEW_EVTID_ISR_EXIT)
#define SYSVIEW_EVTMASK_TASK_START_EXEC (1 << SYSVIEW_EVTID_TASK_START_EXEC)
#define SYSVIEW_EVTMASK_TASK_STOP_EXEC (1 << SYSVIEW_EVTID_TASK_STOP_EXEC)
#define SYSVIEW_EVTMASK_TASK_START_READY (1 << SYSVIEW_EVTID_TASK_START_READY)
#define SYSVIEW_EVTMASK_TASK_STOP_READY (1 << SYSVIEW_EVTID_TASK_STOP_READY)
#define SYSVIEW_EVTMASK_TASK_CREATE (1 << SYSVIEW_EVTID_TASK_CREATE)
#define SYSVIEW_EVTMASK_TASK_INFO (1 << SYSVIEW_EVTID_TASK_INFO)
#define SYSVIEW_EVTMASK_TRACE_START (1 << SYSVIEW_EVTID_TRACE_START)
#define SYSVIEW_EVTMASK_TRACE_STOP (1 << SYSVIEW_EVTID_TRACE_STOP)
#define SYSVIEW_EVTMASK_SYSTIME_CYCLES (1 << SYSVIEW_EVTID_SYSTIME_CYCLES)
#define SYSVIEW_EVTMASK_SYSTIME_US (1 << SYSVIEW_EVTID_SYSTIME_US)
#define SYSVIEW_EVTMASK_SYSDESC (1 << SYSVIEW_EVTID_SYSDESC)
#define SYSVIEW_EVTMASK_USER_START (1 << SYSVIEW_EVTID_USER_START)
#define SYSVIEW_EVTMASK_USER_STOP (1 << SYSVIEW_EVTID_USER_STOP)
#define SYSVIEW_EVTMASK_IDLE (1 << SYSVIEW_EVTID_IDLE)
#define SYSVIEW_EVTMASK_ISR_TO_SCHEDULER (1 << SYSVIEW_EVTID_ISR_TO_SCHEDULER)
#define SYSVIEW_EVTMASK_TIMER_ENTER (1 << SYSVIEW_EVTID_TIMER_ENTER)
#define SYSVIEW_EVTMASK_TIMER_EXIT (1 << SYSVIEW_EVTID_TIMER_EXIT)
#define SYSVIEW_EVTMASK_STACK_INFO (1 << SYSVIEW_EVTID_STACK_INFO)
#define SYSVIEW_EVTMASK_MODULEDESC (1 << SYSVIEW_EVTID_MODULEDESC)
#define SYSVIEW_EVTMASK_INIT (1 << SYSVIEW_EVTID_INIT)
#define SYSVIEW_EVTMASK_NAME_RESOURCE (1 << SYSVIEW_EVTID_NAME_RESOURCE)
#define SYSVIEW_EVTMASK_PRINT_FORMATTED (1 << SYSVIEW_EVTID_PRINT_FORMATTED)
#define SYSVIEW_EVTMASK_NUMMODULES (1 << SYSVIEW_EVTID_NUMMODULES)
#define SYSVIEW_EVTMASK_END_CALL (1 << SYSVIEW_EVTID_END_CALL)
#define SYSVIEW_EVTMASK_TASK_TERMINATE (1 << SYSVIEW_EVTID_TASK_TERMINATE)
#define SYSVIEW_EVTMASK_EX (1 << SYSVIEW_EVTID_EX)
#define SYSVIEW_EVTMASK_ALL_INTERRUPTS ( SYSVIEW_EVTMASK_ISR_ENTER \
| SYSVIEW_EVTMASK_ISR_EXIT \
| SYSVIEW_EVTMASK_ISR_TO_SCHEDULER)
#define SYSVIEW_EVTMASK_ALL_TASKS ( SYSVIEW_EVTMASK_TASK_START_EXEC \
| SYSVIEW_EVTMASK_TASK_STOP_EXEC \
| SYSVIEW_EVTMASK_TASK_START_READY \
| SYSVIEW_EVTMASK_TASK_STOP_READY \
| SYSVIEW_EVTMASK_TASK_CREATE \
| SYSVIEW_EVTMASK_TASK_INFO \
| SYSVIEW_EVTMASK_STACK_INFO \
| SYSVIEW_EVTMASK_TASK_TERMINATE)
/*********************************************************************
*
* Structures
*
**********************************************************************
*/
typedef struct {
U32 TaskID;
const char* sName;
U32 Prio;
U32 StackBase;
U32 StackSize;
} SEGGER_SYSVIEW_TASKINFO;
typedef struct SEGGER_SYSVIEW_MODULE_STRUCT SEGGER_SYSVIEW_MODULE;
struct SEGGER_SYSVIEW_MODULE_STRUCT {
const char* sModule;
U32 NumEvents;
U32 EventOffset;
void (*pfSendModuleDesc)(void);
SEGGER_SYSVIEW_MODULE* pNext;
};
typedef void (SEGGER_SYSVIEW_SEND_SYS_DESC_FUNC)(void);
/*********************************************************************
*
* API functions
*
**********************************************************************
*/
typedef struct {
U64 (*pfGetTime) (void);
void (*pfSendTaskList) (void);
} SEGGER_SYSVIEW_OS_API;
/*********************************************************************
*
* Control and initialization functions
*/
void SEGGER_SYSVIEW_Init (U32 SysFreq, U32 CPUFreq, const SEGGER_SYSVIEW_OS_API *pOSAPI, SEGGER_SYSVIEW_SEND_SYS_DESC_FUNC pfSendSysDesc);
void SEGGER_SYSVIEW_SetRAMBase (U32 RAMBaseAddress);
void SEGGER_SYSVIEW_Start (void);
void SEGGER_SYSVIEW_Stop (void);
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);
/*********************************************************************
*
* Event recording functions
*/
void SEGGER_SYSVIEW_RecordVoid (unsigned int EventId);
void SEGGER_SYSVIEW_RecordU32 (unsigned int EventId, U32 Para0);
void SEGGER_SYSVIEW_RecordU32x2 (unsigned int EventId, U32 Para0, U32 Para1);
void SEGGER_SYSVIEW_RecordU32x3 (unsigned int EventId, U32 Para0, U32 Para1, U32 Para2);
void SEGGER_SYSVIEW_RecordU32x4 (unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3);
void SEGGER_SYSVIEW_RecordU32x5 (unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4);
void SEGGER_SYSVIEW_RecordU32x6 (unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5);
void SEGGER_SYSVIEW_RecordU32x7 (unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5, U32 Para6);
void SEGGER_SYSVIEW_RecordU32x8 (unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5, U32 Para6, U32 Para7);
void SEGGER_SYSVIEW_RecordU32x9 (unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5, U32 Para6, U32 Para7, U32 Para8);
void SEGGER_SYSVIEW_RecordU32x10 (unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5, U32 Para6, U32 Para7, U32 Para8, U32 Para9);
void SEGGER_SYSVIEW_RecordString (unsigned int EventId, const char* pString);
void SEGGER_SYSVIEW_RecordSystime (void);
void SEGGER_SYSVIEW_RecordEnterISR (U32 IrqId);
void SEGGER_SYSVIEW_RecordExitISR (void);
void SEGGER_SYSVIEW_RecordExitISRToScheduler (void);
void SEGGER_SYSVIEW_RecordEnterTimer (U32 TimerId);
void SEGGER_SYSVIEW_RecordExitTimer (void);
void SEGGER_SYSVIEW_RecordEndCall (unsigned int EventID);
void SEGGER_SYSVIEW_RecordEndCallU32 (unsigned int EventID, U32 Para0);
void SEGGER_SYSVIEW_OnIdle (void);
void SEGGER_SYSVIEW_OnTaskCreate (U32 TaskId);
void SEGGER_SYSVIEW_OnTaskTerminate (U32 TaskId);
void SEGGER_SYSVIEW_OnTaskStartExec (U32 TaskId);
void SEGGER_SYSVIEW_OnTaskStopExec (void);
void SEGGER_SYSVIEW_OnTaskStartReady (U32 TaskId);
void SEGGER_SYSVIEW_OnTaskStopReady (U32 TaskId, unsigned int Cause);
void SEGGER_SYSVIEW_OnUserStart (unsigned int UserId); // Start of user defined event (such as a subroutine to profile)
void SEGGER_SYSVIEW_OnUserStop (unsigned int UserId); // Start of user defined event
void SEGGER_SYSVIEW_NameResource (U32 ResourceId, const char* sName);
int SEGGER_SYSVIEW_SendPacket (U8* pPacket, U8* pPayloadEnd, unsigned int EventId);
/*********************************************************************
*
* Event parameter encoding functions
*/
U8* SEGGER_SYSVIEW_EncodeU32 (U8* pPayload, U32 Value);
U8* SEGGER_SYSVIEW_EncodeData (U8* pPayload, const char* pSrc, unsigned int Len);
U8* SEGGER_SYSVIEW_EncodeString (U8* pPayload, const char* s, unsigned int MaxLen);
U8* SEGGER_SYSVIEW_EncodeId (U8* pPayload, U32 Id);
U32 SEGGER_SYSVIEW_ShrinkId (U32 Id);
/*********************************************************************
*
* Middleware module registration
*/
void SEGGER_SYSVIEW_RegisterModule (SEGGER_SYSVIEW_MODULE* pModule);
void SEGGER_SYSVIEW_RecordModuleDescription (const SEGGER_SYSVIEW_MODULE* pModule, const char* sDescription);
void SEGGER_SYSVIEW_SendModule (U8 ModuleId);
void SEGGER_SYSVIEW_SendModuleDescription (void);
void SEGGER_SYSVIEW_SendNumModules (void);
/*********************************************************************
*
* printf-Style functions
*/
#ifndef SEGGER_SYSVIEW_EXCLUDE_PRINTF // Define in project to avoid warnings about variable parameter list
void SEGGER_SYSVIEW_PrintfHostEx (const char* s, U32 Options, ...);
void SEGGER_SYSVIEW_PrintfTargetEx (const char* s, U32 Options, ...);
void SEGGER_SYSVIEW_PrintfHost (const char* s, ...);
void SEGGER_SYSVIEW_PrintfTarget (const char* s, ...);
void SEGGER_SYSVIEW_WarnfHost (const char* s, ...);
void SEGGER_SYSVIEW_WarnfTarget (const char* s, ...);
void SEGGER_SYSVIEW_ErrorfHost (const char* s, ...);
void SEGGER_SYSVIEW_ErrorfTarget (const char* s, ...);
#endif
void SEGGER_SYSVIEW_Print (const char* s);
void SEGGER_SYSVIEW_Warn (const char* s);
void SEGGER_SYSVIEW_Error (const char* s);
/*********************************************************************
*
* Run-time configuration functions
*/
void SEGGER_SYSVIEW_EnableEvents (U32 EnableMask);
void SEGGER_SYSVIEW_DisableEvents (U32 DisableMask);
/*********************************************************************
*
* Application-provided functions
*/
void SEGGER_SYSVIEW_Conf (void);
U32 SEGGER_SYSVIEW_X_GetTimestamp (void);
U32 SEGGER_SYSVIEW_X_GetInterruptId (void);
#ifdef __cplusplus
}
#endif
#endif
/*************************** End of file ****************************/
/*********************************************************************
* SEGGER Microcontroller GmbH & Co. KG *
* The Embedded Experts *
**********************************************************************
* *
* (c) 2015 - 2017 SEGGER Microcontroller GmbH & Co. KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* SEGGER SystemView * Real-time application analysis *
* *
**********************************************************************
* *
* All rights reserved. *
* *
* SEGGER strongly recommends to not make any changes *
* to or modify the source code of this software in order to stay *
* compatible with the RTT protocol and J-Link. *
* *
* Redistribution and use in source and binary forms, with or *
* without modification, are permitted provided that the following *
* conditions are met: *
* *
* o Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* o Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
* nor the names of its contributors may be used to endorse or *
* promote products derived from this software without specific *
* prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
* DAMAGE. *
* *
**********************************************************************
* *
* SystemView version: V2.42 *
* *
**********************************************************************
-------------------------- END-OF-HEADER -----------------------------
File : SEGGER_SYSVIEW.h
Purpose : System visualization API.
Revision: $Rev: 5626 $
*/
#ifndef SEGGER_SYSVIEW_H
#define SEGGER_SYSVIEW_H
/*********************************************************************
*
* #include Section
*
**********************************************************************
*/
#include "SEGGER.h"
#ifdef __cplusplus
extern "C" {
#endif
/*********************************************************************
*
* Defines, fixed
*
**********************************************************************
*/
#define SEGGER_SYSVIEW_VERSION 21000
#define SEGGER_SYSVIEW_INFO_SIZE 9 // Minimum size, which has to be reserved for a packet. 1-2 byte of message type, 0-2 byte of payload length, 1-5 bytes of timestamp.
#define SEGGER_SYSVIEW_QUANTA_U32 5 // Maximum number of bytes to encode a U32, should be reserved for each 32-bit value in a packet.
#define SEGGER_SYSVIEW_LOG (0u)
#define SEGGER_SYSVIEW_WARNING (1u)
#define SEGGER_SYSVIEW_ERROR (2u)
#define SEGGER_SYSVIEW_FLAG_APPEND (1u << 6)
#define SEGGER_SYSVIEW_PREPARE_PACKET(p) (p) + 4
//
// SystemView events. First 32 IDs from 0 .. 31 are reserved for these
//
#define SYSVIEW_EVTID_NOP 0 // Dummy packet.
#define SYSVIEW_EVTID_OVERFLOW 1
#define SYSVIEW_EVTID_ISR_ENTER 2
#define SYSVIEW_EVTID_ISR_EXIT 3
#define SYSVIEW_EVTID_TASK_START_EXEC 4
#define SYSVIEW_EVTID_TASK_STOP_EXEC 5
#define SYSVIEW_EVTID_TASK_START_READY 6
#define SYSVIEW_EVTID_TASK_STOP_READY 7
#define SYSVIEW_EVTID_TASK_CREATE 8
#define SYSVIEW_EVTID_TASK_INFO 9
#define SYSVIEW_EVTID_TRACE_START 10
#define SYSVIEW_EVTID_TRACE_STOP 11
#define SYSVIEW_EVTID_SYSTIME_CYCLES 12
#define SYSVIEW_EVTID_SYSTIME_US 13
#define SYSVIEW_EVTID_SYSDESC 14
#define SYSVIEW_EVTID_USER_START 15
#define SYSVIEW_EVTID_USER_STOP 16
#define SYSVIEW_EVTID_IDLE 17
#define SYSVIEW_EVTID_ISR_TO_SCHEDULER 18
#define SYSVIEW_EVTID_TIMER_ENTER 19
#define SYSVIEW_EVTID_TIMER_EXIT 20
#define SYSVIEW_EVTID_STACK_INFO 21
#define SYSVIEW_EVTID_MODULEDESC 22
#define SYSVIEW_EVTID_INIT 24
#define SYSVIEW_EVTID_NAME_RESOURCE 25
#define SYSVIEW_EVTID_PRINT_FORMATTED 26
#define SYSVIEW_EVTID_NUMMODULES 27
#define SYSVIEW_EVTID_END_CALL 28
#define SYSVIEW_EVTID_TASK_TERMINATE 29
#define SYSVIEW_EVTID_EX 31
//
// Event masks to disable/enable events
//
#define SYSVIEW_EVTMASK_NOP (1 << SYSVIEW_EVTID_NOP)
#define SYSVIEW_EVTMASK_OVERFLOW (1 << SYSVIEW_EVTID_OVERFLOW)
#define SYSVIEW_EVTMASK_ISR_ENTER (1 << SYSVIEW_EVTID_ISR_ENTER)
#define SYSVIEW_EVTMASK_ISR_EXIT (1 << SYSVIEW_EVTID_ISR_EXIT)
#define SYSVIEW_EVTMASK_TASK_START_EXEC (1 << SYSVIEW_EVTID_TASK_START_EXEC)
#define SYSVIEW_EVTMASK_TASK_STOP_EXEC (1 << SYSVIEW_EVTID_TASK_STOP_EXEC)
#define SYSVIEW_EVTMASK_TASK_START_READY (1 << SYSVIEW_EVTID_TASK_START_READY)
#define SYSVIEW_EVTMASK_TASK_STOP_READY (1 << SYSVIEW_EVTID_TASK_STOP_READY)
#define SYSVIEW_EVTMASK_TASK_CREATE (1 << SYSVIEW_EVTID_TASK_CREATE)
#define SYSVIEW_EVTMASK_TASK_INFO (1 << SYSVIEW_EVTID_TASK_INFO)
#define SYSVIEW_EVTMASK_TRACE_START (1 << SYSVIEW_EVTID_TRACE_START)
#define SYSVIEW_EVTMASK_TRACE_STOP (1 << SYSVIEW_EVTID_TRACE_STOP)
#define SYSVIEW_EVTMASK_SYSTIME_CYCLES (1 << SYSVIEW_EVTID_SYSTIME_CYCLES)
#define SYSVIEW_EVTMASK_SYSTIME_US (1 << SYSVIEW_EVTID_SYSTIME_US)
#define SYSVIEW_EVTMASK_SYSDESC (1 << SYSVIEW_EVTID_SYSDESC)
#define SYSVIEW_EVTMASK_USER_START (1 << SYSVIEW_EVTID_USER_START)
#define SYSVIEW_EVTMASK_USER_STOP (1 << SYSVIEW_EVTID_USER_STOP)
#define SYSVIEW_EVTMASK_IDLE (1 << SYSVIEW_EVTID_IDLE)
#define SYSVIEW_EVTMASK_ISR_TO_SCHEDULER (1 << SYSVIEW_EVTID_ISR_TO_SCHEDULER)
#define SYSVIEW_EVTMASK_TIMER_ENTER (1 << SYSVIEW_EVTID_TIMER_ENTER)
#define SYSVIEW_EVTMASK_TIMER_EXIT (1 << SYSVIEW_EVTID_TIMER_EXIT)
#define SYSVIEW_EVTMASK_STACK_INFO (1 << SYSVIEW_EVTID_STACK_INFO)
#define SYSVIEW_EVTMASK_MODULEDESC (1 << SYSVIEW_EVTID_MODULEDESC)
#define SYSVIEW_EVTMASK_INIT (1 << SYSVIEW_EVTID_INIT)
#define SYSVIEW_EVTMASK_NAME_RESOURCE (1 << SYSVIEW_EVTID_NAME_RESOURCE)
#define SYSVIEW_EVTMASK_PRINT_FORMATTED (1 << SYSVIEW_EVTID_PRINT_FORMATTED)
#define SYSVIEW_EVTMASK_NUMMODULES (1 << SYSVIEW_EVTID_NUMMODULES)
#define SYSVIEW_EVTMASK_END_CALL (1 << SYSVIEW_EVTID_END_CALL)
#define SYSVIEW_EVTMASK_TASK_TERMINATE (1 << SYSVIEW_EVTID_TASK_TERMINATE)
#define SYSVIEW_EVTMASK_EX (1 << SYSVIEW_EVTID_EX)
#define SYSVIEW_EVTMASK_ALL_INTERRUPTS ( SYSVIEW_EVTMASK_ISR_ENTER \
| SYSVIEW_EVTMASK_ISR_EXIT \
| SYSVIEW_EVTMASK_ISR_TO_SCHEDULER)
#define SYSVIEW_EVTMASK_ALL_TASKS ( SYSVIEW_EVTMASK_TASK_START_EXEC \
| SYSVIEW_EVTMASK_TASK_STOP_EXEC \
| SYSVIEW_EVTMASK_TASK_START_READY \
| SYSVIEW_EVTMASK_TASK_STOP_READY \
| SYSVIEW_EVTMASK_TASK_CREATE \
| SYSVIEW_EVTMASK_TASK_INFO \
| SYSVIEW_EVTMASK_STACK_INFO \
| SYSVIEW_EVTMASK_TASK_TERMINATE)
/*********************************************************************
*
* Structures
*
**********************************************************************
*/
typedef struct {
U32 TaskID;
const char* sName;
U32 Prio;
U32 StackBase;
U32 StackSize;
} SEGGER_SYSVIEW_TASKINFO;
typedef struct SEGGER_SYSVIEW_MODULE_STRUCT SEGGER_SYSVIEW_MODULE;
struct SEGGER_SYSVIEW_MODULE_STRUCT {
const char* sModule;
U32 NumEvents;
U32 EventOffset;
void (*pfSendModuleDesc)(void);
SEGGER_SYSVIEW_MODULE* pNext;
};
typedef void (SEGGER_SYSVIEW_SEND_SYS_DESC_FUNC)(void);
/*********************************************************************
*
* API functions
*
**********************************************************************
*/
typedef struct {
U64 (*pfGetTime) (void);
void (*pfSendTaskList) (void);
} SEGGER_SYSVIEW_OS_API;
/*********************************************************************
*
* Control and initialization functions
*/
void SEGGER_SYSVIEW_Init (U32 SysFreq, U32 CPUFreq, const SEGGER_SYSVIEW_OS_API *pOSAPI, SEGGER_SYSVIEW_SEND_SYS_DESC_FUNC pfSendSysDesc);
void SEGGER_SYSVIEW_SetRAMBase (U32 RAMBaseAddress);
void SEGGER_SYSVIEW_Start (void);
void SEGGER_SYSVIEW_Stop (void);
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);
/*********************************************************************
*
* Event recording functions
*/
void SEGGER_SYSVIEW_RecordVoid (unsigned int EventId);
void SEGGER_SYSVIEW_RecordU32 (unsigned int EventId, U32 Para0);
void SEGGER_SYSVIEW_RecordU32x2 (unsigned int EventId, U32 Para0, U32 Para1);
void SEGGER_SYSVIEW_RecordU32x3 (unsigned int EventId, U32 Para0, U32 Para1, U32 Para2);
void SEGGER_SYSVIEW_RecordU32x4 (unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3);
void SEGGER_SYSVIEW_RecordU32x5 (unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4);
void SEGGER_SYSVIEW_RecordU32x6 (unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5);
void SEGGER_SYSVIEW_RecordU32x7 (unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5, U32 Para6);
void SEGGER_SYSVIEW_RecordU32x8 (unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5, U32 Para6, U32 Para7);
void SEGGER_SYSVIEW_RecordU32x9 (unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5, U32 Para6, U32 Para7, U32 Para8);
void SEGGER_SYSVIEW_RecordU32x10 (unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5, U32 Para6, U32 Para7, U32 Para8, U32 Para9);
void SEGGER_SYSVIEW_RecordString (unsigned int EventId, const char* pString);
void SEGGER_SYSVIEW_RecordSystime (void);
void SEGGER_SYSVIEW_RecordEnterISR (U32 IrqId);
void SEGGER_SYSVIEW_RecordExitISR (void);
void SEGGER_SYSVIEW_RecordExitISRToScheduler (void);
void SEGGER_SYSVIEW_RecordEnterTimer (U32 TimerId);
void SEGGER_SYSVIEW_RecordExitTimer (void);
void SEGGER_SYSVIEW_RecordEndCall (unsigned int EventID);
void SEGGER_SYSVIEW_RecordEndCallU32 (unsigned int EventID, U32 Para0);
void SEGGER_SYSVIEW_OnIdle (void);
void SEGGER_SYSVIEW_OnTaskCreate (U32 TaskId);
void SEGGER_SYSVIEW_OnTaskTerminate (U32 TaskId);
void SEGGER_SYSVIEW_OnTaskStartExec (U32 TaskId);
void SEGGER_SYSVIEW_OnTaskStopExec (void);
void SEGGER_SYSVIEW_OnTaskStartReady (U32 TaskId);
void SEGGER_SYSVIEW_OnTaskStopReady (U32 TaskId, unsigned int Cause);
void SEGGER_SYSVIEW_OnUserStart (unsigned int UserId); // Start of user defined event (such as a subroutine to profile)
void SEGGER_SYSVIEW_OnUserStop (unsigned int UserId); // Start of user defined event
void SEGGER_SYSVIEW_NameResource (U32 ResourceId, const char* sName);
int SEGGER_SYSVIEW_SendPacket (U8* pPacket, U8* pPayloadEnd, unsigned int EventId);
/*********************************************************************
*
* Event parameter encoding functions
*/
U8* SEGGER_SYSVIEW_EncodeU32 (U8* pPayload, U32 Value);
U8* SEGGER_SYSVIEW_EncodeData (U8* pPayload, const char* pSrc, unsigned int Len);
U8* SEGGER_SYSVIEW_EncodeString (U8* pPayload, const char* s, unsigned int MaxLen);
U8* SEGGER_SYSVIEW_EncodeId (U8* pPayload, U32 Id);
U32 SEGGER_SYSVIEW_ShrinkId (U32 Id);
/*********************************************************************
*
* Middleware module registration
*/
void SEGGER_SYSVIEW_RegisterModule (SEGGER_SYSVIEW_MODULE* pModule);
void SEGGER_SYSVIEW_RecordModuleDescription (const SEGGER_SYSVIEW_MODULE* pModule, const char* sDescription);
void SEGGER_SYSVIEW_SendModule (U8 ModuleId);
void SEGGER_SYSVIEW_SendModuleDescription (void);
void SEGGER_SYSVIEW_SendNumModules (void);
/*********************************************************************
*
* printf-Style functions
*/
#ifndef SEGGER_SYSVIEW_EXCLUDE_PRINTF // Define in project to avoid warnings about variable parameter list
void SEGGER_SYSVIEW_PrintfHostEx (const char* s, U32 Options, ...);
void SEGGER_SYSVIEW_PrintfTargetEx (const char* s, U32 Options, ...);
void SEGGER_SYSVIEW_PrintfHost (const char* s, ...);
void SEGGER_SYSVIEW_PrintfTarget (const char* s, ...);
void SEGGER_SYSVIEW_WarnfHost (const char* s, ...);
void SEGGER_SYSVIEW_WarnfTarget (const char* s, ...);
void SEGGER_SYSVIEW_ErrorfHost (const char* s, ...);
void SEGGER_SYSVIEW_ErrorfTarget (const char* s, ...);
#endif
void SEGGER_SYSVIEW_Print (const char* s);
void SEGGER_SYSVIEW_Warn (const char* s);
void SEGGER_SYSVIEW_Error (const char* s);
/*********************************************************************
*
* Run-time configuration functions
*/
void SEGGER_SYSVIEW_EnableEvents (U32 EnableMask);
void SEGGER_SYSVIEW_DisableEvents (U32 DisableMask);
/*********************************************************************
*
* Application-provided functions
*/
void SEGGER_SYSVIEW_Conf (void);
U32 SEGGER_SYSVIEW_X_GetTimestamp (void);
U32 SEGGER_SYSVIEW_X_GetInterruptId (void);
#ifdef __cplusplus
}
#endif
#endif
/*************************** End of file ****************************/

View File

@@ -1,178 +1,178 @@
/*********************************************************************
* SEGGER Microcontroller GmbH & Co. KG *
* The Embedded Experts *
**********************************************************************
* *
* (c) 2015 - 2017 SEGGER Microcontroller GmbH & Co. KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* SEGGER SystemView * Real-time application analysis *
* *
**********************************************************************
* *
* All rights reserved. *
* *
* SEGGER strongly recommends to not make any changes *
* to or modify the source code of this software in order to stay *
* compatible with the RTT protocol and J-Link. *
* *
* Redistribution and use in source and binary forms, with or *
* without modification, are permitted provided that the following *
* conditions are met: *
* *
* o Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* o Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
* nor the names of its contributors may be used to endorse or *
* promote products derived from this software without specific *
* prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
* DAMAGE. *
* *
**********************************************************************
* *
* SystemView version: V2.42 *
* *
**********************************************************************
-------------------------- END-OF-HEADER -----------------------------
File : SEGGER_SYSVIEW_ConfDefaults.h
Purpose : Defines defaults for configurable defines used in
SEGGER SystemView.
Revision: $Rev: 3734 $
*/
#ifndef SEGGER_SYSVIEW_CONFDEFAULTS_H
#define SEGGER_SYSVIEW_CONFDEFAULTS_H
/*********************************************************************
*
* #include Section
*
**********************************************************************
*/
#include "SEGGER_SYSVIEW_Conf.h"
#include "SEGGER_RTT_Conf.h"
#ifdef __cplusplus
extern "C" {
#endif
/*********************************************************************
*
* Configuration defaults
*
**********************************************************************
*/
// Number of bytes that SystemView uses for a buffer.
#ifndef SEGGER_SYSVIEW_RTT_BUFFER_SIZE
#define SEGGER_SYSVIEW_RTT_BUFFER_SIZE 1024
#endif
// The RTT channel that SystemView will use.
#ifndef SEGGER_SYSVIEW_RTT_CHANNEL
#define SEGGER_SYSVIEW_RTT_CHANNEL 0
#endif
// Sanity check of RTT channel
#if (SEGGER_SYSVIEW_RTT_CHANNEL == 0) && (SEGGER_RTT_MAX_NUM_UP_BUFFERS < 2)
#error "SEGGER_RTT_MAX_NUM_UP_BUFFERS in SEGGER_RTT_Conf.h has to be > 1!"
#elif (SEGGER_SYSVIEW_RTT_CHANNEL >= SEGGER_RTT_MAX_NUM_UP_BUFFERS)
#error "SEGGER_RTT_MAX_NUM_UP_BUFFERS in SEGGER_RTT_Conf.h has to be > SEGGER_SYSVIEW_RTT_CHANNEL!"
#endif
// Place the SystemView buffer into its own/the RTT section
#if !(defined SEGGER_SYSVIEW_BUFFER_SECTION) && (defined SEGGER_RTT_SECTION)
#define SEGGER_SYSVIEW_BUFFER_SECTION SEGGER_RTT_SECTION
#endif
// Retrieve a system timestamp. This gets the Cortex-M cycle counter.
#ifndef SEGGER_SYSVIEW_GET_TIMESTAMP
#error "SEGGER_SYSVIEW_GET_TIMESTAMP has to be defined in SEGGER_SYSVIEW_Conf.h!"
#endif
// Define number of valid bits low-order delivered by clock source.
#ifndef SEGGER_SYSVIEW_TIMESTAMP_BITS
#define SEGGER_SYSVIEW_TIMESTAMP_BITS 32
#endif
// Lowest Id reported by the Application.
#ifndef SEGGER_SYSVIEW_ID_BASE
#define SEGGER_SYSVIEW_ID_BASE 0
#endif
// Number of bits to shift Ids to save bandwidth
#ifndef SEGGER_SYSVIEW_ID_SHIFT
#define SEGGER_SYSVIEW_ID_SHIFT 0
#endif
#ifndef SEGGER_SYSVIEW_GET_INTERRUPT_ID
#error "SEGGER_SYSVIEW_GET_INTERRUPT_ID has to be defined in SEGGER_SYSVIEW_Conf.h!"
#endif
#ifndef SEGGER_SYSVIEW_MAX_ARGUMENTS
#define SEGGER_SYSVIEW_MAX_ARGUMENTS 16
#endif
#ifndef SEGGER_SYSVIEW_MAX_STRING_LEN
#define SEGGER_SYSVIEW_MAX_STRING_LEN 128
#endif
// Use a static buffer instead of a buffer on the stack for packets
#ifndef SEGGER_SYSVIEW_USE_STATIC_BUFFER
#define SEGGER_SYSVIEW_USE_STATIC_BUFFER 1
#endif
// Maximum packet size used by SystemView for the static buffer
#ifndef SEGGER_SYSVIEW_MAX_PACKET_SIZE
#define SEGGER_SYSVIEW_MAX_PACKET_SIZE SEGGER_SYSVIEW_INFO_SIZE + SEGGER_SYSVIEW_MAX_STRING_LEN + 2 * SEGGER_SYSVIEW_QUANTA_U32 + SEGGER_SYSVIEW_MAX_ARGUMENTS * SEGGER_SYSVIEW_QUANTA_U32
#endif
// Use post-mortem analysis instead of real-time analysis
#ifndef SEGGER_SYSVIEW_POST_MORTEM_MODE
#define SEGGER_SYSVIEW_POST_MORTEM_MODE 0
#endif
// Configure how frequently syncronization is sent
#ifndef SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT
#define SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT 8
#endif
// Lock SystemView (nestable)
#ifndef SEGGER_SYSVIEW_LOCK
#define SEGGER_SYSVIEW_LOCK() SEGGER_RTT_LOCK()
#endif
// Unlock SystemView (nestable)
#ifndef SEGGER_SYSVIEW_UNLOCK
#define SEGGER_SYSVIEW_UNLOCK() SEGGER_RTT_UNLOCK()
#endif
#ifdef __cplusplus
}
#endif
#endif
/*************************** End of file ****************************/
/*********************************************************************
* SEGGER Microcontroller GmbH & Co. KG *
* The Embedded Experts *
**********************************************************************
* *
* (c) 2015 - 2017 SEGGER Microcontroller GmbH & Co. KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* SEGGER SystemView * Real-time application analysis *
* *
**********************************************************************
* *
* All rights reserved. *
* *
* SEGGER strongly recommends to not make any changes *
* to or modify the source code of this software in order to stay *
* compatible with the RTT protocol and J-Link. *
* *
* Redistribution and use in source and binary forms, with or *
* without modification, are permitted provided that the following *
* conditions are met: *
* *
* o Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* o Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
* nor the names of its contributors may be used to endorse or *
* promote products derived from this software without specific *
* prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
* DAMAGE. *
* *
**********************************************************************
* *
* SystemView version: V2.42 *
* *
**********************************************************************
-------------------------- END-OF-HEADER -----------------------------
File : SEGGER_SYSVIEW_ConfDefaults.h
Purpose : Defines defaults for configurable defines used in
SEGGER SystemView.
Revision: $Rev: 3734 $
*/
#ifndef SEGGER_SYSVIEW_CONFDEFAULTS_H
#define SEGGER_SYSVIEW_CONFDEFAULTS_H
/*********************************************************************
*
* #include Section
*
**********************************************************************
*/
#include "SEGGER_SYSVIEW_Conf.h"
#include "SEGGER_RTT_Conf.h"
#ifdef __cplusplus
extern "C" {
#endif
/*********************************************************************
*
* Configuration defaults
*
**********************************************************************
*/
// Number of bytes that SystemView uses for a buffer.
#ifndef SEGGER_SYSVIEW_RTT_BUFFER_SIZE
#define SEGGER_SYSVIEW_RTT_BUFFER_SIZE 1024
#endif
// The RTT channel that SystemView will use.
#ifndef SEGGER_SYSVIEW_RTT_CHANNEL
#define SEGGER_SYSVIEW_RTT_CHANNEL 0
#endif
// Sanity check of RTT channel
#if (SEGGER_SYSVIEW_RTT_CHANNEL == 0) && (SEGGER_RTT_MAX_NUM_UP_BUFFERS < 2)
#error "SEGGER_RTT_MAX_NUM_UP_BUFFERS in SEGGER_RTT_Conf.h has to be > 1!"
#elif (SEGGER_SYSVIEW_RTT_CHANNEL >= SEGGER_RTT_MAX_NUM_UP_BUFFERS)
#error "SEGGER_RTT_MAX_NUM_UP_BUFFERS in SEGGER_RTT_Conf.h has to be > SEGGER_SYSVIEW_RTT_CHANNEL!"
#endif
// Place the SystemView buffer into its own/the RTT section
#if !(defined SEGGER_SYSVIEW_BUFFER_SECTION) && (defined SEGGER_RTT_SECTION)
#define SEGGER_SYSVIEW_BUFFER_SECTION SEGGER_RTT_SECTION
#endif
// Retrieve a system timestamp. This gets the Cortex-M cycle counter.
#ifndef SEGGER_SYSVIEW_GET_TIMESTAMP
#error "SEGGER_SYSVIEW_GET_TIMESTAMP has to be defined in SEGGER_SYSVIEW_Conf.h!"
#endif
// Define number of valid bits low-order delivered by clock source.
#ifndef SEGGER_SYSVIEW_TIMESTAMP_BITS
#define SEGGER_SYSVIEW_TIMESTAMP_BITS 32
#endif
// Lowest Id reported by the Application.
#ifndef SEGGER_SYSVIEW_ID_BASE
#define SEGGER_SYSVIEW_ID_BASE 0
#endif
// Number of bits to shift Ids to save bandwidth
#ifndef SEGGER_SYSVIEW_ID_SHIFT
#define SEGGER_SYSVIEW_ID_SHIFT 0
#endif
#ifndef SEGGER_SYSVIEW_GET_INTERRUPT_ID
#error "SEGGER_SYSVIEW_GET_INTERRUPT_ID has to be defined in SEGGER_SYSVIEW_Conf.h!"
#endif
#ifndef SEGGER_SYSVIEW_MAX_ARGUMENTS
#define SEGGER_SYSVIEW_MAX_ARGUMENTS 16
#endif
#ifndef SEGGER_SYSVIEW_MAX_STRING_LEN
#define SEGGER_SYSVIEW_MAX_STRING_LEN 128
#endif
// Use a static buffer instead of a buffer on the stack for packets
#ifndef SEGGER_SYSVIEW_USE_STATIC_BUFFER
#define SEGGER_SYSVIEW_USE_STATIC_BUFFER 1
#endif
// Maximum packet size used by SystemView for the static buffer
#ifndef SEGGER_SYSVIEW_MAX_PACKET_SIZE
#define SEGGER_SYSVIEW_MAX_PACKET_SIZE SEGGER_SYSVIEW_INFO_SIZE + SEGGER_SYSVIEW_MAX_STRING_LEN + 2 * SEGGER_SYSVIEW_QUANTA_U32 + SEGGER_SYSVIEW_MAX_ARGUMENTS * SEGGER_SYSVIEW_QUANTA_U32
#endif
// Use post-mortem analysis instead of real-time analysis
#ifndef SEGGER_SYSVIEW_POST_MORTEM_MODE
#define SEGGER_SYSVIEW_POST_MORTEM_MODE 0
#endif
// Configure how frequently syncronization is sent
#ifndef SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT
#define SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT 8
#endif
// Lock SystemView (nestable)
#ifndef SEGGER_SYSVIEW_LOCK
#define SEGGER_SYSVIEW_LOCK() SEGGER_RTT_LOCK()
#endif
// Unlock SystemView (nestable)
#ifndef SEGGER_SYSVIEW_UNLOCK
#define SEGGER_SYSVIEW_UNLOCK() SEGGER_RTT_UNLOCK()
#endif
#ifdef __cplusplus
}
#endif
#endif
/*************************** End of file ****************************/

View File

@@ -1,110 +1,110 @@
/*********************************************************************
* SEGGER Microcontroller GmbH & Co. KG *
* The Embedded Experts *
**********************************************************************
* *
* (c) 2015 - 2017 SEGGER Microcontroller GmbH & Co. KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* SEGGER SystemView * Real-time application analysis *
* *
**********************************************************************
* *
* All rights reserved. *
* *
* SEGGER strongly recommends to not make any changes *
* to or modify the source code of this software in order to stay *
* compatible with the RTT protocol and J-Link. *
* *
* Redistribution and use in source and binary forms, with or *
* without modification, are permitted provided that the following *
* conditions are met: *
* *
* o Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* o Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
* nor the names of its contributors may be used to endorse or *
* promote products derived from this software without specific *
* prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
* DAMAGE. *
* *
**********************************************************************
* *
* SystemView version: V2.42 *
* *
**********************************************************************
-------------------------- END-OF-HEADER -----------------------------
File : SEGGER_SYSVIEW_Int.h
Purpose : SEGGER SystemView internal header.
Revision: $Rev: 5626 $
*/
#ifndef SEGGER_SYSVIEW_INT_H
#define SEGGER_SYSVIEW_INT_H
/*********************************************************************
*
* #include Section
*
**********************************************************************
*/
#include "SEGGER_SYSVIEW.h"
#include "SEGGER_SYSVIEW_Conf.h"
#include "SEGGER_SYSVIEW_ConfDefaults.h"
#ifdef __cplusplus
extern "C" {
#endif
/*********************************************************************
*
* Private data types
*
**********************************************************************
*/
//
// Commands that Host can send to target
//
typedef enum {
SEGGER_SYSVIEW_COMMAND_ID_START = 1,
SEGGER_SYSVIEW_COMMAND_ID_STOP,
SEGGER_SYSVIEW_COMMAND_ID_GET_SYSTIME,
SEGGER_SYSVIEW_COMMAND_ID_GET_TASKLIST,
SEGGER_SYSVIEW_COMMAND_ID_GET_SYSDESC,
SEGGER_SYSVIEW_COMMAND_ID_GET_NUMMODULES,
SEGGER_SYSVIEW_COMMAND_ID_GET_MODULEDESC,
// Extended commands: Commands >= 128 have a second parameter
SEGGER_SYSVIEW_COMMAND_ID_GET_MODULE = 128
} SEGGER_SYSVIEW_COMMAND_ID;
#ifdef __cplusplus
}
#endif
#endif
/*************************** End of file ****************************/
/*********************************************************************
* SEGGER Microcontroller GmbH & Co. KG *
* The Embedded Experts *
**********************************************************************
* *
* (c) 2015 - 2017 SEGGER Microcontroller GmbH & Co. KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* SEGGER SystemView * Real-time application analysis *
* *
**********************************************************************
* *
* All rights reserved. *
* *
* SEGGER strongly recommends to not make any changes *
* to or modify the source code of this software in order to stay *
* compatible with the RTT protocol and J-Link. *
* *
* Redistribution and use in source and binary forms, with or *
* without modification, are permitted provided that the following *
* conditions are met: *
* *
* o Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* o Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
* nor the names of its contributors may be used to endorse or *
* promote products derived from this software without specific *
* prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
* DAMAGE. *
* *
**********************************************************************
* *
* SystemView version: V2.42 *
* *
**********************************************************************
-------------------------- END-OF-HEADER -----------------------------
File : SEGGER_SYSVIEW_Int.h
Purpose : SEGGER SystemView internal header.
Revision: $Rev: 5626 $
*/
#ifndef SEGGER_SYSVIEW_INT_H
#define SEGGER_SYSVIEW_INT_H
/*********************************************************************
*
* #include Section
*
**********************************************************************
*/
#include "SEGGER_SYSVIEW.h"
#include "SEGGER_SYSVIEW_Conf.h"
#include "SEGGER_SYSVIEW_ConfDefaults.h"
#ifdef __cplusplus
extern "C" {
#endif
/*********************************************************************
*
* Private data types
*
**********************************************************************
*/
//
// Commands that Host can send to target
//
typedef enum {
SEGGER_SYSVIEW_COMMAND_ID_START = 1,
SEGGER_SYSVIEW_COMMAND_ID_STOP,
SEGGER_SYSVIEW_COMMAND_ID_GET_SYSTIME,
SEGGER_SYSVIEW_COMMAND_ID_GET_TASKLIST,
SEGGER_SYSVIEW_COMMAND_ID_GET_SYSDESC,
SEGGER_SYSVIEW_COMMAND_ID_GET_NUMMODULES,
SEGGER_SYSVIEW_COMMAND_ID_GET_MODULEDESC,
// Extended commands: Commands >= 128 have a second parameter
SEGGER_SYSVIEW_COMMAND_ID_GET_MODULE = 128
} SEGGER_SYSVIEW_COMMAND_ID;
#ifdef __cplusplus
}
#endif
#endif
/*************************** End of file ****************************/

View File

@@ -1,290 +1,290 @@
/*********************************************************************
* SEGGER Microcontroller GmbH & Co. KG *
* The Embedded Experts *
**********************************************************************
* *
* (c) 2015 - 2017 SEGGER Microcontroller GmbH & Co. KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* SEGGER SystemView * Real-time application analysis *
* *
**********************************************************************
* *
* All rights reserved. *
* *
* SEGGER strongly recommends to not make any changes *
* to or modify the source code of this software in order to stay *
* compatible with the RTT protocol and J-Link. *
* *
* Redistribution and use in source and binary forms, with or *
* without modification, are permitted provided that the following *
* conditions are met: *
* *
* o Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* o Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
* nor the names of its contributors may be used to endorse or *
* promote products derived from this software without specific *
* prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
* DAMAGE. *
* *
**********************************************************************
* *
* SystemView version: V2.42 *
* *
**********************************************************************
-------------------------- END-OF-HEADER -----------------------------
File : SEGGER_SYSVIEW_FreeRTOS.c
Purpose : Interface between FreeRTOS and SystemView.
Revision: $Rev: 3734 $
*/
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "SEGGER_SYSVIEW.h"
#include "SEGGER_SYSVIEW_FreeRTOS.h"
#include "string.h" // Required for memset
typedef struct SYSVIEW_FREERTOS_TASK_STATUS SYSVIEW_FREERTOS_TASK_STATUS;
struct SYSVIEW_FREERTOS_TASK_STATUS {
U32 xHandle;
const char* pcTaskName;
unsigned uxCurrentPriority;
U32 pxStack;
unsigned uStackHighWaterMark;
};
static SYSVIEW_FREERTOS_TASK_STATUS _aTasks[SYSVIEW_FREERTOS_MAX_NOF_TASKS];
/*********************************************************************
*
* _cbSendTaskList()
*
* Function description
* This function is part of the link between FreeRTOS and SYSVIEW.
* Called from SystemView when asked by the host, it uses SYSVIEW
* functions to send the entire task list to the host.
*/
static void _cbSendTaskList(void) {
unsigned n;
for (n = 0; n < SYSVIEW_FREERTOS_MAX_NOF_TASKS; n++) {
if (_aTasks[n].xHandle) {
#if INCLUDE_uxTaskGetStackHighWaterMark // Report Task Stack High Watermark
_aTasks[n].uStackHighWaterMark = uxTaskGetStackHighWaterMark((TaskHandle_t)_aTasks[n].xHandle);
#endif
SYSVIEW_SendTaskInfo((U32)_aTasks[n].xHandle, _aTasks[n].pcTaskName, (unsigned)_aTasks[n].uxCurrentPriority, (U32)_aTasks[n].pxStack, (unsigned)_aTasks[n].uStackHighWaterMark);
}
}
}
/*********************************************************************
*
* _cbGetTime()
*
* Function description
* This function is part of the link between FreeRTOS and SYSVIEW.
* Called from SystemView when asked by the host, returns the
* current system time in micro seconds.
*/
static U64 _cbGetTime(void) {
U64 Time;
Time = xTaskGetTickCountFromISR();
Time *= portTICK_PERIOD_MS;
Time *= 1000;
return Time;
}
/*********************************************************************
*
* Global functions
*
**********************************************************************
*/
/*********************************************************************
*
* SYSVIEW_AddTask()
*
* Function description
* Add a task to the internal list and record its information.
*/
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;
}
}
if (n == SYSVIEW_FREERTOS_MAX_NOF_TASKS) {
SEGGER_SYSVIEW_Warn("SYSTEMVIEW: Could not record task information. Maximum number of tasks reached.");
return;
}
_aTasks[n].xHandle = xHandle;
_aTasks[n].pcTaskName = pcTaskName;
_aTasks[n].uxCurrentPriority = uxCurrentPriority;
_aTasks[n].pxStack = pxStack;
_aTasks[n].uStackHighWaterMark = uStackHighWaterMark;
SYSVIEW_SendTaskInfo(xHandle, pcTaskName,uxCurrentPriority, pxStack, uStackHighWaterMark);
}
/*********************************************************************
*
* SYSVIEW_UpdateTask()
*
* Function description
* Update a task in the internal list and record its information.
*/
void SYSVIEW_UpdateTask(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 == xHandle) {
break;
}
}
if (n < SYSVIEW_FREERTOS_MAX_NOF_TASKS) {
_aTasks[n].pcTaskName = pcTaskName;
_aTasks[n].uxCurrentPriority = uxCurrentPriority;
_aTasks[n].pxStack = pxStack;
_aTasks[n].uStackHighWaterMark = uStackHighWaterMark;
SYSVIEW_SendTaskInfo(xHandle, pcTaskName, uxCurrentPriority, pxStack, uStackHighWaterMark);
} else {
SYSVIEW_AddTask(xHandle, pcTaskName, uxCurrentPriority, pxStack, uStackHighWaterMark);
}
}
/*********************************************************************
*
* SYSVIEW_DeleteTask()
*
* Function description
* Delete a task from the internal list.
*/
void SYSVIEW_DeleteTask(U32 xHandle) {
unsigned n;
for (n = 0; n < SYSVIEW_FREERTOS_MAX_NOF_TASKS; n++) {
if (_aTasks[n].xHandle == xHandle) {
break;
}
}
if (n == SYSVIEW_FREERTOS_MAX_NOF_TASKS) {
SEGGER_SYSVIEW_Warn("SYSTEMVIEW: Could not find task information. Cannot delete task.");
return;
}
_aTasks[n].xHandle = 0;
}
/*********************************************************************
*
* SYSVIEW_SendTaskInfo()
*
* Function description
* Record task information.
*/
void SYSVIEW_SendTaskInfo(U32 TaskID, const char* sName, unsigned Prio, U32 StackBase, unsigned StackSize) {
SEGGER_SYSVIEW_TASKINFO TaskInfo;
memset(&TaskInfo, 0, sizeof(TaskInfo)); // Fill all elements with 0 to allow extending the structure in future version without breaking the code
TaskInfo.TaskID = TaskID;
TaskInfo.sName = sName;
TaskInfo.Prio = Prio;
TaskInfo.StackBase = StackBase;
TaskInfo.StackSize = StackSize;
SEGGER_SYSVIEW_SendTaskInfo(&TaskInfo);
}
/*********************************************************************
*
* SYSVIEW_RecordU32x4()
*
* Function description
* Record an event with 4 parameters
*/
void SYSVIEW_RecordU32x4(unsigned Id, U32 Para0, U32 Para1, U32 Para2, U32 Para3) {
U8 aPacket[SEGGER_SYSVIEW_INFO_SIZE + 4 * SEGGER_SYSVIEW_QUANTA_U32];
U8* pPayload;
//
pPayload = SEGGER_SYSVIEW_PREPARE_PACKET(aPacket); // Prepare the packet for SystemView
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para0); // Add the first parameter to the packet
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para1); // Add the second parameter to the packet
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para2); // Add the third parameter to the packet
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para3); // Add the fourth parameter to the packet
//
SEGGER_SYSVIEW_SendPacket(&aPacket[0], pPayload, Id); // Send the packet
}
/*********************************************************************
*
* SYSVIEW_RecordU32x5()
*
* Function description
* Record an event with 5 parameters
*/
void SYSVIEW_RecordU32x5(unsigned Id, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4) {
U8 aPacket[SEGGER_SYSVIEW_INFO_SIZE + 5 * SEGGER_SYSVIEW_QUANTA_U32];
U8* pPayload;
//
pPayload = SEGGER_SYSVIEW_PREPARE_PACKET(aPacket); // Prepare the packet for SystemView
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para0); // Add the first parameter to the packet
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para1); // Add the second parameter to the packet
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para2); // Add the third parameter to the packet
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para3); // Add the fourth parameter to the packet
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para4); // Add the fifth parameter to the packet
//
SEGGER_SYSVIEW_SendPacket(&aPacket[0], pPayload, Id); // Send the packet
}
/*********************************************************************
*
* Public API structures
*
**********************************************************************
*/
// Callbacks provided to SYSTEMVIEW by FreeRTOS
const SEGGER_SYSVIEW_OS_API SYSVIEW_X_OS_TraceAPI = {
_cbGetTime,
_cbSendTaskList,
};
/*************************** End of file ****************************/
/*********************************************************************
* SEGGER Microcontroller GmbH & Co. KG *
* The Embedded Experts *
**********************************************************************
* *
* (c) 2015 - 2017 SEGGER Microcontroller GmbH & Co. KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* SEGGER SystemView * Real-time application analysis *
* *
**********************************************************************
* *
* All rights reserved. *
* *
* SEGGER strongly recommends to not make any changes *
* to or modify the source code of this software in order to stay *
* compatible with the RTT protocol and J-Link. *
* *
* Redistribution and use in source and binary forms, with or *
* without modification, are permitted provided that the following *
* conditions are met: *
* *
* o Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* o Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
* nor the names of its contributors may be used to endorse or *
* promote products derived from this software without specific *
* prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
* DAMAGE. *
* *
**********************************************************************
* *
* SystemView version: V2.42 *
* *
**********************************************************************
-------------------------- END-OF-HEADER -----------------------------
File : SEGGER_SYSVIEW_FreeRTOS.c
Purpose : Interface between FreeRTOS and SystemView.
Revision: $Rev: 3734 $
*/
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "SEGGER_SYSVIEW.h"
#include "SEGGER_SYSVIEW_FreeRTOS.h"
#include "string.h" // Required for memset
typedef struct SYSVIEW_FREERTOS_TASK_STATUS SYSVIEW_FREERTOS_TASK_STATUS;
struct SYSVIEW_FREERTOS_TASK_STATUS {
U32 xHandle;
const char* pcTaskName;
unsigned uxCurrentPriority;
U32 pxStack;
unsigned uStackHighWaterMark;
};
static SYSVIEW_FREERTOS_TASK_STATUS _aTasks[SYSVIEW_FREERTOS_MAX_NOF_TASKS];
/*********************************************************************
*
* _cbSendTaskList()
*
* Function description
* This function is part of the link between FreeRTOS and SYSVIEW.
* Called from SystemView when asked by the host, it uses SYSVIEW
* functions to send the entire task list to the host.
*/
static void _cbSendTaskList(void) {
unsigned n;
for (n = 0; n < SYSVIEW_FREERTOS_MAX_NOF_TASKS; n++) {
if (_aTasks[n].xHandle) {
#if INCLUDE_uxTaskGetStackHighWaterMark // Report Task Stack High Watermark
_aTasks[n].uStackHighWaterMark = uxTaskGetStackHighWaterMark((TaskHandle_t)_aTasks[n].xHandle);
#endif
SYSVIEW_SendTaskInfo((U32)_aTasks[n].xHandle, _aTasks[n].pcTaskName, (unsigned)_aTasks[n].uxCurrentPriority, (U32)_aTasks[n].pxStack, (unsigned)_aTasks[n].uStackHighWaterMark);
}
}
}
/*********************************************************************
*
* _cbGetTime()
*
* Function description
* This function is part of the link between FreeRTOS and SYSVIEW.
* Called from SystemView when asked by the host, returns the
* current system time in micro seconds.
*/
static U64 _cbGetTime(void) {
U64 Time;
Time = xTaskGetTickCountFromISR();
Time *= portTICK_PERIOD_MS;
Time *= 1000;
return Time;
}
/*********************************************************************
*
* Global functions
*
**********************************************************************
*/
/*********************************************************************
*
* SYSVIEW_AddTask()
*
* Function description
* Add a task to the internal list and record its information.
*/
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;
}
}
if (n == SYSVIEW_FREERTOS_MAX_NOF_TASKS) {
SEGGER_SYSVIEW_Warn("SYSTEMVIEW: Could not record task information. Maximum number of tasks reached.");
return;
}
_aTasks[n].xHandle = xHandle;
_aTasks[n].pcTaskName = pcTaskName;
_aTasks[n].uxCurrentPriority = uxCurrentPriority;
_aTasks[n].pxStack = pxStack;
_aTasks[n].uStackHighWaterMark = uStackHighWaterMark;
SYSVIEW_SendTaskInfo(xHandle, pcTaskName,uxCurrentPriority, pxStack, uStackHighWaterMark);
}
/*********************************************************************
*
* SYSVIEW_UpdateTask()
*
* Function description
* Update a task in the internal list and record its information.
*/
void SYSVIEW_UpdateTask(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 == xHandle) {
break;
}
}
if (n < SYSVIEW_FREERTOS_MAX_NOF_TASKS) {
_aTasks[n].pcTaskName = pcTaskName;
_aTasks[n].uxCurrentPriority = uxCurrentPriority;
_aTasks[n].pxStack = pxStack;
_aTasks[n].uStackHighWaterMark = uStackHighWaterMark;
SYSVIEW_SendTaskInfo(xHandle, pcTaskName, uxCurrentPriority, pxStack, uStackHighWaterMark);
} else {
SYSVIEW_AddTask(xHandle, pcTaskName, uxCurrentPriority, pxStack, uStackHighWaterMark);
}
}
/*********************************************************************
*
* SYSVIEW_DeleteTask()
*
* Function description
* Delete a task from the internal list.
*/
void SYSVIEW_DeleteTask(U32 xHandle) {
unsigned n;
for (n = 0; n < SYSVIEW_FREERTOS_MAX_NOF_TASKS; n++) {
if (_aTasks[n].xHandle == xHandle) {
break;
}
}
if (n == SYSVIEW_FREERTOS_MAX_NOF_TASKS) {
SEGGER_SYSVIEW_Warn("SYSTEMVIEW: Could not find task information. Cannot delete task.");
return;
}
_aTasks[n].xHandle = 0;
}
/*********************************************************************
*
* SYSVIEW_SendTaskInfo()
*
* Function description
* Record task information.
*/
void SYSVIEW_SendTaskInfo(U32 TaskID, const char* sName, unsigned Prio, U32 StackBase, unsigned StackSize) {
SEGGER_SYSVIEW_TASKINFO TaskInfo;
memset(&TaskInfo, 0, sizeof(TaskInfo)); // Fill all elements with 0 to allow extending the structure in future version without breaking the code
TaskInfo.TaskID = TaskID;
TaskInfo.sName = sName;
TaskInfo.Prio = Prio;
TaskInfo.StackBase = StackBase;
TaskInfo.StackSize = StackSize;
SEGGER_SYSVIEW_SendTaskInfo(&TaskInfo);
}
/*********************************************************************
*
* SYSVIEW_RecordU32x4()
*
* Function description
* Record an event with 4 parameters
*/
void SYSVIEW_RecordU32x4(unsigned Id, U32 Para0, U32 Para1, U32 Para2, U32 Para3) {
U8 aPacket[SEGGER_SYSVIEW_INFO_SIZE + 4 * SEGGER_SYSVIEW_QUANTA_U32];
U8* pPayload;
//
pPayload = SEGGER_SYSVIEW_PREPARE_PACKET(aPacket); // Prepare the packet for SystemView
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para0); // Add the first parameter to the packet
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para1); // Add the second parameter to the packet
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para2); // Add the third parameter to the packet
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para3); // Add the fourth parameter to the packet
//
SEGGER_SYSVIEW_SendPacket(&aPacket[0], pPayload, Id); // Send the packet
}
/*********************************************************************
*
* SYSVIEW_RecordU32x5()
*
* Function description
* Record an event with 5 parameters
*/
void SYSVIEW_RecordU32x5(unsigned Id, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4) {
U8 aPacket[SEGGER_SYSVIEW_INFO_SIZE + 5 * SEGGER_SYSVIEW_QUANTA_U32];
U8* pPayload;
//
pPayload = SEGGER_SYSVIEW_PREPARE_PACKET(aPacket); // Prepare the packet for SystemView
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para0); // Add the first parameter to the packet
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para1); // Add the second parameter to the packet
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para2); // Add the third parameter to the packet
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para3); // Add the fourth parameter to the packet
pPayload = SEGGER_SYSVIEW_EncodeU32(pPayload, Para4); // Add the fifth parameter to the packet
//
SEGGER_SYSVIEW_SendPacket(&aPacket[0], pPayload, Id); // Send the packet
}
/*********************************************************************
*
* Public API structures
*
**********************************************************************
*/
// Callbacks provided to SYSTEMVIEW by FreeRTOS
const SEGGER_SYSVIEW_OS_API SYSVIEW_X_OS_TraceAPI = {
_cbGetTime,
_cbSendTaskList,
};
/*************************** End of file ****************************/

View File

@@ -0,0 +1,6 @@
set(COMPONENT_SRCDIRS ".")
set(COMPONENT_ADD_INCLUDEDIRS ".")
set(COMPONENT_REQUIRES unity)
register_component()

View File

@@ -1,7 +1,17 @@
set(COMPONENT_SRCS "esp_ota_ops.c")
set(COMPONENT_ADD_INCLUDEDIRS "include")
set(COMPONENT_REQUIRES spi_flash)
set(COMPONENT_REQUIRES spi_flash partition_table)
set(COMPONENT_PRIV_REQUIRES bootloader_support)
register_component()
# Add custom target for generating empty otadata partition for flashing
if(${OTADATA_PARTITION_OFFSET})
add_custom_command(OUTPUT "${PROJECT_BINARY_DIR}/${BLANK_OTADATA_FILE}"
COMMAND ${PYTHON} ${CMAKE_CURRENT_SOURCE_DIR}/gen_empty_partition.py
--size ${OTADATA_PARTITION_SIZE} "${PROJECT_BINARY_DIR}/${BLANK_OTADATA_FILE}")
add_custom_target(blank_ota_data ALL DEPENDS "${PROJECT_BINARY_DIR}/${BLANK_OTADATA_FILE}")
add_dependencies(flash blank_ota_data)
endif()

View File

@@ -0,0 +1,60 @@
# Generate partition binary
#
.PHONY: dump_otadata erase_ota blank_ota_data
GEN_EMPTY_PART := $(PYTHON) $(COMPONENT_PATH)/gen_empty_partition.py
BLANK_OTA_DATA_FILE = $(BUILD_DIR_BASE)/ota_data_initial.bin
PARTITION_TABLE_LEN := 0xC00
OTADATA_LEN := 0x2000
PARTITION_TABLE_ONCHIP_BIN_PATH := $(call dequote,$(abspath $(BUILD_DIR_BASE)))
PARTITION_TABLE_ONCHIP_BIN_NAME := "onchip_partition.bin"
OTADATA_ONCHIP_BIN_NAME := "onchip_otadata.bin"
PARTITION_TABLE_ONCHIP_BIN := $(PARTITION_TABLE_ONCHIP_BIN_PATH)/$(call dequote,$(PARTITION_TABLE_ONCHIP_BIN_NAME))
OTADATA_ONCHIP_BIN := $(PARTITION_TABLE_ONCHIP_BIN_PATH)/$(call dequote,$(OTADATA_ONCHIP_BIN_NAME))
PARTITION_TABLE_GET_BIN_CMD = $(ESPTOOLPY_SERIAL) read_flash $(PARTITION_TABLE_OFFSET) $(PARTITION_TABLE_LEN) $(PARTITION_TABLE_ONCHIP_BIN)
OTADATA_GET_BIN_CMD = $(ESPTOOLPY_SERIAL) read_flash $(OTADATA_OFFSET) $(OTADATA_LEN) $(OTADATA_ONCHIP_BIN)
GEN_OTADATA = $(IDF_PATH)/components/app_update/dump_otadata.py
ERASE_OTADATA_CMD = $(ESPTOOLPY_SERIAL) erase_region $(OTADATA_OFFSET) $(OTADATA_LEN)
# 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)
$(PARTITION_TABLE_ONCHIP_BIN):
$(PARTITION_TABLE_GET_BIN_CMD)
onchip_otadata_get_info: $(PARTITION_TABLE_ONCHIP_BIN)
$(eval OTADATA_OFFSET:=$(shell $(GET_PART_INFO) --type data --subtype ota --offset $(PARTITION_TABLE_ONCHIP_BIN)))
@echo $(if $(OTADATA_OFFSET), $(shell export OTADATA_OFFSET), $(shell rm -f $(PARTITION_TABLE_ONCHIP_BIN));$(error "ERROR: ESP32 does not have otadata partition."))
$(OTADATA_ONCHIP_BIN):
$(OTADATA_GET_BIN_CMD)
dump_otadata: onchip_otadata_get_info $(OTADATA_ONCHIP_BIN) $(PARTITION_TABLE_ONCHIP_BIN)
@echo "otadata retrieved. Contents:"
@echo $(SEPARATOR)
$(GEN_OTADATA) $(OTADATA_ONCHIP_BIN)
@echo $(SEPARATOR)
rm -f $(PARTITION_TABLE_ONCHIP_BIN)
rm -f $(OTADATA_ONCHIP_BIN)
$(BLANK_OTA_DATA_FILE): partition_table_get_info
$(GEN_EMPTY_PART) --size $(OTA_DATA_SIZE) $(BLANK_OTA_DATA_FILE)
$(eval BLANK_OTA_DATA_FILE = $(shell if [ $(OTA_DATA_SIZE) != 0 ]; then echo $(BLANK_OTA_DATA_FILE); else echo " "; fi) )
blank_ota_data: $(BLANK_OTA_DATA_FILE)
erase_ota: partition_table_get_info | check_python_dependencies
@echo $(if $(OTA_DATA_OFFSET), "Erase ota_data [addr=$(OTA_DATA_OFFSET) size=$(OTA_DATA_SIZE)] ...", $(error "ERROR: Partition table does not have ota_data partition."))
$(ESPTOOLPY_SERIAL) erase_region $(OTA_DATA_OFFSET) $(OTA_DATA_SIZE)
all: blank_ota_data
flash: blank_ota_data
clean:
rm -f $(BLANK_OTA_DATA_FILE)

View File

@@ -0,0 +1,88 @@
#!/usr/bin/env python
#
# gen_otadata prints info about the otadata partition.
#
# 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 os
import re
import struct
import sys
import hashlib
import binascii
__version__ = '1.0'
quiet = False
def status(msg):
""" Print status message to stderr """
if not quiet:
critical(msg)
def critical(msg):
""" Print critical message to stderr """
if not quiet:
sys.stderr.write(msg)
sys.stderr.write('\n')
def little_endian(buff, offset):
data = buff[offset:offset+4]
data.reverse()
data = ''.join(data)
return data
def main():
global quiet
parser = argparse.ArgumentParser(description='Prints otadata partition in human readable form.')
parser.add_argument('--quiet', '-q', help="Don't print status messages to stderr", action='store_true')
search_type = parser.add_mutually_exclusive_group()
parser.add_argument('input', help='Path to binary file containing otadata partition to parse.',
type=argparse.FileType('rb'))
args = parser.parse_args()
quiet = args.quiet
input = args.input.read()
hex_input_0 = binascii.hexlify(input)
hex_input_0 = map(''.join, zip(*[iter(hex_input_0)]*2))
hex_input_1 = binascii.hexlify(input[4096:])
hex_input_1 = map(''.join, zip(*[iter(hex_input_1)]*2))
print("\t%11s\t%8s |\t%8s\t%8s" %("OTA_SEQ", "CRC", "OTA_SEQ", "CRC"))
print("Firmware: 0x%s \t 0x%s |\t0x%s \t 0x%s" % (little_endian(hex_input_0, 0), little_endian(hex_input_0, 28), \
little_endian(hex_input_1, 0), little_endian(hex_input_1, 28)))
class InputError(RuntimeError):
def __init__(self, e):
super(InputError, self).__init__(e)
class ValidationError(InputError):
def __init__(self, partition, message):
super(ValidationError, self).__init__(
"Partition %s invalid: %s" % (partition.name, message))
if __name__ == '__main__':
try:
r = main()
sys.exit(r)
except InputError as e:
print(e, file=sys.stderr)
sys.exit(2)

View File

@@ -38,9 +38,9 @@
#include "esp_log.h"
#define OTA_MAX(a,b) ((a) >= (b) ? (a) : (b))
#define OTA_MIN(a,b) ((a) <= (b) ? (a) : (b))
#define SUB_TYPE_ID(i) (i & 0x0F)
#define OTA_MAX(a,b) ((a) >= (b) ? (a) : (b))
#define OTA_MIN(a,b) ((a) <= (b) ? (a) : (b))
#define SUB_TYPE_ID(i) (i & 0x0F)
typedef struct ota_ops_entry_ {
uint32_t handle;
@@ -145,8 +145,9 @@ esp_err_t esp_ota_write(esp_ota_handle_t handle, const void *data, size_t size)
if (it->handle == handle) {
// 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]);
if(it->wrote_size == 0 && size > 0 && data_bytes[0] != 0xE9) {
ESP_LOGE(TAG, "OTA image has invalid magic byte (expected 0xE9, saw 0x%02x", data_bytes[0]);
return ESP_ERR_OTA_VALIDATE_FAILED;
}
@@ -235,7 +236,7 @@ esp_err_t esp_ota_end(esp_ota_handle_t handle)
.size = it->part->size,
};
if (esp_image_load(ESP_IMAGE_VERIFY, &part_pos, &data) != ESP_OK) {
if (esp_image_verify(ESP_IMAGE_VERIFY, &part_pos, &data) != ESP_OK) {
ret = ESP_ERR_OTA_VALIDATE_FAILED;
goto cleanup;
}
@@ -302,10 +303,10 @@ static esp_err_t esp_rewrite_ota_data(esp_partition_subtype_t subtype)
//named data in first sector as s_ota_select[0], second sector data as s_ota_select[1]
//e.g.
//if s_ota_select[0].ota_seq == s_ota_select[1].ota_seq == 0xFFFFFFFF,means ota info partition is in init status
//so it will boot factory application(if there is),if there's no factory application,it will boot ota[0] application
//so it will boot factory application(if there is),if there's no factory application,it will boot ota[0] application
//if s_ota_select[0].ota_seq != 0 and s_ota_select[1].ota_seq != 0,it will choose a max seq ,and get value of max_seq%max_ota_app_number
//and boot a subtype (mask 0x0F) value is (max_seq - 1)%max_ota_app_number,so if want switch to run ota[x],can use next formulas.
//for example, if s_ota_select[0].ota_seq = 4, s_ota_select[1].ota_seq = 5, and there are 8 ota application,
//for example, if s_ota_select[0].ota_seq = 4, s_ota_select[1].ota_seq = 5, and there are 8 ota application,
//current running is (5-1)%8 = 4,running ota[4],so if we want to switch to run ota[7],
//we should add s_ota_select[0].ota_seq (is 4) to 4 ,(8-1)%8=7,then it will boot ota[7]
//if A=(B - C)%D
@@ -372,7 +373,7 @@ esp_err_t esp_ota_set_boot_partition(const esp_partition_t *partition)
.offset = partition->address,
.size = partition->size,
};
if (esp_image_load(ESP_IMAGE_VERIFY, &part_pos, &data) != ESP_OK) {
if (esp_image_verify(ESP_IMAGE_VERIFY, &part_pos, &data) != ESP_OK) {
return ESP_ERR_OTA_VALIDATE_FAILED;
}

View File

@@ -0,0 +1,82 @@
#!/usr/bin/env python
#
# generates an empty binary file
#
# This tool generates an empty binary file of the required size.
#
# 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
from __future__ import unicode_literals
import argparse
import os
import re
import struct
import sys
import hashlib
import binascii
__version__ = '1.0'
quiet = False
def status(msg):
""" Print status message to stderr """
if not quiet:
critical(msg)
def critical(msg):
""" Print critical message to stderr """
if not quiet:
sys.stderr.write(msg)
sys.stderr.write('\n')
def generate_blanked_file(size, output_path):
output = b"\xFF" * size
try:
stdout_binary = sys.stdout.buffer # Python 3
except AttributeError:
stdout_binary = sys.stdout
with stdout_binary if output_path == '-' else open(output_path, 'wb') as f:
f.write(output)
def main():
global quiet
parser = argparse.ArgumentParser(description='Generates an empty binary file of the required size.')
parser.add_argument('--quiet', '-q', help="Don't print status messages to stderr", action='store_true')
parser.add_argument('--size', help='Size of generated the file', type=str, required=True)
parser.add_argument('output', help='Path for binary file.', nargs='?', default='-')
args = parser.parse_args()
quiet = args.quiet
size = int(args.size, 0)
if size > 0 :
generate_blanked_file(size, args.output)
return 0
class InputError(RuntimeError):
def __init__(self, e):
super(InputError, self).__init__(e)
if __name__ == '__main__':
try:
r = main()
sys.exit(r)
except InputError as e:
print(e, file=sys.stderr)
sys.exit(2)

View File

@@ -132,7 +132,7 @@ esp_err_t esp_ota_set_boot_partition(const esp_partition_t* partition);
* If the OTA data partition is not present or not valid then the result is the first app partition found in the
* partition table. In priority order, this means: the factory app, the first OTA app slot, or the test app partition.
*
* Note that there is no guarantee the returned partition is a valid app. Use esp_image_load(ESP_IMAGE_VERIFY, ...) to verify if the
* Note that there is no guarantee the returned partition is a valid app. Use esp_image_verify(ESP_IMAGE_VERIFY, ...) to verify if the
* returned partition contains a bootable image.
*
* @return Pointer to info for partition structure, or NULL if partition table is invalid or a flash read operation failed. Any returned pointer is valid for the lifetime of the application.

View File

@@ -0,0 +1,8 @@
# 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})
set(BLANK_OTADATA_FILE "ota_data_initial.bin")
endif()

View File

@@ -0,0 +1,6 @@
set(COMPONENT_SRCDIRS ".")
set(COMPONENT_ADD_INCLUDEDIRS ".")
set(COMPONENT_REQUIRES unity app_update bootloader_support nvs_flash)
register_component()

View File

@@ -0,0 +1,478 @@
/*
* Tests for switching between partitions: factory, OTAx, test.
*/
#include <esp_types.h>
#include <stdio.h>
#include "string.h"
#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.h"
#include "esp_log.h"
#include "esp_ota_ops.h"
#include "esp_partition.h"
#include "esp_flash_partitions.h"
#include "esp_image_format.h"
#include "nvs_flash.h"
#include "driver/gpio.h"
#include "sdkconfig.h"
RTC_DATA_ATTR static int boot_count = 0;
static const char *TAG = "ota_test";
/* @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(esp_ota_handle_t update_handle, const esp_partition_t *curr_app)
{
const void *partition_bin = NULL;
spi_flash_mmap_handle_t data_map;
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);
}
#if defined(CONFIG_BOOTLOADER_FACTORY_RESET) || defined(CONFIG_BOOTLOADER_APP_TEST)
/* @brief Copies partition from source partition to destination partition.
*
* Partitions can be of any types and subtypes.
* @param[in] dst_partition - Destination partition
* @param[in] src_partition - Source partition
*/
static void copy_partition(const esp_partition_t *dst_partition, const esp_partition_t *src_partition)
{
const void *partition_bin = NULL;
spi_flash_mmap_handle_t data_map;
TEST_ESP_OK(esp_partition_mmap(src_partition, 0, src_partition->size, SPI_FLASH_MMAP_DATA, &partition_bin, &data_map));
TEST_ESP_OK(esp_partition_erase_range(dst_partition, 0, dst_partition->size));
TEST_ESP_OK(esp_partition_write(dst_partition, 0, (const void *)partition_bin, dst_partition->size));
spi_flash_munmap(data_map);
}
#endif
/* @brief Get the next partition of OTA for the update.
*
* @return The next partition of OTA(OTA0-15).
*/
static const esp_partition_t * get_next_update_partition(void)
{
const esp_partition_t *update_partition = esp_ota_get_next_update_partition(NULL);
TEST_ASSERT_NOT_EQUAL(NULL, update_partition);
ESP_LOGI(TAG, "Writing to partition subtype %d at offset 0x%x", update_partition->subtype, update_partition->address);
return update_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(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(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)
{
const esp_partition_t *data_partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_OTA, NULL);
TEST_ASSERT_NOT_EQUAL(NULL, data_partition);
TEST_ESP_OK(esp_partition_erase_range(data_partition, 0, 2 * SPI_FLASH_SEC_SIZE));
}
/* @brief Reboots ESP using mode deep sleep. This mode guaranty that RTC_DATA_ATTR variables is not reset.
*/
static void reboot_as_deep_sleep(void)
{
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()
{
const esp_partition_t *cur_app = esp_ota_get_running_partition();
copy_current_app_to_next_part(cur_app, get_next_update_partition());
reboot_as_deep_sleep();
}
/* @brief Get running app.
*
* @return The next partition of OTA(OTA0-15).
*/
static const esp_partition_t* get_running_firmware(void)
{
const esp_partition_t *configured = esp_ota_get_boot_partition();
const esp_partition_t *running = esp_ota_get_running_partition();
ESP_LOGI(TAG, "Running partition type %d subtype %d (offset 0x%08x)",
running->type, running->subtype, running->address);
ESP_LOGI(TAG, "Configured partition type %d subtype %d (offset 0x%08x)",
configured->type, configured->subtype, configured->address);
TEST_ASSERT_NOT_EQUAL(NULL, configured);
TEST_ASSERT_NOT_EQUAL(NULL, running);
if (running->subtype != ESP_PARTITION_SUBTYPE_APP_TEST) {
TEST_ASSERT_EQUAL_PTR(running, configured);
}
return running;
}
// type of a corrupt ota_data
typedef enum {
CORR_CRC_1_SECTOR_OTA_DATA = (1 << 0), /*!< Corrupt CRC only 1 sector of ota_data */
CORR_CRC_2_SECTOR_OTA_DATA = (1 << 1), /*!< Corrupt CRC only 2 sector of ota_data */
} corrupt_ota_data_t;
/* @brief Get two copies ota_data from otadata partition.
*
* @param[in] otadata_partition - otadata partition.
* @param[out] ota_data_0 - First copy from otadata_partition.
* @param[out] ota_data_1 - Second copy from otadata_partition.
*/
static void get_ota_data(const esp_partition_t *otadata_partition, esp_ota_select_entry_t *ota_data_0, esp_ota_select_entry_t *ota_data_1)
{
uint32_t offset = otadata_partition->address;
uint32_t size = otadata_partition->size;
if (offset != 0) {
const esp_ota_select_entry_t *ota_select_map;
ota_select_map = bootloader_mmap(offset, size);
TEST_ASSERT_NOT_EQUAL(NULL, ota_select_map);
memcpy(ota_data_0, ota_select_map, sizeof(esp_ota_select_entry_t));
memcpy(ota_data_1, (uint8_t *)ota_select_map + SPI_FLASH_SEC_SIZE, sizeof(esp_ota_select_entry_t));
bootloader_munmap(ota_select_map);
}
}
/* @brief Writes a ota_data into required sector of otadata_partition.
*
* @param[in] otadata_partition - Partition information otadata.
* @param[in] ota_data - otadata structure.
* @param[in] sec_id - Sector number 0 or 1.
*/
static void write_ota_data(const esp_partition_t *otadata_partition, esp_ota_select_entry_t *ota_data, int sec_id)
{
esp_partition_write(otadata_partition, SPI_FLASH_SEC_SIZE * sec_id, &ota_data[sec_id], sizeof(esp_ota_select_entry_t));
}
/* @brief Makes a corrupt of ota_data.
* @param[in] err - type error
*/
static void corrupt_ota_data(corrupt_ota_data_t err)
{
esp_ota_select_entry_t ota_data[2];
const esp_partition_t *otadata_partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_OTA, NULL);
TEST_ASSERT_NOT_EQUAL(NULL, otadata_partition);
get_ota_data(otadata_partition, &ota_data[0], &ota_data[1]);
if (err & CORR_CRC_1_SECTOR_OTA_DATA) {
ota_data[0].crc = 0;
}
if (err & CORR_CRC_2_SECTOR_OTA_DATA) {
ota_data[1].crc = 0;
}
TEST_ESP_OK(esp_partition_erase_range(otadata_partition, 0, otadata_partition->size));
write_ota_data(otadata_partition, &ota_data[0], 0);
write_ota_data(otadata_partition, &ota_data[1], 1);
}
#if defined(CONFIG_BOOTLOADER_FACTORY_RESET) || defined(CONFIG_BOOTLOADER_APP_TEST)
/* @brief Sets the pin number to output and sets output level as low. After reboot (deep sleep) this pin keep the same level.
*
* The output level of the pad will be force locked and can not be changed.
* Power down or call gpio_hold_dis will disable this function.
*
* @param[in] num_pin - Pin number
*/
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_PIN_INTR_DISABLE;
io_conf.mode = GPIO_MODE_OUTPUT;
io_conf.pin_bit_mask = (1ULL << num_pin);
io_conf.pull_down_en = 0;
io_conf.pull_up_en = 0;
TEST_ESP_OK(gpio_config(&io_conf));
TEST_ESP_OK(gpio_set_level(num_pin, 0));
TEST_ESP_OK(gpio_hold_en(num_pin));
}
/* @brief Unset the pin number hold function.
*/
static void reset_output_pin(uint32_t num_pin)
{
TEST_ESP_OK(gpio_hold_dis(num_pin));
TEST_ESP_OK(gpio_reset_pin(num_pin));
}
#endif
/* @brief Checks and prepares the partition so that the factory app is launched after that.
*/
static void start_test(void)
{
ESP_LOGI(TAG, "boot count 1 - reset");
boot_count = 1;
erase_ota_data();
reboot_as_deep_sleep();
}
static void test_flow1(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_and_reboot(cur_app);
break;
case 3:
ESP_LOGI(TAG, "OTA0");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_OTA_0, cur_app->subtype);
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);
copy_current_app_to_next_part_and_reboot(cur_app);
break;
case 5:
ESP_LOGI(TAG, "OTA0");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_OTA_0, cur_app->subtype);
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 -> copy OTA0 to OTA1 -> reboot --//--
// 4 Stage: run OTA1 -> check it -> copy OTA1 to OTA0 -> reboot --//--
// 5 Stage: run OTA0 -> check it -> erase OTA_DATA for next tests -> PASS
TEST_CASE_MULTIPLE_STAGES("Switching between factory, OTA0, OTA1, OTA0", "[app_update][reset=DEEPSLEEP_RESET, DEEPSLEEP_RESET, DEEPSLEEP_RESET, DEEPSLEEP_RESET]", start_test, test_flow1, test_flow1, test_flow1, test_flow1);
static void test_flow2(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_and_reboot(cur_app);
break;
case 3:
ESP_LOGI(TAG, "OTA0");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_OTA_0, cur_app->subtype);
copy_current_app_to_next_part(cur_app, get_next_update_partition());
corrupt_ota_data(CORR_CRC_1_SECTOR_OTA_DATA);
reboot_as_deep_sleep();
break;
case 4:
ESP_LOGI(TAG, "Factory");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_FACTORY, cur_app->subtype);
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 -> corrupt ota data -> reboot --//--
// 4 Stage: run factory -> check it -> erase OTA_DATA for next tests -> PASS
TEST_CASE_MULTIPLE_STAGES("Switching between factory, OTA0, corrupt ota_sec1, factory", "[app_update][reset=DEEPSLEEP_RESET, DEEPSLEEP_RESET, DEEPSLEEP_RESET]", start_test, test_flow2, test_flow2, test_flow2);
static void test_flow3(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_and_reboot(cur_app);
break;
case 3:
ESP_LOGI(TAG, "OTA0");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_OTA_0, cur_app->subtype);
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);
copy_current_app_to_next_part(cur_app, get_next_update_partition());
corrupt_ota_data(CORR_CRC_2_SECTOR_OTA_DATA);
reboot_as_deep_sleep();
break;
case 5:
ESP_LOGI(TAG, "OTA0");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_OTA_0, cur_app->subtype);
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 -> copy OTA0 to OTA1 -> reboot --//--
// 3 Stage: run OTA1 -> check it -> corrupt ota sector2 -> reboot --//--
// 4 Stage: run OTA0 -> check it -> erase OTA_DATA for next tests -> PASS
TEST_CASE_MULTIPLE_STAGES("Switching between factory, OTA0, OTA1, currupt ota_sec2, OTA0", "[app_update][reset=DEEPSLEEP_RESET, DEEPSLEEP_RESET, DEEPSLEEP_RESET, DEEPSLEEP_RESET]", start_test, test_flow3, test_flow3, test_flow3, test_flow3);
#ifdef CONFIG_BOOTLOADER_FACTORY_RESET
#define STORAGE_NAMESPACE "update_ota"
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 handle = 0;
int boot_count_nvs = 0;
switch (boot_count) {
case 2:
ESP_LOGI(TAG, "Factory");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_FACTORY, cur_app->subtype);
TEST_ESP_OK(nvs_flash_erase());
TEST_ESP_OK(nvs_flash_init());
TEST_ESP_OK(nvs_open(STORAGE_NAMESPACE, NVS_READWRITE, &handle));
TEST_ESP_OK(nvs_set_i32(handle, "boot_count", boot_count));
TEST_ESP_OK(nvs_commit(handle));
nvs_close(handle);
nvs_flash_deinit();
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);
TEST_ESP_OK(nvs_flash_init());
TEST_ESP_OK(nvs_open(STORAGE_NAMESPACE, NVS_READWRITE, &handle));
TEST_ESP_OK(nvs_get_i32(handle, "boot_count", &boot_count_nvs));
TEST_ASSERT_EQUAL(boot_count_nvs + 1, boot_count);
nvs_close(handle);
nvs_flash_deinit();
set_output_pin(CONFIG_BOOTLOADER_NUM_PIN_FACTORY_RESET);
reboot_as_deep_sleep();
break;
case 4:
reset_output_pin(CONFIG_BOOTLOADER_NUM_PIN_FACTORY_RESET);
ESP_LOGI(TAG, "Factory");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_FACTORY, cur_app->subtype);
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));
nvs_close(handle);
nvs_flash_deinit();
erase_ota_data();
break;
default:
reset_output_pin(CONFIG_BOOTLOADER_NUM_PIN_FACTORY_RESET);
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 -> set_pin_factory_reset -> reboot --//--
// 4 Stage: run factory -> check it -> erase OTA_DATA for next tests -> PASS
TEST_CASE_MULTIPLE_STAGES("Switching between factory, OTA0, sets pin_factory_reset, factory", "[app_update][reset=DEEPSLEEP_RESET, DEEPSLEEP_RESET, DEEPSLEEP_RESET]", start_test, test_flow4, test_flow4, test_flow4);
#endif
#ifdef CONFIG_BOOTLOADER_APP_TEST
static void test_flow5(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);
set_output_pin(CONFIG_BOOTLOADER_NUM_PIN_APP_TEST);
copy_partition(esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_TEST, NULL), cur_app);
esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_OTA, NULL);
reboot_as_deep_sleep();
break;
case 3:
reset_output_pin(CONFIG_BOOTLOADER_NUM_PIN_APP_TEST);
ESP_LOGI(TAG, "Test");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_TEST, cur_app->subtype);
reboot_as_deep_sleep();
break;
case 4:
ESP_LOGI(TAG, "Factory");
TEST_ASSERT_EQUAL(ESP_PARTITION_SUBTYPE_APP_FACTORY, cur_app->subtype);
erase_ota_data();
break;
default:
reset_output_pin(CONFIG_BOOTLOADER_NUM_PIN_APP_TEST);
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 Test and set pin_test_app -> reboot --//--
// 3 Stage: run test -> check it -> reset pin_test_app -> reboot --//--
// 4 Stage: run factory -> check it -> erase OTA_DATA for next tests -> PASS
TEST_CASE_MULTIPLE_STAGES("Switching between factory, test, factory", "[app_update][reset=DEEPSLEEP_RESET, DEEPSLEEP_RESET, DEEPSLEEP_RESET]", start_test, test_flow5, test_flow5, test_flow5);
#endif

View File

@@ -0,0 +1,6 @@
set(COMPONENT_ADD_INCLUDEDIRS asio/asio/include port/include)
set(COMPONENT_SRCS "asio/asio/src/asio.cpp")
set(COMPONENT_REQUIRES lwip)
register_component()

1
components/asio/asio Submodule

Submodule components/asio/asio added at 55efc179b7

View File

@@ -0,0 +1,6 @@
COMPONENT_ADD_INCLUDEDIRS := asio/asio/include port/include
COMPONENT_PRIV_INCLUDEDIRS := private_include
COMPONENT_SRCDIRS := asio/asio/src
COMPONENT_OBJEXCLUDE := asio/asio/src/asio_ssl.o
COMPONENT_SUBMODULES += asio

View File

@@ -0,0 +1,45 @@
// 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_
//
// Enabling exceptions only when they are enabled in menuconfig
//
# include <sdkconfig.h>
# ifndef CONFIG_CXX_EXCEPTIONS
# define ASIO_NO_EXCEPTIONS
# endif // CONFIG_CXX_EXCEPTIONS
//
// LWIP compatifility inet and address macros/functions
//
# define LWIP_COMPAT_SOCKET_INET 1
# define LWIP_COMPAT_SOCKET_ADDR 1
//
// Specific ASIO feature flags
//
# define ASIO_DISABLE_SERIAL_PORT
# define ASIO_SEPARATE_COMPILATION
# define ASIO_STANDALONE
# define ASIO_NO_TYPEID
# define ASIO_DISABLE_SIGNAL
# define ASIO_HAS_PTHREADS
# define ASIO_DISABLE_EPOLL
# define ASIO_DISABLE_EVENTFD
# define ASIO_DISABLE_SIGNAL
# define ASIO_DISABLE_SIGACTION
#endif // _ESP_ASIO_CONFIG_H_

View File

@@ -0,0 +1,39 @@
// 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_CXX_EXCEPTIONS) && defined (ASIO_NO_EXCEPTIONS)
#include "esp_log.h"
//
// asio exception stub
//
namespace asio {
namespace detail {
template <typename Exception>
void throw_exception(const Exception& e)
{
ESP_LOGE("esp32_asio_exception", "Caught exception: %s!", e.what());
abort();
}
}}
#endif // CONFIG_CXX_EXCEPTIONS==1 && defined (ASIO_NO_EXCEPTIONS)
#endif // _ESP_EXCEPTION_H_

View File

@@ -1,18 +1,22 @@
if(CONFIG_AWS_IOT_SDK)
set(COMPONENT_ADD_INCLUDEDIRS "include aws-iot-device-sdk-embedded-C/include")
set(aws_sdk_src aws-iot-device-sdk-embedded-C/src)
set(COMPONENT_SRCS "${aws_sdk_src}/aws_iot_json_utils.c"
"${aws_sdk_src}/aws_iot_mqtt_client.c"
"${aws_sdk_src}/aws_iot_mqtt_client_common_internal.c"
"${aws_sdk_src}/aws_iot_mqtt_client_connect.c"
"${aws_sdk_src}/aws_iot_mqtt_client_publish.c"
"${aws_sdk_src}/aws_iot_mqtt_client_subscribe.c"
"${aws_sdk_src}/aws_iot_mqtt_client_unsubscribe.c"
"${aws_sdk_src}/aws_iot_mqtt_client_yield.c"
"${aws_sdk_src}/aws_iot_shadow.c"
"${aws_sdk_src}/aws_iot_shadow_actions.c"
"${aws_sdk_src}/aws_iot_shadow_json.c"
"${aws_sdk_src}/aws_iot_shadow_records.c"
set(aws_sdk_dir aws-iot-device-sdk-embedded-C/src)
set(COMPONENT_SRCS "${aws_sdk_dir}/aws_iot_jobs_interface.c"
"${aws_sdk_dir}/aws_iot_jobs_json.c"
"${aws_sdk_dir}/aws_iot_jobs_topics.c"
"${aws_sdk_dir}/aws_iot_jobs_types.c"
"${aws_sdk_dir}/aws_iot_json_utils.c"
"${aws_sdk_dir}/aws_iot_mqtt_client.c"
"${aws_sdk_dir}/aws_iot_mqtt_client_common_internal.c"
"${aws_sdk_dir}/aws_iot_mqtt_client_connect.c"
"${aws_sdk_dir}/aws_iot_mqtt_client_publish.c"
"${aws_sdk_dir}/aws_iot_mqtt_client_subscribe.c"
"${aws_sdk_dir}/aws_iot_mqtt_client_unsubscribe.c"
"${aws_sdk_dir}/aws_iot_mqtt_client_yield.c"
"${aws_sdk_dir}/aws_iot_shadow.c"
"${aws_sdk_dir}/aws_iot_shadow_actions.c"
"${aws_sdk_dir}/aws_iot_shadow_json.c"
"${aws_sdk_dir}/aws_iot_shadow_records.c"
"port/network_mbedtls_wrapper.c"
"port/threads_freertos.c"
"port/timer.c")

View File

@@ -127,11 +127,42 @@ config BOOTLOADER_HOLD_TIME_GPIO
The GPIO must be held low continuously for this period of time after reset
before a factory reset or test partition boot (as applicable) is performed.
config BOOTLOADER_WDT_ENABLE
bool "Use RTC watchdog in start code"
default y
help
Tracks the execution time of startup code.
If the execution time is exceeded, the RTC_WDT will restart system.
It is also useful to prevent a lock up in start code caused by an unstable power source.
NOTE: Tracks the execution time starts from the bootloader code - re-set timeout, while selecting the source for slow_clk - and ends calling app_main.
Re-set timeout is needed due to WDT uses a SLOW_CLK clock source. After changing a frequency slow_clk a time of WDT needs to re-set for new frequency.
slow_clk depends on ESP32_RTC_CLOCK_SOURCE (INTERNAL_RC or EXTERNAL_CRYSTAL).
config BOOTLOADER_WDT_DISABLE_IN_USER_CODE
bool "Allows RTC watchdog disable in user code"
depends on BOOTLOADER_WDT_ENABLE
default n
help
If it is set, the client must itself reset or disable rtc_wdt in their code (app_main()).
Otherwise rtc_wdt will be disabled before calling app_main function.
Use function rtc_wdt_feed() for resetting counter of rtc_wdt.
Use function rtc_wdt_disable() for disabling rtc_wdt.
config BOOTLOADER_WDT_TIME_MS
int "Timeout for RTC watchdog (ms)"
depends on BOOTLOADER_WDT_ENABLE
default 9000
range 0 120000
help
Verify that this parameter is correct and more then the execution time.
Pay attention to options such as reset to factory, trigger test partition and encryption on boot
- these options can increase the execution time.
Note: RTC_WDT will reset while encryption operations will be performed.
endmenu # Bootloader
menu "Security features"
visible if !IDF_CMAKE
# These three are the actual options to check in code,
# selected by the displayed options
@@ -395,22 +426,4 @@ config SECURE_BOOT_TEST_MODE
endmenu # Potentially Insecure
config FLASH_ENCRYPTION_DISABLE_PLAINTEXT
bool "Disable serial reflashing of plaintext firmware"
depends on FLASH_ENCRYPTION_ENABLED
default y if SECURE_BOOT_ENABLED
default n if !SECURE_BOOT_ENABLED
help
If this option is enabled, flash encryption is permanently enabled after first boot by write-protecting
the FLASH_CRYPT_CNT efuse. This is the recommended configuration for a secure production system.
If this option is disabled, FLASH_CRYPT_CNT is left writeable and up to 4 plaintext re-flashes are allowed.
An attacker with physical access will be able to read out encrypted flash contents until all plaintext
re-flashes have been used up.
If this option is disabled and hardware Secure Boot is enabled, Secure Boot must be configured in
Reflashable mode so that a new Secure Boot digest can be flashed at the same time as plaintext firmware.
This combination is not secure and should not be used for a production system.
endmenu # Security features

View File

@@ -49,14 +49,14 @@ ifndef CONFIG_SECURE_BOOT_ENABLED
# If secure boot disabled, bootloader flashing is integrated
# with 'make flash' and no warnings are printed.
bootloader: $(BOOTLOADER_BIN)
bootloader: $(BOOTLOADER_BIN) | check_python_dependencies
@echo $(SEPARATOR)
@echo "Bootloader built. Default flash command is:"
@echo "$(ESPTOOLPY_WRITE_FLASH) $(BOOTLOADER_OFFSET) $^"
ESPTOOL_ALL_FLASH_ARGS += $(BOOTLOADER_OFFSET) $(BOOTLOADER_BIN)
bootloader-flash: $(BOOTLOADER_BIN) $(call prereq_if_explicit,erase_flash)
bootloader-flash: $(BOOTLOADER_BIN) $(call prereq_if_explicit,erase_flash) | check_python_dependencies
$(ESPTOOLPY_WRITE_FLASH) 0x1000 $^
else ifdef CONFIG_SECURE_BOOTLOADER_ONE_TIME_FLASH
@@ -67,7 +67,7 @@ else ifdef CONFIG_SECURE_BOOTLOADER_ONE_TIME_FLASH
# The flashing command is deliberately printed without an auto-reset
# step, so the device doesn't immediately reset to flash itself.
bootloader: $(BOOTLOADER_BIN)
bootloader: $(BOOTLOADER_BIN) | check_python_dependencies
@echo $(SEPARATOR)
@echo "Bootloader built. One-time flash command is:"
@echo "$(subst hard_reset,no_reset,$(ESPTOOLPY_WRITE_FLASH)) $(BOOTLOADER_OFFSET) $(BOOTLOADER_BIN)"
@@ -88,7 +88,7 @@ BOOTLOADER_DIGEST_BIN := $(BOOTLOADER_BUILD_DIR)/bootloader-reflash-digest.bin
SECURE_BOOTLOADER_KEY := $(BOOTLOADER_BUILD_DIR)/secure-bootloader-key-$(KEY_DIGEST_LEN).bin
ifdef CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES
$(SECURE_BOOTLOADER_KEY): $(SECURE_BOOT_SIGNING_KEY)
$(SECURE_BOOTLOADER_KEY): $(SECURE_BOOT_SIGNING_KEY) | check_python_dependencies
$(ESPSECUREPY) digest_private_key --keylen $(KEY_DIGEST_LEN) -k $< $@
else
$(SECURE_BOOTLOADER_KEY):
@@ -111,7 +111,7 @@ bootloader: $(BOOTLOADER_DIGEST_BIN)
@echo "* After first boot, only re-flashes of this kind (with same key) will be accepted."
@echo "* Not recommended to re-use the same secure boot keyfile on multiple production devices."
$(BOOTLOADER_DIGEST_BIN): $(BOOTLOADER_BIN) $(SECURE_BOOTLOADER_KEY)
$(BOOTLOADER_DIGEST_BIN): $(BOOTLOADER_BIN) $(SECURE_BOOTLOADER_KEY) | check_python_dependencies
@echo "DIGEST $(notdir $@)"
$(ESPSECUREPY) digest_secure_bootloader -k $(SECURE_BOOTLOADER_KEY) -o $@ $<
@@ -122,7 +122,7 @@ bootloader:
endif
ifndef CONFIG_SECURE_BOOT_ENABLED
# don't build bootloader by default is secure boot is enabled
# don't build bootloader by default if secure boot is enabled
all_binaries: $(BOOTLOADER_BIN)
endif

View File

@@ -15,10 +15,10 @@ set(bootloader_binary_files
externalproject_add(bootloader
# TODO: support overriding the bootloader in COMPONENT_PATHS
SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/subproject"
SOURCE_DIR "${IDF_PATH}/components/bootloader/subproject"
BINARY_DIR "${bootloader_build_dir}"
CMAKE_ARGS -DSDKCONFIG=${SDKCONFIG} -DIDF_PATH=${IDF_PATH}
-DEXTRA_COMPONENT_DIRS=${CMAKE_CURRENT_LIST_DIR}
CMAKE_ARGS -DSDKCONFIG=${SDKCONFIG} -DIDF_PATH=${IDF_PATH} -DEXTRA_COMPONENT_DIRS=${COMPONENT_DIRS}
-DTESTS_ALL=0 -DTEST_COMPONENTS=""
INSTALL_COMMAND ""
BUILD_ALWAYS 1 # no easy way around this...
BUILD_BYPRODUCTS ${bootloader_binary_files}

View File

@@ -18,7 +18,6 @@
#include "esp_log.h"
#include "rom/gpio.h"
#include "rom/spi_flash.h"
#include "rom/rtc.h"
#include "bootloader_config.h"
#include "bootloader_init.h"
#include "bootloader_utility.h"
@@ -35,18 +34,18 @@ static int selected_boot_partition(const bootloader_state_t *bs);
* The hardware is mostly uninitialized, flash cache is down and the app CPU is in reset.
* We do have a stack, so we can do the initialization in C.
*/
void call_start_cpu0()
void __attribute__((noreturn)) call_start_cpu0()
{
// 1. Hardware initialization
if (bootloader_init() != ESP_OK) {
return;
bootloader_reset();
}
// 2. Select the number of boot partition
bootloader_state_t bs = { 0 };
int boot_index = select_partition_number(&bs);
if (boot_index == INVALID_INDEX) {
return;
bootloader_reset();
}
// 3. Load the app image for booting
@@ -75,8 +74,7 @@ static int selected_boot_partition(const bootloader_state_t *bs)
int boot_index = bootloader_utility_get_selected_boot_partition(bs);
if (boot_index == INVALID_INDEX) {
return boot_index; // Unrecoverable failure (not due to corrupt ota data or bad partition contents)
}
if (rtc_get_reset_reason(0) != DEEPSLEEP_RESET) {
} else {
// Factory firmware.
#ifdef CONFIG_BOOTLOADER_FACTORY_RESET
if (bootloader_common_check_long_hold_gpio(CONFIG_BOOTLOADER_NUM_PIN_FACTORY_RESET, CONFIG_BOOTLOADER_HOLD_TIME_GPIO) == 1) {

View File

@@ -15,7 +15,12 @@ MEMORY
dport0_seg (RW) : org = 0x3FF00000, len = 0x10
/* IRAM POOL1, used for APP CPU cache. Bootloader runs from here during the final stage of loading the app because APP CPU is still held in reset, the main app enables APP CPU cache */
iram_loader_seg (RWX) : org = 0x40078000, len = 0x8000 /* 32KB, APP CPU cache */
iram_seg (RWX) : org = 0x40080000, len = 0x10000 /* 64KB, IRAM */
/* 63kB, IRAM. We skip the first 1k to prevent the entry point being
placed into the same range as exception vectors in the app.
This leads to idf_monitor decoding ROM bootloader "entry 0x40080xxx"
message as one of the exception vectors, which looks scary to users.
*/
iram_seg (RWX) : org = 0x40080400, len = 0xfc00
/* 64k at the end of DRAM, after ROM bootloader stack */
dram_seg (RW) : org = 0x3FFF0000, len = 0x10000
}
@@ -30,12 +35,13 @@ SECTIONS
.iram_loader.text :
{
. = ALIGN (16);
_stext = .;
_loader_text_start = ABSOLUTE(.);
*(.stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
*(.iram1 .iram1.*) /* catch stray IRAM_ATTR */
*liblog.a:(.literal .text .literal.* .text.*)
*libgcc.a:(.literal .text .literal.* .text.*)
*libbootloader_support.a:bootloader_common.o(.literal .text .literal.* .text.*)
*libbootloader_support.a:bootloader_common.*(.literal .text .literal.* .text.*)
*libbootloader_support.a:bootloader_flash.*(.literal .text .literal.* .text.*)
*libbootloader_support.a:bootloader_random.*(.literal .text .literal.* .text.*)
*libbootloader_support.a:bootloader_utility.*(.literal .text .literal.* .text.*)
@@ -53,6 +59,7 @@ SECTIONS
*(.fini)
*(.gnu.version)
_loader_text_end = ABSOLUTE(.);
_etext = .;
} > iram_loader_seg
.iram.text :

View File

@@ -1,7 +1,6 @@
set(COMPONENT_SRCS "src/bootloader_clock.c"
"src/bootloader_common.c"
"src/bootloader_flash.c"
"src/bootloader_flash_config.c"
"src/bootloader_random.c"
"src/bootloader_sha.c"
"src/bootloader_utility.c"
@@ -14,13 +13,13 @@ set(COMPONENT_SRCS "src/bootloader_clock.c"
"src/secure_boot_signatures.c")
if(${BOOTLOADER_BUILD})
set(COMPONENT_ADD_INCLUDEDIRS "include include_priv")
set(COMPONENT_ADD_INCLUDEDIRS "include include_bootloader")
set(COMPONENT_REQUIRES)
set(COMPONENT_PRIV_REQUIRES spi_flash micro-ecc)
list(APPEND COMPONENT_SRCS "src/bootloader_init.c")
else()
set(COMPONENT_ADD_INCLUDEDIRS "include")
set(COMPONENT_PRIV_INCLUDEDIRS "include_priv")
set(COMPONENT_PRIV_INCLUDEDIRS "include_bootloader")
set(COMPONENT_REQUIRES)
set(COMPONENT_PRIV_REQUIRES spi_flash mbedtls micro-ecc)
endif()

View File

@@ -1,10 +1,10 @@
COMPONENT_ADD_INCLUDEDIRS := include
COMPONENT_PRIV_INCLUDEDIRS := include_priv
ifdef IS_BOOTLOADER_BUILD
# share "private" headers with the bootloader component
# eventual goal: all functionality that needs this lives in bootloader_support
COMPONENT_ADD_INCLUDEDIRS += include_priv
# share "include_bootloader" headers with bootloader main component
COMPONENT_ADD_INCLUDEDIRS += include_bootloader
else
COMPONENT_PRIV_INCLUDEDIRS := include_bootloader
endif
COMPONENT_SRCDIRS := src

View File

@@ -14,7 +14,6 @@
#pragma once
#include "esp_flash_data_types.h"
#include "esp_image_format.h"
/// Type of hold a GPIO in low state
typedef enum {
@@ -23,11 +22,6 @@ typedef enum {
GPIO_NOT_HOLD = 0 /*!< If the GPIO input is not low */
} esp_comm_gpio_hold_t;
typedef enum {
ESP_IMAGE_BOOTLOADER,
ESP_IMAGE_APPLICATION
} esp_image_type;
/**
* @brief Calculate crc for the OTA data partition.
*
@@ -76,19 +70,24 @@ bool bootloader_common_erase_part_type_data(const char *list_erase, bool ota_dat
bool bootloader_common_label_search(const char *list, char *label);
/**
* @brief Get chip revision
* @brief Calculates a sha-256 for a given partition or returns a appended digest.
*
* @return Chip revision number
*/
uint8_t bootloader_common_get_chip_revision(void);
/**
* @brief Check if the image (bootloader and application) has valid chip ID and revision
* This function can be used to return the SHA-256 digest of application, bootloader and data partitions.
* For apps with SHA-256 appended to the app image, the result is the appended SHA-256 value for the app image content.
* The hash is verified before returning, if app content is invalid then the function returns ESP_ERR_IMAGE_INVALID.
* For apps without SHA-256 appended to the image, the result is the SHA-256 of all bytes in the app image.
* For other partition types, the result is the SHA-256 of the entire partition.
*
* @param[in] address Address of partition.
* @param[in] size Size of partition.
* @param[in] type Type of partition. For applications the type is 0, otherwise type is data.
* @param[out] out_sha_256 Returned SHA-256 digest for a given partition.
*
* @param[in] img_hdr: image header
* @param[in] type: image type, bootloader or application
* @return
* - ESP_OK: image and chip are matched well
* - ESP_FAIL: image doesn't match to the chip
* - ESP_OK: In case of successful operation.
* - ESP_ERR_INVALID_ARG: The size was 0 or the sha_256 was NULL.
* - ESP_ERR_NO_MEM: Cannot allocate memory for sha256 operation.
* - ESP_ERR_IMAGE_INVALID: App partition doesn't contain a valid app image.
* - ESP_FAIL: An allocation error occurred.
*/
esp_err_t bootloader_common_check_chip_validity(const esp_image_header_t* img_hdr, esp_image_type type);
esp_err_t bootloader_common_get_sha256_of_partition(uint32_t address, uint32_t size, int type, uint8_t *out_sha_256);

View File

@@ -1,71 +0,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.
#pragma once
#include "esp_image_format.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Update the flash id in g_rom_flashchip(global esp_rom_spiflash_chip_t structure).
*
* @return None
*/
void bootloader_flash_update_id();
/**
* @brief Set the flash CS setup and hold time.
*
* @note 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.
*
* @return None
*/
void bootloader_flash_cs_timing_config();
/**
* @brief Configure SPI flash clock.
*
* @note This function only set clock frequency for SPI0.
*
* @param pfhdr Pointer to App image header, from where to fetch flash settings.
*
* @return None
*/
void bootloader_flash_clock_config(const esp_image_header_t* pfhdr);
/**
* @brief Configure SPI flash gpio, include the IO matrix and drive strength configuration.
*
* @param pfhdr Pointer to App image header, from where to fetch flash settings.
*
* @return None
*/
void bootloader_flash_gpio_config(const esp_image_header_t* pfhdr);
/**
* @brief Configure SPI flash read dummy based on different mode and frequency.
*
* @param pfhdr Pointer to App image header, from where to fetch flash settings.
*
* @return None
*/
void bootloader_flash_dummy_config(const esp_image_header_t* pfhdr);
#ifdef __cplusplus
}
#endif

View File

@@ -91,13 +91,6 @@ esp_err_t esp_efuse_apply_34_encoding(const uint8_t *in_bytes, uint32_t *out_wor
*/
void esp_efuse_write_random_key(uint32_t blk_wdata0_reg);
/**
* @brief Returns chip version from efuse
*
* @return chip version
*/
uint8_t esp_efuse_get_chip_ver(void);
#ifdef __cplusplus
}
#endif

View File

@@ -85,6 +85,8 @@ static inline /** @cond */ IRAM_ATTR /** @endcond */ bool esp_flash_encryption_e
* @note Take care not to power off the device while this function
* is running, or the partition currently being encrypted will be lost.
*
* @note RTC_WDT will reset while encryption operations will be performed (if RTC_WDT is configured).
*
* @return ESP_OK if all operations succeeded, ESP_ERR_INVALID_STATE
* if a fatal error occured during encryption of all partitions.
*/
@@ -93,6 +95,7 @@ esp_err_t esp_flash_encrypt_check_and_update(void);
/** @brief Encrypt-in-place a block of flash sectors
*
* @note This function resets RTC_WDT between operations with sectors.
* @param src_addr Source offset in flash. Should be multiple of 4096 bytes.
* @param data_length Length of data to encrypt in bytes. Will be rounded up to next multiple of 4096 bytes.
*
@@ -104,9 +107,8 @@ esp_err_t esp_flash_encrypt_region(uint32_t src_addr, size_t data_length);
/** @brief Write protect FLASH_CRYPT_CNT
*
* Intended to be called as a part of boot process if flash encryption
* should be permanently enabled. This should protect against serial
* re-flashing of an unauthorised code in absence of secure boot or if
* secure boot protection is bypassed.
* is enabled but secure boot is not used. This should protect against
* serial re-flashing of an unauthorised code in absence of secure boot.
*
* @return
*/

View File

@@ -36,7 +36,7 @@ typedef enum {
} esp_image_spi_mode_t;
/* SPI flash clock frequency */
enum {
typedef enum {
ESP_IMAGE_SPI_SPEED_40M,
ESP_IMAGE_SPI_SPEED_26M,
ESP_IMAGE_SPI_SPEED_20M,
@@ -55,19 +55,6 @@ typedef enum {
#define ESP_IMAGE_HEADER_MAGIC 0xE9
/**
* @brief ESP chip ID
*
*/
typedef enum {
ESP_CHIP_ID_ESP32 = 0x0000, /*!< chip ID: ESP32 */
ESP_CHIP_ID_INVALID = 0xFFFF /*!< Invalid chip ID (we defined it to make sure the esp_chip_id_t is 2 bytes size) */
} __attribute__((packed)) esp_chip_id_t;
/** @cond */
_Static_assert(sizeof(esp_chip_id_t) == 2, "esp_chip_id_t should be 16 bit");
/* Main header of binary image */
typedef struct {
uint8_t magic;
@@ -84,12 +71,8 @@ typedef struct {
uint8_t wp_pin;
/* Drive settings for the SPI flash pins (read by ROM bootloader) */
uint8_t spi_pin_drv[3];
/*!< Chip identification number */
esp_chip_id_t chip_id;
/*!< Minimum chip revision supported by image */
uint8_t min_chip_rev;
/*!< Reserved bytes in additional header space, currently unused */
uint8_t reserved[8];
/* Reserved bytes in ESP32 additional header space, currently unused */
uint8_t reserved[11];
/* If 1, a SHA256 digest "simple hash" (of the entire image) is appended after the checksum. Included in image length. This digest
* is separate to secure boot and only used for detecting corruption. For secure boot signed images, the signature
* is appended after this (and the simple hash is included in the signed data). */
@@ -115,11 +98,12 @@ typedef struct {
esp_image_segment_header_t segments[ESP_IMAGE_MAX_SEGMENTS]; /* Per-segment header data */
uint32_t segment_data[ESP_IMAGE_MAX_SEGMENTS]; /* Data offsets for each segment */
uint32_t image_len; /* Length of image on flash, in bytes */
uint8_t image_digest[32]; /* appended SHA-256 digest */
} esp_image_metadata_t;
/* Mode selection for esp_image_load() */
typedef enum {
ESP_IMAGE_VERIFY, /* Verify image contents, load metadata. Print errorsors. */
ESP_IMAGE_VERIFY, /* Verify image contents, load metadata. Print errors. */
ESP_IMAGE_VERIFY_SILENT, /* Verify image contents, load metadata. Don't print errors. */
#ifdef BOOTLOADER_BUILD
ESP_IMAGE_LOAD, /* Verify image contents, load to memory. Print errors. */
@@ -129,6 +113,11 @@ typedef enum {
/**
* @brief Verify and (optionally, in bootloader mode) load an app image.
*
* This name is deprecated and is included for compatibility with the ESP-IDF v3.x API.
* It will be removed in V4.0 version.
* Function has been renamed to esp_image_verify().
* Use function esp_image_verify() to verify a image. And use function bootloader_load_image() to load image from a bootloader space.
*
* If encryption is enabled, data will be transparently decrypted.
*
* @param mode Mode of operation (verify, silent verify, or load).
@@ -149,7 +138,60 @@ typedef enum {
* - ESP_ERR_IMAGE_INVALID if the image appears invalid.
* - ESP_ERR_INVALID_ARG if the partition or data pointers are invalid.
*/
esp_err_t esp_image_load(esp_image_load_mode_t mode, const esp_partition_pos_t *part, esp_image_metadata_t *data);
esp_err_t esp_image_load(esp_image_load_mode_t mode, const esp_partition_pos_t *part, esp_image_metadata_t *data) __attribute__((deprecated));
/**
* @brief Verify an app image.
*
* If encryption is enabled, data will be transparently decrypted.
*
* @param mode Mode of operation (verify, silent verify, or load).
* @param part Partition to load the app from.
* @param[inout] data Pointer to the image metadata structure which is be filled in by this function.
* 'start_addr' member should be set (to the start address of the image.)
* Other fields will all be initialised by this function.
*
* Image validation checks:
* - Magic byte.
* - Partition smaller than 16MB.
* - All segments & image fit in partition.
* - 8 bit image checksum is valid.
* - SHA-256 of image is valid (if image has this appended).
* - (Signature) if signature verification is enabled.
*
* @return
* - ESP_OK if verify or load was successful
* - ESP_ERR_IMAGE_FLASH_FAIL if a SPI flash error occurs
* - ESP_ERR_IMAGE_INVALID if the image appears invalid.
* - ESP_ERR_INVALID_ARG if the partition or data pointers are invalid.
*/
esp_err_t esp_image_verify(esp_image_load_mode_t mode, const esp_partition_pos_t *part, esp_image_metadata_t *data);
/**
* @brief Verify and load an app image (available only in space of bootloader).
*
* If encryption is enabled, data will be transparently decrypted.
*
* @param part Partition to load the app from.
* @param[inout] data Pointer to the image metadata structure which is be filled in by this function.
* 'start_addr' member should be set (to the start address of the image.)
* Other fields will all be initialised by this function.
*
* Image validation checks:
* - Magic byte.
* - Partition smaller than 16MB.
* - All segments & image fit in partition.
* - 8 bit image checksum is valid.
* - SHA-256 of image is valid (if image has this appended).
* - (Signature) if signature verification is enabled.
*
* @return
* - ESP_OK if verify or load was successful
* - ESP_ERR_IMAGE_FLASH_FAIL if a SPI flash error occurs
* - ESP_ERR_IMAGE_INVALID if the image appears invalid.
* - ESP_ERR_INVALID_ARG if the partition or data pointers are invalid.
*/
esp_err_t bootloader_load_image(const esp_partition_pos_t *part, esp_image_metadata_t *data);
/**
* @brief Verify the bootloader image.

View File

@@ -111,21 +111,4 @@ esp_err_t bootloader_flash_erase_sector(size_t sector);
*/
esp_err_t bootloader_flash_erase_range(uint32_t start_addr, uint32_t size);
/* Cache MMU block size */
#define MMU_BLOCK_SIZE 0x00010000
/* Cache MMU address mask (MMU tables ignore bits which are zero) */
#define MMU_FLASH_MASK (~(MMU_BLOCK_SIZE - 1))
/**
* @brief Calculate the number of cache pages to map
* @param size size of data to map
* @param vaddr virtual address where data will be mapped
* @return number of cache MMU pages required to do the mapping
*/
static inline uint32_t bootloader_cache_pages_to_map(uint32_t size, uint32_t vaddr)
{
return (size + (vaddr - (vaddr & MMU_FLASH_MASK)) + MMU_BLOCK_SIZE - 1) / MMU_BLOCK_SIZE;
}
#endif

View File

@@ -22,6 +22,7 @@
#include <stdint.h>
#include <stdlib.h>
#include "esp_err.h"
typedef void *bootloader_sha256_handle_t;
@@ -30,3 +31,26 @@ bootloader_sha256_handle_t bootloader_sha256_start();
void bootloader_sha256_data(bootloader_sha256_handle_t handle, const void *data, size_t data_len);
void bootloader_sha256_finish(bootloader_sha256_handle_t handle, uint8_t *digest);
/**
* @brief Converts an array to a printable string.
*
* This function is useful for printing SHA-256 digest.
* \code{c}
* // Example of using. image_hash will be printed
* #define HASH_LEN 32 // SHA-256 digest length
* ...
* char hash_print[HASH_LEN * 2 + 1];
* hash_print[HASH_LEN * 2] = 0;
* bootloader_sha256_hex_to_str(hash_print, image_hash, HASH_LEN);
* ESP_LOGI(TAG, %s", hash_print);
* \endcode
* @param[out] out_str Output string
* @param[in] in_array_hex Pointer to input array
* @param[in] len Length of input array
*
* @return ESP_OK: Successful
* ESP_ERR_INVALID_ARG: Error in the passed arguments
*/
esp_err_t bootloader_sha256_hex_to_str(char *out_str, const uint8_t *in_array_hex, size_t len);

View File

@@ -52,3 +52,13 @@ int bootloader_utility_get_selected_boot_partition(const bootloader_state_t *bs)
* @param[in] start_index The index from which the search for images begins.
*/
__attribute__((noreturn)) void bootloader_utility_load_boot_image(const bootloader_state_t *bs, int start_index);
/**
* @brief Software reset the ESP32
*
* Bootloader code should call this in the case that it cannot proceed.
*
* It is not recommended to call this function from an app (if called, the app will abort).
*/
__attribute__((noreturn)) void bootloader_reset(void);

View File

@@ -29,22 +29,22 @@ void bootloader_clock_configure()
uart_tx_wait_idle(0);
/* Set CPU to 80MHz. Keep other clocks unmodified. */
rtc_cpu_freq_t cpu_freq = RTC_CPU_FREQ_80M;
int cpu_freq_mhz = 80;
/* On ESP32 rev 0, switching to 80/160 MHz if clock was previously set to
/* On ESP32 rev 0, switching to 80MHz if clock was previously set to
* 240 MHz may cause the chip to lock up (see section 3.5 of the errata
* document). For rev. 0, switch to 240 instead if it has been enabled
* previously.
* document). For rev. 0, switch to 240 instead if it was chosen in
* menuconfig.
*/
uint32_t chip_ver_reg = REG_READ(EFUSE_BLK0_RDATA3_REG);
if ((chip_ver_reg & EFUSE_RD_CHIP_VER_REV1_M) == 0 &&
DPORT_REG_GET_FIELD(DPORT_CPU_PER_CONF_REG, DPORT_CPUPERIOD_SEL) == DPORT_CPUPERIOD_SEL_240) {
cpu_freq = RTC_CPU_FREQ_240M;
CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ == 240) {
cpu_freq_mhz = 240;
}
rtc_clk_config_t clk_cfg = RTC_CLK_CONFIG_DEFAULT();
clk_cfg.xtal_freq = CONFIG_ESP32_XTAL_FREQ;
clk_cfg.cpu_freq = cpu_freq;
clk_cfg.cpu_freq_mhz = cpu_freq_mhz;
clk_cfg.slow_freq = rtc_clk_slow_freq_get();
clk_cfg.fast_freq = rtc_clk_fast_freq_get();
rtc_clk_init(clk_cfg);

View File

@@ -27,10 +27,10 @@
#include "bootloader_flash.h"
#include "bootloader_common.h"
#include "soc/gpio_periph.h"
#include "soc/spi_reg.h"
#include "soc/efuse_reg.h"
#include "soc/apb_ctrl_reg.h"
#include "esp_image_format.h"
#include "bootloader_sha.h"
#define ESP_PARTITION_HASH_LEN 32 /* SHA-256 digest length */
static const char* TAG = "boot_comm";
@@ -126,7 +126,7 @@ bool bootloader_common_erase_part_type_data(const char *list_erase, bool ota_dat
fl_ota_data_erase = true;
}
// partition->label is not null-terminated string.
strncpy(label, (char *)&partition->label, sizeof(partition->label));
strncpy(label, (char *)&partition->label, sizeof(label) - 1);
if (fl_ota_data_erase == true || (bootloader_common_label_search(list_erase, label) == true)) {
err = bootloader_flash_erase_range(partition->pos.offset, partition->pos.size);
if (err != ESP_OK) {
@@ -150,49 +150,45 @@ bool bootloader_common_erase_part_type_data(const char *list_erase, bool ota_dat
return ret;
}
uint8_t bootloader_common_get_chip_revision(void)
esp_err_t bootloader_common_get_sha256_of_partition (uint32_t address, uint32_t size, int type, uint8_t *out_sha_256)
{
uint8_t eco_bit0, eco_bit1, eco_bit2;
eco_bit0 = (REG_READ(EFUSE_BLK0_RDATA3_REG) & 0xF000) >> 15;
eco_bit1 = (REG_READ(EFUSE_BLK0_RDATA5_REG) & 0x100000) >> 20;
eco_bit2 = (REG_READ(APB_CTRL_DATE_REG) & 0x80000000) >> 31;
uint32_t combine_value = (eco_bit2 << 2) | (eco_bit1 << 1) | eco_bit0;
uint8_t chip_ver = 0;
switch (combine_value) {
case 0:
chip_ver = 0;
break;
case 1:
chip_ver = 1;
break;
case 3:
chip_ver = 2;
break;
case 7:
chip_ver = 3;
break;
default:
chip_ver = 0;
break;
if (out_sha_256 == NULL || size == 0) {
return ESP_ERR_INVALID_ARG;
}
return chip_ver;
}
esp_err_t bootloader_common_check_chip_validity(const esp_image_header_t* img_hdr, esp_image_type type)
{
esp_err_t err = ESP_OK;
esp_chip_id_t chip_id = CONFIG_IDF_FIRMWARE_CHIP_ID;
if (chip_id != img_hdr->chip_id) {
ESP_LOGE(TAG, "mismatch chip ID, expected %d, found %d", chip_id, img_hdr->chip_id);
err = ESP_FAIL;
if (type == PART_TYPE_APP) {
const esp_partition_pos_t partition_pos = {
.offset = address,
.size = size,
};
esp_image_metadata_t data;
// Function esp_image_verify() verifies and fills the structure data.
// here important to get: image_digest, image_len, hash_appended.
if (esp_image_verify(ESP_IMAGE_VERIFY_SILENT, &partition_pos, &data) != ESP_OK) {
return ESP_ERR_IMAGE_INVALID;
}
if (data.image.hash_appended) {
memcpy(out_sha_256, data.image_digest, ESP_PARTITION_HASH_LEN);
return ESP_OK;
}
// If image doesn't have a appended hash then hash calculates for entire image.
size = data.image_len;
}
uint8_t revision = bootloader_common_get_chip_revision();
if (revision < img_hdr->min_chip_rev) {
ESP_LOGE(TAG, "can't run on lower chip revision, expected %d, found %d", revision, img_hdr->min_chip_rev);
err = ESP_FAIL;
} else if (revision != img_hdr->min_chip_rev) {
ESP_LOGI(TAG, "chip revision: %d, min. %s chip revision: %d", revision, type == ESP_IMAGE_BOOTLOADER ? "bootloader" : "application", img_hdr->min_chip_rev);
// If image is type by data then hash is calculated for entire image.
const void *partition_bin = bootloader_mmap(address, size);
if (partition_bin == NULL) {
ESP_LOGE(TAG, "bootloader_mmap(0x%x, 0x%x) failed", address, size);
return ESP_FAIL;
}
return err;
bootloader_sha256_handle_t sha_handle = bootloader_sha256_start();
if (sha_handle == NULL) {
bootloader_munmap(partition_bin);
return ESP_ERR_NO_MEM;
}
bootloader_sha256_data(sha_handle, partition_bin, size);
bootloader_sha256_finish(sha_handle, out_sha_256);
bootloader_munmap(partition_bin);
return ESP_OK;
}

View File

@@ -91,6 +91,8 @@ static const char *TAG = "bootloader_flash";
*/
#define MMU_BLOCK0_VADDR 0x3f400000
#define MMU_BLOCK50_VADDR 0x3f720000
#define MMU_FLASH_MASK 0xffff0000
#define MMU_BLOCK_SIZE 0x00010000
static bool mapped;
@@ -110,11 +112,10 @@ const void *bootloader_mmap(uint32_t src_addr, uint32_t size)
}
uint32_t src_addr_aligned = src_addr & MMU_FLASH_MASK;
uint32_t count = bootloader_cache_pages_to_map(size, src_addr);
uint32_t count = (size + (src_addr - src_addr_aligned) + 0xffff) / MMU_BLOCK_SIZE;
Cache_Read_Disable(0);
Cache_Flush(0);
ESP_LOGD(TAG, "mmu set paddr=%08x count=%d size=%x src_addr=%x src_addr_aligned=%x",
src_addr & MMU_FLASH_MASK, count, size, src_addr, src_addr_aligned );
ESP_LOGD(TAG, "mmu set paddr=%08x count=%d", src_addr_aligned, count );
int e = cache_flash_mmu_set(0, 0, MMU_BLOCK0_VADDR, src_addr_aligned, 64, count);
if (e != 0) {
ESP_LOGE(TAG, "cache_flash_mmu_set failed: %d\n", e);

View File

@@ -1,165 +0,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.
#include <stdbool.h>
#include <assert.h>
#include "string.h"
#include "sdkconfig.h"
#include "esp_err.h"
#include "esp_log.h"
#include "rom/gpio.h"
#include "rom/spi_flash.h"
#include "rom/efuse.h"
#include "soc/gpio_periph.h"
#include "soc/efuse_reg.h"
#include "soc/spi_reg.h"
#include "soc/spi_pins.h"
#include "flash_qio_mode.h"
#include "bootloader_flash_config.h"
void bootloader_flash_update_id()
{
g_rom_flashchip.device_id = bootloader_read_flash_id();
}
void IRAM_ATTR bootloader_flash_cs_timing_config()
{
SET_PERI_REG_MASK(SPI_USER_REG(0), SPI_CS_HOLD_M | SPI_CS_SETUP_M);
SET_PERI_REG_BITS(SPI_CTRL2_REG(0), SPI_HOLD_TIME_V, 1, SPI_HOLD_TIME_S);
SET_PERI_REG_BITS(SPI_CTRL2_REG(0), SPI_SETUP_TIME_V, 0, SPI_SETUP_TIME_S);
SET_PERI_REG_MASK(SPI_USER_REG(1), SPI_CS_HOLD_M | SPI_CS_SETUP_M);
SET_PERI_REG_BITS(SPI_CTRL2_REG(1), SPI_HOLD_TIME_V, 1, SPI_HOLD_TIME_S);
SET_PERI_REG_BITS(SPI_CTRL2_REG(1), SPI_SETUP_TIME_V, 0, SPI_SETUP_TIME_S);
}
void IRAM_ATTR bootloader_flash_clock_config(const esp_image_header_t* pfhdr)
{
uint32_t spi_clk_div = 0;
switch (pfhdr->spi_speed) {
case ESP_IMAGE_SPI_SPEED_80M:
spi_clk_div = 1;
break;
case ESP_IMAGE_SPI_SPEED_40M:
spi_clk_div = 2;
break;
case ESP_IMAGE_SPI_SPEED_26M:
spi_clk_div = 3;
break;
case ESP_IMAGE_SPI_SPEED_20M:
spi_clk_div = 4;
break;
default:
break;
}
esp_rom_spiflash_config_clk(spi_clk_div, 0);
}
void IRAM_ATTR bootloader_flash_gpio_config(const esp_image_header_t* pfhdr)
{
uint32_t drv = 2;
if (pfhdr->spi_speed == ESP_IMAGE_SPI_SPEED_80M) {
drv = 3;
}
uint32_t chip_ver = REG_GET_FIELD(EFUSE_BLK0_RDATA3_REG, EFUSE_RD_CHIP_VER_PKG);
uint32_t pkg_ver = chip_ver & 0x7;
if (pkg_ver == EFUSE_RD_CHIP_VER_PKG_ESP32D2WDQ5) {
// For ESP32D2WD the SPI pins are already configured
// flash clock signal should come from IO MUX.
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_CLK_U, FUNC_SD_CLK_SPICLK);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_CLK_U, FUN_DRV, drv, FUN_DRV_S);
} else if (pkg_ver == EFUSE_RD_CHIP_VER_PKG_ESP32PICOD2) {
// For ESP32PICOD2 the SPI pins are already configured
// flash clock signal should come from IO MUX.
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_CLK_U, FUNC_SD_CLK_SPICLK);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_CLK_U, FUN_DRV, drv, FUN_DRV_S);
} else if (pkg_ver == EFUSE_RD_CHIP_VER_PKG_ESP32PICOD4) {
// For ESP32PICOD4 the SPI pins are already configured
// flash clock signal should come from IO MUX.
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_CLK_U, FUNC_SD_CLK_SPICLK);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_CLK_U, FUN_DRV, drv, FUN_DRV_S);
} else {
const uint32_t spiconfig = ets_efuse_get_spiconfig();
if (spiconfig == EFUSE_SPICONFIG_SPI_DEFAULTS) {
gpio_matrix_out(SPI_IOMUX_PIN_NUM_CS, SPICS0_OUT_IDX, 0, 0);
gpio_matrix_out(SPI_IOMUX_PIN_NUM_MISO, SPIQ_OUT_IDX, 0, 0);
gpio_matrix_in(SPI_IOMUX_PIN_NUM_MISO, SPIQ_IN_IDX, 0);
gpio_matrix_out(SPI_IOMUX_PIN_NUM_MOSI, SPID_OUT_IDX, 0, 0);
gpio_matrix_in(SPI_IOMUX_PIN_NUM_MOSI, SPID_IN_IDX, 0);
gpio_matrix_out(SPI_IOMUX_PIN_NUM_WP, SPIWP_OUT_IDX, 0, 0);
gpio_matrix_in(SPI_IOMUX_PIN_NUM_WP, SPIWP_IN_IDX, 0);
gpio_matrix_out(SPI_IOMUX_PIN_NUM_HD, SPIHD_OUT_IDX, 0, 0);
gpio_matrix_in(SPI_IOMUX_PIN_NUM_HD, SPIHD_IN_IDX, 0);
//select pin function gpio
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_DATA0_U, PIN_FUNC_GPIO);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_DATA1_U, PIN_FUNC_GPIO);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_DATA2_U, PIN_FUNC_GPIO);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_DATA3_U, PIN_FUNC_GPIO);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_CMD_U, PIN_FUNC_GPIO);
// flash clock signal should come from IO MUX.
// set drive ability for clock
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_CLK_U, FUNC_SD_CLK_SPICLK);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_CLK_U, FUN_DRV, drv, FUN_DRV_S);
uint32_t flash_id = g_rom_flashchip.device_id;
if (flash_id == FLASH_ID_GD25LQ32C) {
// Set drive ability for 1.8v flash in 80Mhz.
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_DATA0_U, FUN_DRV, 3, FUN_DRV_S);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_DATA1_U, FUN_DRV, 3, FUN_DRV_S);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_DATA2_U, FUN_DRV, 3, FUN_DRV_S);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_DATA3_U, FUN_DRV, 3, FUN_DRV_S);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_CMD_U, FUN_DRV, 3, FUN_DRV_S);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_CLK_U, FUN_DRV, 3, FUN_DRV_S);
}
}
}
}
void IRAM_ATTR bootloader_flash_dummy_config(const esp_image_header_t* pfhdr)
{
int spi_cache_dummy = 0;
uint32_t modebit = READ_PERI_REG(SPI_CTRL_REG(0));
if (modebit & SPI_FASTRD_MODE) {
if (modebit & SPI_FREAD_QIO) { //SPI mode is QIO
spi_cache_dummy = SPI0_R_QIO_DUMMY_CYCLELEN;
} else if (modebit & SPI_FREAD_DIO) { //SPI mode is DIO
spi_cache_dummy = SPI0_R_DIO_DUMMY_CYCLELEN;
SET_PERI_REG_BITS(SPI_USER1_REG(0), SPI_USR_ADDR_BITLEN_V, SPI0_R_DIO_ADDR_BITSLEN, SPI_USR_ADDR_BITLEN_S);
} else if(modebit & (SPI_FREAD_QUAD | SPI_FREAD_DUAL)) { //SPI mode is QOUT or DIO
spi_cache_dummy = SPI0_R_FAST_DUMMY_CYCLELEN;
}
}
extern uint8_t g_rom_spiflash_dummy_len_plus[];
switch (pfhdr->spi_speed) {
case ESP_IMAGE_SPI_SPEED_80M:
g_rom_spiflash_dummy_len_plus[0] = ESP_ROM_SPIFLASH_DUMMY_LEN_PLUS_80M;
g_rom_spiflash_dummy_len_plus[1] = ESP_ROM_SPIFLASH_DUMMY_LEN_PLUS_80M;
break;
case ESP_IMAGE_SPI_SPEED_40M:
g_rom_spiflash_dummy_len_plus[0] = ESP_ROM_SPIFLASH_DUMMY_LEN_PLUS_40M;
g_rom_spiflash_dummy_len_plus[1] = ESP_ROM_SPIFLASH_DUMMY_LEN_PLUS_40M;
break;
case ESP_IMAGE_SPI_SPEED_26M:
case ESP_IMAGE_SPI_SPEED_20M:
g_rom_spiflash_dummy_len_plus[0] = ESP_ROM_SPIFLASH_DUMMY_LEN_PLUS_20M;
g_rom_spiflash_dummy_len_plus[1] = ESP_ROM_SPIFLASH_DUMMY_LEN_PLUS_20M;
break;
default:
break;
}
SET_PERI_REG_BITS(SPI_USER1_REG(0), SPI_USR_DUMMY_CYCLELEN_V, spi_cache_dummy + g_rom_spiflash_dummy_len_plus[0],
SPI_USR_DUMMY_CYCLELEN_S);
}

View File

@@ -17,7 +17,6 @@
#include <sys/param.h>
#include "esp_attr.h"
#include "esp_efuse.h"
#include "esp_log.h"
#include "rom/cache.h"
@@ -34,10 +33,13 @@
#include "soc/cpu.h"
#include "soc/rtc.h"
#include "soc/dport_reg.h"
#include "soc/io_mux_reg.h"
#include "soc/efuse_reg.h"
#include "soc/rtc_cntl_reg.h"
#include "soc/timer_group_reg.h"
#include "soc/gpio_periph.h"
#include "soc/gpio_reg.h"
#include "soc/gpio_sig_map.h"
#include "soc/rtc_wdt.h"
#include "sdkconfig.h"
#include "esp_image_format.h"
@@ -48,8 +50,6 @@
#include "bootloader_random.h"
#include "bootloader_config.h"
#include "bootloader_clock.h"
#include "bootloader_common.h"
#include "bootloader_flash_config.h"
#include "flash_qio_mode.h"
@@ -64,7 +64,7 @@ static esp_err_t bootloader_main();
static void print_flash_info(const esp_image_header_t* pfhdr);
static void update_flash_config(const esp_image_header_t* pfhdr);
static void vddsdio_configure();
static void bootloader_init_flash_configure(const esp_image_header_t* pfhdr);
static void flash_gpio_configure(const esp_image_header_t* pfhdr);
static void uart_console_configure(void);
static void wdt_reset_check(void);
@@ -72,7 +72,6 @@ static void wdt_reset_check(void);
esp_err_t bootloader_init()
{
cpu_configure_region_protection();
cpu_init_memctl();
/* Sanity check that static RAM is after the stack */
#ifndef NDEBUG
@@ -127,13 +126,7 @@ static esp_err_t bootloader_main()
ESP_LOGE(TAG, "failed to load bootloader header!");
return ESP_FAIL;
}
/* Check chip ID and minimum chip revision that supported by this image */
uint8_t revision = bootloader_common_get_chip_revision();
ESP_LOGI(TAG, "Chip Revision: %d", revision);
if (bootloader_common_check_chip_validity(&fhdr, ESP_IMAGE_BOOTLOADER) != ESP_OK) {
return ESP_FAIL;
}
bootloader_init_flash_configure(&fhdr);
flash_gpio_configure(&fhdr);
#if (CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ == 240)
//Check if ESP32 is rated for a CPU frequency of 160MHz only
if (REG_GET_BIT(EFUSE_BLK0_RDATA3_REG, EFUSE_RD_CHIP_CPU_FREQ_RATED) &&
@@ -150,8 +143,21 @@ static esp_err_t bootloader_main()
ESP_LOGI(TAG, "compile time " __TIME__ );
ets_set_appcpu_boot_addr(0);
#ifdef CONFIG_BOOTLOADER_WDT_ENABLE
ESP_LOGD(TAG, "Enabling RTCWDT(%d ms)", CONFIG_BOOTLOADER_WDT_TIME_MS);
rtc_wdt_protect_off();
rtc_wdt_disable();
rtc_wdt_set_length_of_reset_signal(RTC_WDT_SYS_RESET_SIG, RTC_WDT_LENGTH_3_2us);
rtc_wdt_set_length_of_reset_signal(RTC_WDT_CPU_RESET_SIG, RTC_WDT_LENGTH_3_2us);
rtc_wdt_set_stage(RTC_WDT_STAGE0, RTC_WDT_STAGE_ACTION_RESET_RTC);
rtc_wdt_set_time(RTC_WDT_STAGE0, CONFIG_BOOTLOADER_WDT_TIME_MS);
rtc_wdt_enable();
rtc_wdt_protect_on();
#else
/* disable watch dog here */
REG_CLR_BIT( RTC_CNTL_WDTCONFIG0_REG, RTC_CNTL_WDT_FLASHBOOT_MOD_EN );
rtc_wdt_disable();
#endif
REG_SET_FIELD(TIMG_WDTWPROTECT_REG(0), TIMG_WDT_WKEY, TIMG_WDT_WKEY_VALUE);
REG_CLR_BIT( TIMG_WDTCONFIG0_REG(0), TIMG_WDT_FLASHBOOT_MOD_EN );
#ifndef CONFIG_SPI_FLASH_ROM_DRIVER_PATCH
@@ -295,15 +301,113 @@ static void vddsdio_configure()
#endif // CONFIG_BOOTLOADER_VDDSDIO_BOOST
}
#define FLASH_CLK_IO 6
#define FLASH_CS_IO 11
#define FLASH_SPIQ_IO 7
#define FLASH_SPID_IO 8
#define FLASH_SPIWP_IO 10
#define FLASH_SPIHD_IO 9
#define FLASH_IO_MATRIX_DUMMY_40M 1
#define FLASH_IO_MATRIX_DUMMY_80M 2
#define FLASH_IO_DRIVE_GD_WITH_1V8PSRAM 3
/*
* Bootloader reads SPI configuration from bin header, so that
* the burning configuration can be different with compiling configuration.
*/
static void IRAM_ATTR bootloader_init_flash_configure(const esp_image_header_t* pfhdr)
static void IRAM_ATTR flash_gpio_configure(const esp_image_header_t* pfhdr)
{
bootloader_flash_gpio_config(pfhdr);
bootloader_flash_dummy_config(pfhdr);
bootloader_flash_cs_timing_config();
int spi_cache_dummy = 0;
int drv = 2;
switch (pfhdr->spi_mode) {
case ESP_IMAGE_SPI_MODE_QIO:
spi_cache_dummy = SPI0_R_DIO_DUMMY_CYCLELEN;
break;
case ESP_IMAGE_SPI_MODE_DIO:
spi_cache_dummy = SPI0_R_DIO_DUMMY_CYCLELEN; //qio 3
break;
case ESP_IMAGE_SPI_MODE_QOUT:
case ESP_IMAGE_SPI_MODE_DOUT:
default:
spi_cache_dummy = SPI0_R_FAST_DUMMY_CYCLELEN;
break;
}
/* dummy_len_plus values defined in ROM for SPI flash configuration */
extern uint8_t g_rom_spiflash_dummy_len_plus[];
switch (pfhdr->spi_speed) {
case ESP_IMAGE_SPI_SPEED_80M:
g_rom_spiflash_dummy_len_plus[0] = FLASH_IO_MATRIX_DUMMY_80M;
g_rom_spiflash_dummy_len_plus[1] = FLASH_IO_MATRIX_DUMMY_80M;
SET_PERI_REG_BITS(SPI_USER1_REG(0), SPI_USR_DUMMY_CYCLELEN_V, spi_cache_dummy + FLASH_IO_MATRIX_DUMMY_80M,
SPI_USR_DUMMY_CYCLELEN_S); //DUMMY
drv = 3;
break;
case ESP_IMAGE_SPI_SPEED_40M:
g_rom_spiflash_dummy_len_plus[0] = FLASH_IO_MATRIX_DUMMY_40M;
g_rom_spiflash_dummy_len_plus[1] = FLASH_IO_MATRIX_DUMMY_40M;
SET_PERI_REG_BITS(SPI_USER1_REG(0), SPI_USR_DUMMY_CYCLELEN_V, spi_cache_dummy + FLASH_IO_MATRIX_DUMMY_40M,
SPI_USR_DUMMY_CYCLELEN_S); //DUMMY
break;
default:
break;
}
uint32_t chip_ver = REG_GET_FIELD(EFUSE_BLK0_RDATA3_REG, EFUSE_RD_CHIP_VER_PKG);
uint32_t pkg_ver = chip_ver & 0x7;
if (pkg_ver == EFUSE_RD_CHIP_VER_PKG_ESP32D2WDQ5) {
// For ESP32D2WD the SPI pins are already configured
// flash clock signal should come from IO MUX.
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_CLK_U, FUNC_SD_CLK_SPICLK);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_CLK_U, FUN_DRV, drv, FUN_DRV_S);
} else if (pkg_ver == EFUSE_RD_CHIP_VER_PKG_ESP32PICOD2) {
// For ESP32PICOD2 the SPI pins are already configured
// flash clock signal should come from IO MUX.
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_CLK_U, FUNC_SD_CLK_SPICLK);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_CLK_U, FUN_DRV, drv, FUN_DRV_S);
} else if (pkg_ver == EFUSE_RD_CHIP_VER_PKG_ESP32PICOD4) {
// For ESP32PICOD4 the SPI pins are already configured
// flash clock signal should come from IO MUX.
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_CLK_U, FUNC_SD_CLK_SPICLK);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_CLK_U, FUN_DRV, drv, FUN_DRV_S);
} else {
const uint32_t spiconfig = ets_efuse_get_spiconfig();
if (spiconfig == EFUSE_SPICONFIG_SPI_DEFAULTS) {
gpio_matrix_out(FLASH_CS_IO, SPICS0_OUT_IDX, 0, 0);
gpio_matrix_out(FLASH_SPIQ_IO, SPIQ_OUT_IDX, 0, 0);
gpio_matrix_in(FLASH_SPIQ_IO, SPIQ_IN_IDX, 0);
gpio_matrix_out(FLASH_SPID_IO, SPID_OUT_IDX, 0, 0);
gpio_matrix_in(FLASH_SPID_IO, SPID_IN_IDX, 0);
gpio_matrix_out(FLASH_SPIWP_IO, SPIWP_OUT_IDX, 0, 0);
gpio_matrix_in(FLASH_SPIWP_IO, SPIWP_IN_IDX, 0);
gpio_matrix_out(FLASH_SPIHD_IO, SPIHD_OUT_IDX, 0, 0);
gpio_matrix_in(FLASH_SPIHD_IO, SPIHD_IN_IDX, 0);
//select pin function gpio
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_DATA0_U, PIN_FUNC_GPIO);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_DATA1_U, PIN_FUNC_GPIO);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_DATA2_U, PIN_FUNC_GPIO);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_DATA3_U, PIN_FUNC_GPIO);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_CMD_U, PIN_FUNC_GPIO);
// flash clock signal should come from IO MUX.
// set drive ability for clock
PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_CLK_U, FUNC_SD_CLK_SPICLK);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_CLK_U, FUN_DRV, drv, FUN_DRV_S);
#if CONFIG_SPIRAM_TYPE_ESPPSRAM32
uint32_t flash_id = g_rom_flashchip.device_id;
if (flash_id == FLASH_ID_GD25LQ32C) {
// Set drive ability for 1.8v flash in 80Mhz.
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_DATA0_U, FUN_DRV, 3, FUN_DRV_S);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_DATA1_U, FUN_DRV, 3, FUN_DRV_S);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_DATA2_U, FUN_DRV, 3, FUN_DRV_S);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_DATA3_U, FUN_DRV, 3, FUN_DRV_S);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_CMD_U, FUN_DRV, 3, FUN_DRV_S);
SET_PERI_REG_BITS(PERIPHS_IO_MUX_SD_CLK_U, FUN_DRV, 3, FUN_DRV_S);
}
#endif
}
}
}
static void uart_console_configure(void)
@@ -337,18 +441,10 @@ static void uart_console_configure(void)
// (arrays should be optimized away by the compiler)
const uint32_t tx_idx_list[3] = { U0TXD_OUT_IDX, U1TXD_OUT_IDX, U2TXD_OUT_IDX };
const uint32_t rx_idx_list[3] = { U0RXD_IN_IDX, U1RXD_IN_IDX, U2RXD_IN_IDX };
const uint32_t uart_reset[3] = { DPORT_UART_RST, DPORT_UART1_RST, DPORT_UART2_RST };
const uint32_t tx_idx = tx_idx_list[uart_num];
const uint32_t rx_idx = rx_idx_list[uart_num];
PIN_INPUT_ENABLE(GPIO_PIN_MUX_REG[uart_rx_gpio]);
gpio_pad_pullup(uart_rx_gpio);
gpio_matrix_out(uart_tx_gpio, tx_idx, 0, 0);
gpio_matrix_in(uart_rx_gpio, rx_idx, 0);
DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, uart_reset[uart_num]);
DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, uart_reset[uart_num]);
}
#endif // CONFIG_CONSOLE_UART_CUSTOM
@@ -441,3 +537,14 @@ void __assert_func(const char *file, int line, const char *func, const char *exp
ESP_LOGE(TAG, "Assert failed in %s, %s:%d (%s)", func, file, line, expr);
while(1) {}
}
void abort()
{
#if !CONFIG_ESP32_PANIC_SILENT_REBOOT
ets_printf("abort() was called at PC 0x%08x\r\n", (intptr_t)__builtin_return_address(0) - 3);
#endif
if (esp_cpu_in_ocd_debug_mode()) {
__asm__ ("break 0,0");
}
while(1) {}
}

View File

@@ -23,19 +23,23 @@
#ifndef BOOTLOADER_BUILD
#include "esp_system.h"
#endif
void bootloader_fill_random(void *buffer, size_t length)
{
return esp_fill_random(buffer, length);
}
#else
void bootloader_fill_random(void *buffer, size_t length)
{
uint8_t *buffer_bytes = (uint8_t *)buffer;
uint32_t random;
#ifdef BOOTLOADER_BUILD
uint32_t start, now;
#endif
assert(buffer != NULL);
for (int i = 0; i < length; i++) {
if (i == 0 || i % 4 == 0) { /* redundant check is for a compiler warning */
#ifdef BOOTLOADER_BUILD
/* in bootloader with ADC feeding HWRNG, we accumulate 1
bit of entropy per 40 APB cycles (==80 CPU cycles.)
@@ -49,14 +53,12 @@ void bootloader_fill_random(void *buffer, size_t length)
random ^= REG_READ(WDEV_RND_REG);
RSR(CCOUNT, now);
} while(now - start < 80*32*2); /* extra factor of 2 is precautionary */
#else
random = esp_random();
#endif
}
buffer_bytes[i] = random >> ((i % 4) * 8);
}
}
#endif // BOOTLOADER_BUILD
void bootloader_random_enable(void)
{

View File

@@ -169,3 +169,21 @@ void bootloader_sha256_finish(bootloader_sha256_handle_t handle, uint8_t *digest
}
#endif
esp_err_t bootloader_sha256_hex_to_str(char *out_str, const uint8_t *in_array_hex, size_t len)
{
if (out_str == NULL || in_array_hex == NULL || len == 0) {
return ESP_ERR_INVALID_ARG;
}
for (int i = 0; i < len; i++) {
for (int shift = 0; shift < 2; shift++) {
uint8_t nibble = (in_array_hex[i] >> (shift ? 0 : 4)) & 0x0F;
if (nibble < 10) {
out_str[i*2+shift] = '0' + nibble;
} else {
out_str[i*2+shift] = 'a' + nibble - 10;
}
}
}
return ESP_OK;
}

View File

@@ -49,6 +49,8 @@
#include "bootloader_random.h"
#include "bootloader_config.h"
#include "bootloader_common.h"
#include "bootloader_utility.h"
#include "bootloader_sha.h"
static const char* TAG = "boot";
@@ -267,7 +269,7 @@ static bool try_load_partition(const esp_partition_pos_t *partition, esp_image_m
return false;
}
#ifdef BOOTLOADER_BUILD
if (esp_image_load(ESP_IMAGE_LOAD, partition, data) == ESP_OK) {
if (bootloader_load_image(partition, data) == ESP_OK) {
ESP_LOGI(TAG, "Loaded app from partition at offset 0x%x",
partition->offset);
return true;
@@ -290,7 +292,7 @@ void bootloader_utility_load_boot_image(const bootloader_state_t *bs, int start_
load_image(&image_data);
} else {
ESP_LOGE(TAG, "No bootable test partition in the partition table");
return;
bootloader_reset();
}
}
@@ -327,6 +329,7 @@ void bootloader_utility_load_boot_image(const bootloader_state_t *bs, int start_
ESP_LOGE(TAG, "No bootable app partitions in the partition table");
bzero(&image_data, sizeof(esp_image_metadata_t));
bootloader_reset();
}
// Copy loaded segments to RAM, set up caches for mapped segments, and start application.
@@ -363,8 +366,7 @@ static void load_image(const esp_image_metadata_t* image_data)
so issue a system reset to ensure flash encryption
cache resets properly */
ESP_LOGI(TAG, "Resetting with flash encryption enabled...");
REG_WRITE(RTC_CNTL_OPTIONS0_REG, RTC_CNTL_SW_SYS_RST);
return;
bootloader_reset();
}
#endif
@@ -387,7 +389,7 @@ static void unpack_load_app(const esp_image_metadata_t* data)
// Find DROM & IROM addresses, to configure cache mappings
for (int i = 0; i < data->image.segment_count; i++) {
const esp_image_segment_header_t *header = &data->segments[i];
if (header->load_addr >= SOC_DROM_LOW && header->load_addr < SOC_DROM_HIGH) {
if (header->load_addr >= SOC_IROM_LOW && header->load_addr < SOC_IROM_HIGH) {
if (drom_addr != 0) {
ESP_LOGE(TAG, MAP_ERR_MSG, "DROM");
} else {
@@ -397,7 +399,7 @@ static void unpack_load_app(const esp_image_metadata_t* data)
drom_load_addr = header->load_addr;
drom_size = header->data_len;
}
if (header->load_addr >= SOC_IROM_LOW && header->load_addr < SOC_IROM_HIGH) {
if (header->load_addr >= SOC_DROM_LOW && header->load_addr < SOC_DROM_HIGH) {
if (irom_addr != 0) {
ESP_LOGE(TAG, MAP_ERR_MSG, "IROM");
} else {
@@ -428,7 +430,6 @@ static void set_cache_and_start_app(
uint32_t irom_size,
uint32_t entry_addr)
{
int rc;
ESP_LOGD(TAG, "configure drom and irom and start");
Cache_Read_Disable( 0 );
Cache_Flush( 0 );
@@ -440,34 +441,20 @@ static void set_cache_and_start_app(
DPORT_PRO_FLASH_MMU_TABLE[i] = DPORT_FLASH_MMU_TABLE_INVALID_VAL;
}
uint32_t drom_load_addr_aligned = drom_load_addr & MMU_FLASH_MASK;
uint32_t drom_page_count = bootloader_cache_pages_to_map(drom_size, drom_load_addr);
ESP_LOGV(TAG, "d mmu set paddr=%08x vaddr=%08x size=%d n=%d",
drom_addr & MMU_FLASH_MASK, drom_load_addr_aligned, drom_size, drom_page_count);
rc = cache_flash_mmu_set(0, 0, drom_load_addr_aligned, drom_addr & MMU_FLASH_MASK, 64, drom_page_count);
ESP_LOGV(TAG, "rc=%d", rc);
rc = cache_flash_mmu_set(1, 0, drom_load_addr_aligned, drom_addr & MMU_FLASH_MASK, 64, drom_page_count);
ESP_LOGV(TAG, "rc=%d", rc);
uint32_t irom_load_addr_aligned = irom_load_addr & MMU_FLASH_MASK;
uint32_t irom_page_count = bootloader_cache_pages_to_map(irom_size, irom_load_addr);
ESP_LOGV(TAG, "i mmu set paddr=%08x vaddr=%08x size=%d n=%d",
irom_addr & MMU_FLASH_MASK, irom_load_addr_aligned, irom_size, irom_page_count);
rc = cache_flash_mmu_set(0, 0, irom_load_addr_aligned, irom_addr & MMU_FLASH_MASK, 64, irom_page_count);
ESP_LOGV(TAG, "rc=%d", rc);
rc = cache_flash_mmu_set(1, 0, irom_load_addr_aligned, irom_addr & MMU_FLASH_MASK, 64, irom_page_count);
ESP_LOGV(TAG, "rc=%d", rc);
DPORT_REG_CLR_BIT( DPORT_PRO_CACHE_CTRL1_REG,
(DPORT_PRO_CACHE_MASK_IRAM0) | (DPORT_PRO_CACHE_MASK_IRAM1 & 0) |
(DPORT_PRO_CACHE_MASK_IROM0 & 0) | DPORT_PRO_CACHE_MASK_DROM0 |
DPORT_PRO_CACHE_MASK_DRAM1 );
DPORT_REG_CLR_BIT( DPORT_APP_CACHE_CTRL1_REG,
(DPORT_APP_CACHE_MASK_IRAM0) | (DPORT_APP_CACHE_MASK_IRAM1 & 0) |
(DPORT_APP_CACHE_MASK_IROM0 & 0) | DPORT_APP_CACHE_MASK_DROM0 |
DPORT_APP_CACHE_MASK_DRAM1 );
uint32_t drom_page_count = (drom_size + 64*1024 - 1) / (64*1024); // round up to 64k
ESP_LOGV(TAG, "d mmu set paddr=%08x vaddr=%08x size=%d n=%d", drom_addr & 0xffff0000, drom_load_addr & 0xffff0000, drom_size, drom_page_count );
int rc = cache_flash_mmu_set( 0, 0, drom_load_addr & 0xffff0000, drom_addr & 0xffff0000, 64, drom_page_count );
ESP_LOGV(TAG, "rc=%d", rc );
rc = cache_flash_mmu_set( 1, 0, drom_load_addr & 0xffff0000, drom_addr & 0xffff0000, 64, drom_page_count );
ESP_LOGV(TAG, "rc=%d", rc );
uint32_t irom_page_count = (irom_size + 64*1024 - 1) / (64*1024); // round up to 64k
ESP_LOGV(TAG, "i mmu set paddr=%08x vaddr=%08x size=%d n=%d", irom_addr & 0xffff0000, irom_load_addr & 0xffff0000, irom_size, irom_page_count );
rc = cache_flash_mmu_set( 0, 0, irom_load_addr & 0xffff0000, irom_addr & 0xffff0000, 64, irom_page_count );
ESP_LOGV(TAG, "rc=%d", rc );
rc = cache_flash_mmu_set( 1, 0, irom_load_addr & 0xffff0000, irom_addr & 0xffff0000, 64, irom_page_count );
ESP_LOGV(TAG, "rc=%d", rc );
DPORT_REG_CLR_BIT( DPORT_PRO_CACHE_CTRL1_REG, (DPORT_PRO_CACHE_MASK_IRAM0) | (DPORT_PRO_CACHE_MASK_IRAM1 & 0) | (DPORT_PRO_CACHE_MASK_IROM0 & 0) | DPORT_PRO_CACHE_MASK_DROM0 | DPORT_PRO_CACHE_MASK_DRAM1 );
DPORT_REG_CLR_BIT( DPORT_APP_CACHE_CTRL1_REG, (DPORT_APP_CACHE_MASK_IRAM0) | (DPORT_APP_CACHE_MASK_IRAM1 & 0) | (DPORT_APP_CACHE_MASK_IROM0 & 0) | DPORT_APP_CACHE_MASK_DROM0 | DPORT_APP_CACHE_MASK_DRAM1 );
Cache_Read_Enable( 0 );
// Application will need to do Cache_Flush(1) and Cache_Read_Enable(1)
@@ -480,3 +467,17 @@ static void set_cache_and_start_app(
// use "movsp" instruction to reset stack back to where ROM stack starts.
(*entry)();
}
void bootloader_reset(void)
{
#ifdef BOOTLOADER_BUILD
uart_tx_flush(0); /* Ensure any buffered log output is displayed */
uart_tx_flush(1);
ets_delay_us(1000); /* Allow last byte to leave FIFO */
REG_WRITE(RTC_CNTL_OPTIONS0_REG, RTC_CNTL_SW_SYS_RST);
while (1) { } /* This line will never be reached, used to keep gcc happy */
#else
abort(); /* This function should really not be called from application code */
#endif
}

View File

@@ -15,7 +15,6 @@
#include "esp_log.h"
#include <string.h>
#include "bootloader_random.h"
#include "soc/apb_ctrl_reg.h"
#define EFUSE_CONF_WRITE 0x5A5A /* efuse_pgm_op_ena, force no rd/wr disable */
#define EFUSE_CONF_READ 0x5AA5 /* efuse_read_op_ena, release force */
@@ -113,32 +112,3 @@ void esp_efuse_write_random_key(uint32_t blk_wdata0_reg)
bzero(buf, sizeof(buf));
bzero(raw, sizeof(raw));
}
// Returns chip version from efuse
uint8_t esp_efuse_get_chip_ver(void)
{
uint8_t eco_bit0, eco_bit1, eco_bit2;
eco_bit0 = (REG_READ(EFUSE_BLK0_RDATA3_REG) & 0xF000) >> 15;
eco_bit1 = (REG_READ(EFUSE_BLK0_RDATA5_REG) & 0x100000) >> 20;
eco_bit2 = (REG_READ(APB_CTRL_DATE_REG) & 0x80000000) >> 31;
uint32_t combine_value = (eco_bit2 << 2) | (eco_bit1 << 1) | eco_bit0;
uint8_t chip_ver = 0;
switch (combine_value) {
case 0:
chip_ver = 0;
break;
case 1:
chip_ver = 1;
break;
case 3:
chip_ver = 2;
break;
case 7:
chip_ver = 3;
break;
default:
chip_ver = 0;
break;
}
return chip_ver;
}

View File

@@ -23,8 +23,6 @@
#include <bootloader_flash.h>
#include <bootloader_random.h>
#include <bootloader_sha.h>
#include "bootloader_util.h"
#include "bootloader_common.h"
/* Checking signatures as part of verifying images is necessary:
- Always if secure boot is enabled
@@ -58,10 +56,6 @@ static const char *TAG = "esp_image";
(Means loaded code isn't executable until after the secure boot check.)
*/
static uint32_t ram_obfs_value[2];
/* Range of IRAM used by the loader, defined in ld script */
extern int _loader_text_start;
extern int _loader_text_end;
#endif
/* Return true if load_addr is an address the bootloader should load into */
@@ -95,7 +89,7 @@ static esp_err_t verify_checksum(bootloader_sha256_handle_t sha_handle, uint32_t
static esp_err_t __attribute__((unused)) verify_secure_boot_signature(bootloader_sha256_handle_t sha_handle, esp_image_metadata_t *data);
static esp_err_t __attribute__((unused)) verify_simple_hash(bootloader_sha256_handle_t sha_handle, esp_image_metadata_t *data);
esp_err_t esp_image_load(esp_image_load_mode_t mode, const esp_partition_pos_t *part, esp_image_metadata_t *data)
static esp_err_t image_load(esp_image_load_mode_t mode, const esp_partition_pos_t *part, esp_image_metadata_t *data)
{
#ifdef BOOTLOADER_BUILD
bool do_load = (mode == ESP_IMAGE_LOAD);
@@ -148,7 +142,7 @@ esp_err_t esp_image_load(esp_image_load_mode_t mode, const esp_partition_pos_t *
err = verify_image_header(data->start_addr, &data->image, silent);
if (err != ESP_OK) {
goto err;
goto err;
}
if (data->image.segment_count > ESP_IMAGE_MAX_SEGMENTS) {
@@ -209,6 +203,17 @@ goto err;
bootloader_sha256_finish(sha_handle, NULL);
}
}
if (data->image.hash_appended) {
const void *hash = bootloader_mmap(data->start_addr + data->image_len - HASH_LEN, HASH_LEN);
if (hash == NULL) {
err = ESP_FAIL;
goto err;
}
memcpy(data->image_digest, hash, HASH_LEN);
bootloader_munmap(hash);
}
sha_handle = NULL;
if (err != ESP_OK) {
goto err;
@@ -244,6 +249,22 @@ goto err;
return err;
}
esp_err_t bootloader_load_image(const esp_partition_pos_t *part, esp_image_metadata_t *data)
{
#ifdef BOOTLOADER_BUILD
return image_load(ESP_IMAGE_LOAD, part, data);
#else
return ESP_FAIL;
#endif
}
esp_err_t esp_image_verify(esp_image_load_mode_t mode, const esp_partition_pos_t *part, esp_image_metadata_t *data)
{
return image_load(mode, part, data);
}
esp_err_t esp_image_load(esp_image_load_mode_t mode, const esp_partition_pos_t *part, esp_image_metadata_t *data) __attribute__((alias("esp_image_verify")));
static esp_err_t verify_image_header(uint32_t src_addr, const esp_image_header_t *image, bool silent)
{
esp_err_t err = ESP_OK;
@@ -254,9 +275,6 @@ static esp_err_t verify_image_header(uint32_t src_addr, const esp_image_header_t
}
err = ESP_ERR_IMAGE_INVALID;
}
if (bootloader_common_check_chip_validity(image, ESP_IMAGE_APPLICATION) != ESP_OK) {
err = ESP_ERR_IMAGE_INVALID;
}
if (!silent) {
if (image->spi_mode > ESP_IMAGE_SPI_MODE_SLOW_READ) {
ESP_LOGW(TAG, "image at 0x%x has invalid SPI mode %d", src_addr, image->spi_mode);
@@ -310,41 +328,18 @@ static esp_err_t process_segment(int index, uint32_t flash_addr, esp_image_segme
(do_load)?"load":(is_mapping)?"map":"");
}
#ifdef BOOTLOADER_BUILD
/* Before loading segment, check it doesn't clobber bootloader RAM. */
if (do_load) {
const intptr_t load_end = load_addr + data_len;
if (load_end <= (intptr_t) SOC_DIRAM_DRAM_HIGH) {
/* Writing to DRAM */
/* Before loading segment, check it doesn't clobber bootloader RAM... */
uint32_t end_addr = load_addr + data_len;
if (end_addr < 0x40000000) {
intptr_t sp = (intptr_t)get_sp();
if (load_end > sp - STACK_LOAD_HEADROOM) {
/* Bootloader .data/.rodata/.bss is above the stack, so this
* also checks that we aren't overwriting these segments.
*
* TODO: This assumes specific arrangement of sections we have
* in the ESP32. Rewrite this in a generic way to support other
* layouts.
*/
ESP_LOGE(TAG, "Segment %d end address 0x%08x too high (bootloader stack 0x%08x limit 0x%08x)",
index, load_end, sp, sp - STACK_LOAD_HEADROOM);
return ESP_ERR_IMAGE_INVALID;
}
} else {
/* Writing to IRAM */
const intptr_t loader_iram_start = (intptr_t) &_loader_text_start;
const intptr_t loader_iram_end = (intptr_t) &_loader_text_end;
if (bootloader_util_regions_overlap(loader_iram_start, loader_iram_end,
load_addr, load_end)) {
ESP_LOGE(TAG, "Segment %d (0x%08x-0x%08x) overlaps bootloader IRAM (0x%08x-0x%08x)",
index, load_addr, load_end, loader_iram_start, loader_iram_end);
if (end_addr > sp - STACK_LOAD_HEADROOM) {
ESP_LOGE(TAG, "Segment %d end address 0x%08x too high (bootloader stack 0x%08x liimit 0x%08x)",
index, end_addr, sp, sp - STACK_LOAD_HEADROOM);
return ESP_ERR_IMAGE_INVALID;
}
}
}
#endif // BOOTLOADER_BUILD
#ifndef BOOTLOADER_BUILD
uint32_t free_page_count = spi_flash_mmap_get_free_pages(SPI_FLASH_MMAP_DATA);
ESP_LOGD(TAG, "free data page_count 0x%08x",free_page_count);
@@ -473,11 +468,15 @@ static bool should_load(uint32_t load_addr)
if (!load_rtc_memory) {
if (load_addr >= SOC_RTC_IRAM_LOW && load_addr < SOC_RTC_IRAM_HIGH) {
ESP_LOGD(TAG, "Skipping RTC code segment at 0x%08x\n", load_addr);
ESP_LOGD(TAG, "Skipping RTC fast memory segment at 0x%08x\n", load_addr);
return false;
}
if (load_addr >= SOC_RTC_DRAM_LOW && load_addr < SOC_RTC_DRAM_HIGH) {
ESP_LOGD(TAG, "Skipping RTC fast memory segment at 0x%08x\n", load_addr);
return false;
}
if (load_addr >= SOC_RTC_DATA_LOW && load_addr < SOC_RTC_DATA_HIGH) {
ESP_LOGD(TAG, "Skipping RTC data segment at 0x%08x\n", load_addr);
ESP_LOGD(TAG, "Skipping RTC slow memory segment at 0x%08x\n", load_addr);
return false;
}
}
@@ -504,7 +503,7 @@ esp_err_t esp_image_verify_bootloader_data(esp_image_metadata_t *data)
.offset = ESP_BOOTLOADER_OFFSET,
.size = ESP_PARTITION_TABLE_OFFSET - ESP_BOOTLOADER_OFFSET,
};
return esp_image_load(ESP_IMAGE_VERIFY,
return esp_image_verify(ESP_IMAGE_VERIFY,
&bootloader_part,
data);
}
@@ -613,18 +612,9 @@ static esp_err_t verify_simple_hash(bootloader_sha256_handle_t sha_handle, esp_i
static void debug_log_hash(const uint8_t *image_hash, const char *label)
{
#if BOOT_LOG_LEVEL >= LOG_LEVEL_DEBUG
char hash_print[sizeof(image_hash)*2 + 1];
hash_print[sizeof(image_hash)*2] = 0;
for (int i = 0; i < sizeof(image_hash); i++) {
for (int shift = 0; shift < 2; shift++) {
uint8_t nibble = (image_hash[i] >> (shift ? 0 : 4)) & 0x0F;
if (nibble < 10) {
hash_print[i*2+shift] = '0' + nibble;
} else {
hash_print[i*2+shift] = 'a' + nibble - 10;
}
}
}
ESP_LOGD(TAG, "%s: %s", label, hash_print);
char hash_print[HASH_LEN * 2 + 1];
hash_print[HASH_LEN * 2] = 0;
bootloader_sha256_hex_to_str(hash_print, image_hash, HASH_LEN);
ESP_LOGD(TAG, "%s: %s", label, hash_print);
#endif
}

View File

@@ -23,6 +23,7 @@
#include "esp_efuse.h"
#include "esp_log.h"
#include "rom/secure_boot.h"
#include "soc/rtc_wdt.h"
#include "rom/cache.h"
#include "rom/spi_flash.h" /* TODO: Remove this */
@@ -162,7 +163,7 @@ static esp_err_t encrypt_flash_contents(uint32_t flash_crypt_cnt, bool flash_cry
/* If the last flash_crypt_cnt bit is burned or write-disabled, the
device can't re-encrypt itself. */
if (flash_crypt_wr_dis) {
if (flash_crypt_wr_dis || flash_crypt_cnt == 0xFF) {
ESP_LOGE(TAG, "Cannot re-encrypt data (FLASH_CRYPT_CNT 0x%02x write disabled %d", flash_crypt_cnt, flash_crypt_wr_dis);
return ESP_FAIL;
}
@@ -199,19 +200,11 @@ static esp_err_t encrypt_flash_contents(uint32_t flash_crypt_cnt, bool flash_cry
ESP_LOGD(TAG, "All flash regions checked for encryption pass");
/* Set least significant 0-bit in flash_crypt_cnt */
int ffs_inv = __builtin_ffs((~flash_crypt_cnt) & EFUSE_RD_FLASH_CRYPT_CNT);
/* ffs_inv shouldn't be zero, as zero implies flash_crypt_cnt == EFUSE_RD_FLASH_CRYPT_CNT (0x7F) */
int ffs_inv = __builtin_ffs((~flash_crypt_cnt) & 0xFF);
/* ffs_inv shouldn't be zero, as zero implies flash_crypt_cnt == 0xFF */
uint32_t new_flash_crypt_cnt = flash_crypt_cnt + (1 << (ffs_inv - 1));
ESP_LOGD(TAG, "FLASH_CRYPT_CNT 0x%x -> 0x%x", flash_crypt_cnt, new_flash_crypt_cnt);
REG_SET_FIELD(EFUSE_BLK0_WDATA0_REG, EFUSE_FLASH_CRYPT_CNT, new_flash_crypt_cnt);
#ifdef CONFIG_FLASH_ENCRYPTION_DISABLE_PLAINTEXT
ESP_LOGI(TAG, "Write protecting FLASH_CRYPT_CNT efuse...");
REG_SET_BIT(EFUSE_BLK0_WDATA0_REG, EFUSE_WR_DIS_FLASH_CRYPT_CNT);
#else
ESP_LOGW(TAG, "Not disabling FLASH_CRYPT_CNT - plaintext flashing is still possible");
#endif
esp_efuse_burn_new_values();
ESP_LOGI(TAG, "Flash encryption completed");
@@ -288,7 +281,7 @@ static esp_err_t encrypt_partition(int index, const esp_partition_info_t *partit
if (partition->type == PART_TYPE_APP) {
/* check if the partition holds a valid unencrypted app */
esp_image_metadata_t data_ignored;
err = esp_image_load(ESP_IMAGE_VERIFY,
err = esp_image_verify(ESP_IMAGE_VERIFY,
&partition->pos,
&data_ignored);
should_encrypt = (err == ESP_OK);
@@ -325,6 +318,7 @@ esp_err_t esp_flash_encrypt_region(uint32_t src_addr, size_t data_length)
}
for (size_t i = 0; i < data_length; i += FLASH_SECTOR_SIZE) {
rtc_wdt_feed();
uint32_t sec_start = i + src_addr;
err = bootloader_flash_read(sec_start, buf, FLASH_SECTOR_SIZE, false);
if (err != ESP_OK) {

View File

@@ -0,0 +1,6 @@
set(COMPONENT_SRCDIRS ".")
set(COMPONENT_ADD_INCLUDEDIRS ".")
set(COMPONENT_REQUIRES unity bootloader_support app_update)
register_component()

View File

@@ -14,7 +14,6 @@
#include "freertos/xtensa_api.h"
#include "unity.h"
#include "bootloader_common.h"
#include "bootloader_util.h"
#include "esp_partition.h"
#include "esp_ota_ops.h"
#include "esp_image_format.h"
@@ -26,7 +25,7 @@ TEST_CASE("Verify bootloader image in flash", "[bootloader_support]")
.size = ESP_PARTITION_TABLE_OFFSET - ESP_BOOTLOADER_OFFSET,
};
esp_image_metadata_t data = { 0 };
TEST_ASSERT_EQUAL_HEX(ESP_OK, esp_image_load(ESP_IMAGE_VERIFY, &fake_bootloader_partition, &data));
TEST_ASSERT_EQUAL_HEX(ESP_OK, esp_image_verify(ESP_IMAGE_VERIFY, &fake_bootloader_partition, &data));
TEST_ASSERT_NOT_EQUAL(0, data.image_len);
uint32_t bootloader_length = 0;
@@ -44,7 +43,7 @@ TEST_CASE("Verify unit test app image", "[bootloader_support]")
.size = running->size,
};
TEST_ASSERT_EQUAL_HEX(ESP_OK, esp_image_load(ESP_IMAGE_VERIFY, &running_pos, &data));
TEST_ASSERT_EQUAL_HEX(ESP_OK, esp_image_verify(ESP_IMAGE_VERIFY, &running_pos, &data));
TEST_ASSERT_NOT_EQUAL(0, data.image_len);
TEST_ASSERT_TRUE(data.image_len <= running->size);
}
@@ -93,23 +92,3 @@ TEST_CASE("Test label_search", "[bootloader_support]")
check_label_search(25, "phy, 1234567890123456, nvs1", "12345678901234567", true);
}
TEST_CASE("Test regions_overlap", "[bootloader_support]")
{
TEST_ASSERT( bootloader_util_regions_overlap(1, 2, 1, 2) );
TEST_ASSERT( bootloader_util_regions_overlap(1, 2, 0, 2) );
TEST_ASSERT( bootloader_util_regions_overlap(1, 2, 1, 3) );
TEST_ASSERT( bootloader_util_regions_overlap(1, 2, 0, 3) );
TEST_ASSERT( bootloader_util_regions_overlap(0, 2, 1, 2) );
TEST_ASSERT( bootloader_util_regions_overlap(1, 3, 1, 2) );
TEST_ASSERT( bootloader_util_regions_overlap(0, 3, 1, 2) );
TEST_ASSERT( !bootloader_util_regions_overlap(2, 3, 1, 2) );
TEST_ASSERT( !bootloader_util_regions_overlap(1, 2, 2, 3) );
TEST_ASSERT( !bootloader_util_regions_overlap(3, 4, 1, 2) );
TEST_ASSERT( !bootloader_util_regions_overlap(1, 2, 3, 4) );
}

View File

@@ -11,7 +11,6 @@ if(CONFIG_BT_ENABLED)
bluedroid/bta/av/include
bluedroid/bta/dm/include
bluedroid/bta/gatt/include
bluedroid/bta/hf_client/include
bluedroid/bta/hh/include
bluedroid/bta/jv/include
bluedroid/bta/sdp/include
@@ -94,14 +93,6 @@ if(CONFIG_BT_ENABLED)
"bluedroid/bta/jv/bta_jv_api.c"
"bluedroid/bta/jv/bta_jv_cfg.c"
"bluedroid/bta/jv/bta_jv_main.c"
"bluedroid/bta/hf_client/bta_hf_client_act.c"
"bluedroid/bta/hf_client/bta_hf_client_api.c"
"bluedroid/bta/hf_client/bta_hf_client_at.c"
"bluedroid/bta/hf_client/bta_hf_client_cmd.c"
"bluedroid/bta/hf_client/bta_hf_client_main.c"
"bluedroid/bta/hf_client/bta_hf_client_rfc.c"
"bluedroid/bta/hf_client/bta_hf_client_sco.c"
"bluedroid/bta/hf_client/bta_hf_client_sdp.c"
"bluedroid/bta/sdp/bta_sdp.c"
"bluedroid/bta/sdp/bta_sdp_act.c"
"bluedroid/bta/sdp/bta_sdp_api.c"
@@ -131,8 +122,6 @@ if(CONFIG_BT_ENABLED)
"bluedroid/btc/profile/std/a2dp/btc_a2dp_source.c"
"bluedroid/btc/profile/std/a2dp/btc_av.c"
"bluedroid/btc/profile/std/avrc/btc_avrc.c"
"bluedroid/btc/profile/std/hf_client/btc_hf_client.c"
"bluedroid/btc/profile/std/hf_client/bta_hf_client_co.c"
"bluedroid/btc/profile/std/gap/btc_gap_ble.c"
"bluedroid/btc/profile/std/gap/btc_gap_bt.c"
"bluedroid/btc/profile/std/gatt/btc_gatt_common.c"
@@ -165,7 +154,6 @@ if(CONFIG_BT_ENABLED)
"bluedroid/external/sbc/encoder/srce/sbc_enc_coeffs.c"
"bluedroid/external/sbc/encoder/srce/sbc_encoder.c"
"bluedroid/external/sbc/encoder/srce/sbc_packing.c"
"bluedroid/hci/buffer_allocator.c"
"bluedroid/hci/hci_audio.c"
"bluedroid/hci/hci_hal_h4.c"
"bluedroid/hci/hci_layer.c"
@@ -289,6 +277,10 @@ set(COMPONENT_PRIV_REQUIRES nvs_flash)
register_component()
if(CONFIG_BT_ENABLED)
if(GCC_NOT_5_2_0)
component_compile_options(-Wno-implicit-fallthrough -Wno-unused-const-variable)
endif()
target_link_libraries(bt "-L${CMAKE_CURRENT_LIST_DIR}/lib")
target_link_libraries(bt btdm_app)
endif()

View File

@@ -6,41 +6,67 @@ config BT_ENABLED
help
Select this option to enable Bluetooth and show the submenu with Bluetooth configuration choices.
choice BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH
prompt "BR/EDR Sync(SCO/eSCO) default data path"
depends on BT_ENABLED
default BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_PCM
help
SCO data path, i.e. HCI or PCM.
SCO data can be sent/received through HCI synchronous packets, or the data
can be routed to on-chip PCM module on ESP32. PCM input/output signals can
be "matrixed" to GPIOs. The default data path can also be set using API
"esp_bredr_sco_datapath_set"
menu "Bluetooth controller"
visible if BT_ENABLED
choice BTDM_CONTROLLER_MODE
prompt "Bluetooth controller mode (BR/EDR/BLE/DUALMODE)"
depends on BT_ENABLED
help
Specify the bluetooth controller mode (BR/EDR, BLE or dual mode).
config BTDM_CONTROLLER_MODE_BLE_ONLY
bool "BLE Only"
config BTDM_CONTROLLER_MODE_BR_EDR_ONLY
bool "BR/EDR Only"
config BTDM_CONTROLLER_MODE_BTDM
bool "Bluetooth Dual Mode"
config BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_HCI
bool "HCI"
config BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_PCM
bool "PCM"
endchoice
config BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_EFF
config BTDM_CONTROLLER_BLE_MAX_CONN
int "BLE Max Connections"
depends on BTDM_CONTROLLER_MODE_BLE_ONLY || BTDM_CONTROLLER_MODE_BTDM
default 3
range 1 9
help
BLE maximum connections of bluetooth controller.
Each connection uses 1KB static DRAM whenever the BT controller is enabled.
config BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN
int "BR/EDR ACL Max Connections"
depends on BTDM_CONTROLLER_MODE_BR_EDR_ONLY || BTDM_CONTROLLER_MODE_BTDM
default 2
range 1 7
help
BR/EDR ACL maximum connections of bluetooth controller.
Each connection uses 1.2KB static DRAM whenever the BT controller is enabled.
config BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN
int "BR/EDR Sync(SCO/eSCO) Max Connections"
depends on BTDM_CONTROLLER_MODE_BR_EDR_ONLY || BTDM_CONTROLLER_MODE_BTDM
default 0
range 0 3
help
BR/EDR Synchronize maximum connections of bluetooth controller.
Each connection uses 2KB static DRAM whenever the BT controller is enabled.
config BTDM_CONTROLLER_BLE_MAX_CONN_EFF
int
default 0 if BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_HCI
default 1 if BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_PCM
default BTDM_CONTROLLER_BLE_MAX_CONN if BTDM_CONTROLLER_MODE_BLE_ONLY || BTDM_CONTROLLER_MODE_BTDM
default 0
config BTDM_CONTROLLER_AUTO_LATENCY
bool "Auto latency"
depends on BT_ENABLED
default n
help
BLE auto latency, used to enhance classic BT performance
while classic BT and BLE are enabled at the same time.
config BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF
int
default BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN if BTDM_CONTROLLER_MODE_BR_EDR_ONLY || BTDM_CONTROLLER_MODE_BTDM
default 0
config BTDM_CONTROLLER_AUTO_LATENCY_EFF
bool
default BTDM_CONTROLLER_AUTO_LATENCY if BT_ENABLED
default n
config BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF
int
default BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN if BTDM_CONTROLLER_MODE_BR_EDR_ONLY || BTDM_CONTROLLER_MODE_BTDM
default 0
choice BTDM_CONTROLLER_PINNED_TO_CORE_CHOICE
prompt "The cpu core which bluetooth controller run"
@@ -109,6 +135,7 @@ config BTDM_CONTROLLER_MODEM_SLEEP
default y
help
Enable/disable bluetooth controller low power mode.
Note that currently there is problem in the combination use of bluetooth modem sleep and Dynamic Frequency Scaling(DFS). So do not enable DFS if bluetooth modem sleep is in use.
choice BTDM_MODEM_SLEEP_MODE
prompt "Bluetooth Modem sleep mode"
@@ -119,14 +146,11 @@ choice BTDM_MODEM_SLEEP_MODE
config BTDM_MODEM_SLEEP_MODE_ORIG
bool "ORIG Mode(sleep with low power clock)"
help
ORIG mode is a bluetooth sleep mode that can be used for dual mode controller. In this mode,
bluetooth controller sleeps between BR/EDR frames and BLE events. A low power clock is used to
maintain bluetooth reference clock.
ORIG mode is a deep sleep mode that can be used for dual mode controller. In this mode, bluetooth controller sleeps between BR/EDR frames and BLE events. A low power clock is used to maintain bluetooth reference clock.
config BTDM_MODEM_SLEEP_MODE_EVED
bool "EVED Mode(For internal test only)"
bool "EVED Mode "
help
EVED mode is for BLE only and is only for internal test. Do not use it for production. this
mode is not compatible with DFS nor light sleep
This mode is for BLE only.
endchoice
choice BTDM_LOW_POWER_CLOCK
@@ -137,14 +161,85 @@ choice BTDM_LOW_POWER_CLOCK
config BTDM_LPCLK_SEL_MAIN_XTAL
bool "Main crystal"
help
Main crystal can be used as low power clock for bluetooth modem sleep. If this option is selected, bluetooth
modem sleep can work under Dynamic Frequency Scaling(DFS) enabled, but cannot work when light sleep is enabled.
Main crystal has a relatively better performance than other bluetooth low power clock sources.
config BTDM_LPCLK_SEL_EXT_32K_XTAL
bool "External 32kHz crystal"
depends on ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL
endchoice
endmenu
config BLE_SCAN_DUPLICATE
bool "BLE Scan Duplicate Options"
depends on (BTDM_CONTROLLER_MODE_BTDM || BTDM_CONTROLLER_MODE_BLE_ONLY)
default y
help
This select enables parameters setting of BLE scan duplicate.
choice SCAN_DUPLICATE_TYPE
prompt "Scan Duplicate Type"
default SCAN_DUPLICATE_BY_DEVICE_ADDR
depends on BLE_SCAN_DUPLICATE
help
Scan duplicate have three ways. one is "Scan Duplicate By Device Address", This way is to use advertiser address
filtering. The adv packet of the same address is only allowed to be reported once. Another way is "Scan Duplicate
By Device Address And Advertising Data". This way is to use advertising data and device address filtering. All
different adv packets with the same address are allowed to be reported. The last way is "Scan Duplicate By Advertising
Data". This way is to use advertising data filtering. All same advertising data only allow to be reported once even though
they are from different devices.
config SCAN_DUPLICATE_BY_DEVICE_ADDR
bool "Scan Duplicate By Device Address"
help
This way is to use advertiser address filtering. The adv packet of the same address is only allowed to be reported once
config SCAN_DUPLICATE_BY_ADV_DATA
bool "Scan Duplicate By Advertising Data"
help
This way is to use advertising data filtering. All same advertising data only allow to be reported once even though
they are from different devices.
config SCAN_DUPLICATE_BY_ADV_DATA_AND_DEVICE_ADDR
bool "Scan Duplicate By Device Address And Advertising Data"
help
This way is to use advertising data and device address filtering. All different adv packets with the same address are
allowed to be reported.
endchoice
config SCAN_DUPLICATE_TYPE
int
depends on BLE_SCAN_DUPLICATE
default 0 if SCAN_DUPLICATE_BY_DEVICE_ADDR
default 1 if SCAN_DUPLICATE_BY_ADV_DATA
default 2 if SCAN_DUPLICATE_BY_ADV_DATA_AND_DEVICE_ADDR
default 0
config DUPLICATE_SCAN_CACHE_SIZE
int "Maximum number of devices in scan duplicate filter"
depends on BLE_SCAN_DUPLICATE
range 10 1000
default 200
help
Maximum number of devices which can be recorded in scan duplicate filter.
When the maximum amount of device in the filter is reached, the cache will be refreshed.
config BLE_MESH_SCAN_DUPLICATE_EN
bool "Special duplicate scan mechanism for BLE Mesh scan"
depends on BLE_SCAN_DUPLICATE
default n
help
This enables the BLE scan duplicate for special BLE Mesh scan.
config MESH_DUPLICATE_SCAN_CACHE_SIZE
int "Maximum number of Mesh adv packets in scan duplicate filter"
depends on BLE_MESH_SCAN_DUPLICATE_EN
range 10 1000
default 200
help
Maximum number of adv packets which can be recorded in duplicate scan cache for BLE Mesh.
When the maximum amount of device in the filter is reached, the cache will be refreshed.
endmenu
menuconfig BLUEDROID_ENABLED
@@ -236,52 +331,71 @@ endchoice
choice HFP_AUDIO_DATA_PATH
prompt "audio(SCO) data path"
depends on HFP_ENABLE
help
SCO data path, i.e. HCI or PCM. This option is set using API
"esp_bredr_sco_datapath_set" in Bluetooth host. Default SCO data
path can also be set in Bluetooth Controller.
config HFP_AUDIO_DATA_PATH_PCM
bool "PCM"
help
This enables the Serial Port Profile
config HFP_AUDIO_DATA_PATH_HCI
bool "HCI"
help
This enables the Serial Port Profile
endchoice
config GATTS_ENABLE
bool "Include GATT server module(GATTS)"
depends on BLUEDROID_ENABLED
depends on BLUEDROID_ENABLED && (BTDM_CONTROLLER_MODE_BTDM || BTDM_CONTROLLER_MODE_BLE_ONLY)
default y
help
This option can be disabled when the app work only on gatt client mode
choice GATTS_SEND_SERVICE_CHANGE_MODE
prompt "GATTS Service Change Mode"
default GATTS_SEND_SERVICE_CHANGE_AUTO
depends on GATTS_ENABLE
help
Service change indication mode for GATT Server.
config GATTS_SEND_SERVICE_CHANGE_MANUAL
bool "GATTS manually send service change indication"
help
Manually send service change indication through API esp_ble_gatts_send_service_change_indication()
config GATTS_SEND_SERVICE_CHANGE_AUTO
bool "GATTS automatically send service change indication"
help
Let Bluedroid handle the service change indication internally
endchoice
config GATTS_SEND_SERVICE_CHANGE_MODE
int
depends on GATTS_ENABLE
default 0 if GATTS_SEND_SERVICE_CHANGE_AUTO
default 1 if GATTS_SEND_SERVICE_CHANGE_MANUAL
default 0
config GATTC_ENABLE
bool "Include GATT client module(GATTC)"
depends on BLUEDROID_ENABLED
depends on BLUEDROID_ENABLED && (BTDM_CONTROLLER_MODE_BTDM || BTDM_CONTROLLER_MODE_BLE_ONLY)
default y
help
This option can be close when the app work only on gatt server mode
config GATTC_CACHE_NVS_FLASH
bool "Save gattc cache data to nvs flash"
depends on GATTC_ENABLE
depends on GATTC_ENABLE && (BTDM_CONTROLLER_MODE_BTDM || BTDM_CONTROLLER_MODE_BLE_ONLY)
default n
help
This select can save gattc cache data to nvs flash
config BLE_SMP_ENABLE
bool "Include BLE security module(SMP)"
depends on BLUEDROID_ENABLED
depends on BLUEDROID_ENABLED && (BTDM_CONTROLLER_MODE_BTDM || BTDM_CONTROLLER_MODE_BLE_ONLY)
default y
help
This option can be close when the app not used the ble security connect.
config SMP_SLAVE_CON_PARAMS_UPD_ENABLE
bool "Slave enable connection parameters update during pairing"
depends on BLE_SMP_ENABLE
default n
help
In order to reduce the pairing time, slave actively initiates connection parameters update during pairing.
config BT_STACK_NO_LOG
bool "Disable BT debug logs (minimize bin size)"
depends on BLUEDROID_ENABLED
@@ -1061,100 +1175,15 @@ config BLE_HOST_QUEUE_CONGESTION_CHECK
handling adv packets is slow, it will cause the controller memory to run out. if enabled, adv packets will be
lost when host queue is congested.
config BLE_SCAN_DUPLICATE
bool "BLE Scan Duplicate Options"
depends on BLUEDROID_ENABLED
default y
help
This select enables parameters setting of BLE scan duplicate.
config DUPLICATE_SCAN_CACHE_SIZE
int "Maximum number of devices in scan duplicate filter"
depends on BLE_SCAN_DUPLICATE
range 10 1000
default 50
help
Maximum number of devices which can be recorded in scan duplicate filter.
When the maximum amount of device in the filter is reached, the cache will be refreshed.
config BLE_MESH_SCAN_DUPLICATE_EN
bool "Special duplicate scan mechanism for BLE Mesh scan"
depends on BLE_SCAN_DUPLICATE
default n
help
This enables the BLE scan duplicate for special BLE Mesh scan.
config MESH_DUPLICATE_SCAN_CACHE_SIZE
int "Maximum number of Mesh adv packets in scan duplicate filter"
depends on BLE_MESH_SCAN_DUPLICATE_EN
range 10 1000
default 100
help
Maximum number of adv packets which can be recorded in duplicate scan cache for BLE Mesh.
When the maximum amount of device in the filter is reached, the cache will be refreshed.
config BLE_ADV_REPORT_FLOW_CONTROL_SUPPORTED
bool "BLE adv report flow control supported"
depends on BLUEDROID_ENABLED
default y
help
The function is mainly used to enable flow control for advertising reports. When it is enabled,
advertising reports will be discarded by the controller if the number of unprocessed advertising
reports exceeds the size of BLE adv report flow control.
config BLE_ADV_REPORT_FLOW_CONTROL_NUM
int "BLE adv report flow control number"
depends on BLE_ADV_REPORT_FLOW_CONTROL_SUPPORTED
range 50 1000
default 100
help
The number of unprocessed advertising report that Bluedroid can save.If you set
`BLE_ADV_REPORT_FLOW_CONTROL_NUM` to a small value, this may cause adv packets lost.
If you set `BLE_ADV_REPORT_FLOW_CONTROL_NUM` to a large value, Bluedroid may cache a
lot of adv packets and this may cause system memory run out. For example, if you set
it to 50, the maximum memory consumed by host is 35 * 50 bytes. Please set
`BLE_ADV_REPORT_FLOW_CONTROL_NUM` according to your system free memory and handle adv
packets as fast as possible, otherwise it will cause adv packets lost.
config BLE_ADV_REPORT_DISCARD_THRSHOLD
int "BLE adv lost event threshold value"
depends on BLE_ADV_REPORT_FLOW_CONTROL_SUPPORTED
range 1 1000
default 20
help
When adv report flow control is enabled, The ADV lost event will be generated when the number
of ADV packets lost in the controller reaches this threshold. It is better to set a larger value.
If you set `BLE_ADV_REPORT_DISCARD_THRSHOLD` to a small value or printf every adv lost event, it
may cause adv packets lost more.
config SMP_ENABLE
bool
depends on BLUEDROID_ENABLED
default CLASSIC_BT_ENABLED || BLE_SMP_ENABLE
config BLE_ACTIVE_SCAN_REPORT_ADV_SCAN_RSP_INDIVIDUALLY
bool "Report adv data and scan response individually when BLE active scan"
depends on BLUEDROID_ENABLED
default n
help
Originally, when doing BLE active scan, Bluedroid will not report adv to application layer
until receive scan response. This option is used to disable the behavior. When enable this option,
Bluedroid will report adv data or scan response to application layer immediately.
# Memory reserved at start of DRAM for Bluetooth stack
config BLE_ESTABLISH_LINK_CONNECTION_TIMEOUT
int "Timeout of BLE connection establishment"
depends on BLUEDROID_ENABLED
range 1 60
default 30
help
Bluetooth Connection establishment maximum time, if connection time exceeds this value, the connection
establishment fails, ESP_GATTC_OPEN_EVT or ESP_GATTS_OPEN_EVT is triggered.
config BT_RESERVE_DRAM
hex
default 0x10000 if BT_ENABLED
default 0xdb5c if BT_ENABLED
default 0
endmenu

View File

@@ -179,6 +179,19 @@ esp_err_t esp_ble_gap_set_rand_addr(esp_bd_addr_t rand_addr)
return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
}
esp_err_t esp_ble_gap_clear_rand_addr(void)
{
btc_msg_t msg;
ESP_BLUEDROID_STATUS_CHECK(ESP_BLUEDROID_STATUS_ENABLED);
msg.sig = BTC_SIG_API_CALL;
msg.pid = BTC_PID_GAP_BLE;
msg.act = BTC_GAP_BLE_ACT_CLEAR_RAND_ADDRESS;
return (btc_transfer_context(&msg, NULL, 0, NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
}
esp_err_t esp_ble_gap_config_local_privacy (bool privacy_enable)
{
btc_msg_t msg;

View File

@@ -261,7 +261,7 @@ esp_err_t esp_bt_gap_set_pin(esp_bt_pin_type_t pin_type, uint8_t pin_code_len, e
memset(arg.set_pin_type.pin_code, 0, ESP_BT_PIN_CODE_LEN);
}
return (btc_transfer_context(&msg, &arg, sizeof(btc_gap_bt_args_t), NULL)
return (btc_transfer_context(&msg, &arg, sizeof(btc_gap_bt_args_t), btc_gap_bt_arg_deep_copy)
== BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
}
@@ -282,8 +282,69 @@ esp_err_t esp_bt_gap_pin_reply(esp_bd_addr_t bd_addr, bool accept, uint8_t pin_c
memcpy(arg.pin_reply.bda.address, bd_addr, sizeof(esp_bd_addr_t));
memcpy(arg.pin_reply.pin_code, pin_code, pin_code_len);
return (btc_transfer_context(&msg, &arg, sizeof(btc_gap_bt_args_t), NULL)
return (btc_transfer_context(&msg, &arg, sizeof(btc_gap_bt_args_t), btc_gap_bt_arg_deep_copy)
== BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
}
#if (BT_SSP_INCLUDED == TRUE)
esp_err_t esp_bt_gap_set_security_param(esp_bt_sp_param_t param_type,
void *value, uint8_t len)
{
btc_msg_t msg;
btc_gap_bt_args_t arg;
if (esp_bluedroid_get_status() != ESP_BLUEDROID_STATUS_ENABLED) {
return ESP_ERR_INVALID_STATE;
}
msg.sig = BTC_SIG_API_CALL;
msg.pid = BTC_PID_GAP_BT;
msg.act = BTC_GAP_BT_ACT_SET_SECURITY_PARAM;
arg.set_security_param.param_type = param_type;
arg.set_security_param.len = len;
arg.set_security_param.value = value;
return (btc_transfer_context(&msg, &arg, sizeof(btc_gap_bt_args_t), btc_gap_bt_arg_deep_copy)
== BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
}
esp_err_t esp_bt_gap_ssp_passkey_reply(esp_bd_addr_t bd_addr, bool accept, uint32_t passkey)
{
btc_msg_t msg;
btc_gap_bt_args_t arg;
if (esp_bluedroid_get_status() != ESP_BLUEDROID_STATUS_ENABLED) {
return ESP_ERR_INVALID_STATE;
}
msg.sig = BTC_SIG_API_CALL;
msg.pid = BTC_PID_GAP_BT;
msg.act = BTC_GAP_BT_ACT_PASSKEY_REPLY;
arg.passkey_reply.accept = accept;
arg.passkey_reply.passkey = passkey;
memcpy(arg.passkey_reply.bda.address, bd_addr, sizeof(esp_bd_addr_t));
return (btc_transfer_context(&msg, &arg, sizeof(btc_gap_bt_args_t), btc_gap_bt_arg_deep_copy)
== BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
}
esp_err_t esp_bt_gap_ssp_confirm_reply(esp_bd_addr_t bd_addr, bool accept)
{
btc_msg_t msg;
btc_gap_bt_args_t arg;
if (esp_bluedroid_get_status() != ESP_BLUEDROID_STATUS_ENABLED) {
return ESP_ERR_INVALID_STATE;
}
msg.sig = BTC_SIG_API_CALL;
msg.pid = BTC_PID_GAP_BT;
msg.act = BTC_GAP_BT_ACT_CONFIRM_REPLY;
arg.confirm_reply.accept = accept;
memcpy(arg.confirm_reply.bda.address, bd_addr, sizeof(esp_bd_addr_t));
return (btc_transfer_context(&msg, &arg, sizeof(btc_gap_bt_args_t), btc_gap_bt_arg_deep_copy)
== BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
}
#endif /*(BT_SSP_INCLUDED == TRUE)*/
#endif /* #if BTC_GAP_BT_INCLUDED == TRUE */

View File

@@ -46,13 +46,4 @@ esp_err_t esp_ble_gatt_set_local_mtu (uint16_t mtu)
arg.set_mtu.mtu = mtu;
return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatt_com_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
}
#if (BLE_INCLUDED == TRUE)
extern uint16_t L2CA_GetFreePktBufferNum_LE(void);
uint16_t esp_ble_get_sendable_packets_num ()
{
return L2CA_GetFreePktBufferNum_LE();
}
#endif
}

View File

@@ -321,7 +321,6 @@ esp_gatt_status_t esp_ble_gatts_get_attr_value(uint16_t attr_handle, uint16_t *l
ESP_BLUEDROID_STATUS_CHECK(ESP_BLUEDROID_STATUS_ENABLED);
if (attr_handle == ESP_GATT_ILLEGAL_HANDLE) {
*length = 0;
return ESP_GATT_INVALID_HANDLE;
}
@@ -362,6 +361,27 @@ esp_err_t esp_ble_gatts_close(esp_gatt_if_t gatts_if, uint16_t conn_id)
== BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
}
esp_err_t esp_ble_gatts_send_service_change_indication(esp_gatt_if_t gatts_if, esp_bd_addr_t remote_bda)
{
btc_msg_t msg;
btc_ble_gatts_args_t arg;
ESP_BLUEDROID_STATUS_CHECK(ESP_BLUEDROID_STATUS_ENABLED);
msg.sig = BTC_SIG_API_CALL;
msg.pid = BTC_PID_GATTS;
msg.act = BTC_GATTS_ACT_SEND_SERVICE_CHANGE;
arg.send_service_change.gatts_if = gatts_if;
if(remote_bda) {
memcpy(&arg.send_service_change.remote_bda, remote_bda, sizeof(esp_bd_addr_t));
} else {
memset(arg.send_service_change.remote_bda, 0, sizeof(esp_bd_addr_t));
}
return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gatts_args_t), NULL)
== BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
}
static esp_err_t esp_ble_gatts_add_char_desc_param_check(esp_attr_value_t *char_val, esp_attr_control_t *control)
{

View File

@@ -95,10 +95,6 @@ esp_err_t esp_spp_connect(esp_spp_sec_t sec_mask,
btc_spp_args_t arg;
ESP_BLUEDROID_STATUS_CHECK(ESP_BLUEDROID_STATUS_ENABLED);
if (sec_mask != ESP_SPP_SEC_NONE && sec_mask != ESP_SPP_SEC_AUTHORIZE && sec_mask != ESP_SPP_SEC_AUTHENTICATE) {
LOG_WARN("Suggest to use ESP_SPP_SEC_NONE, ESP_SPP_SEC_AUTHORIZE or ESP_SPP_SEC_AUTHENTICATE only\n");
}
msg.sig = BTC_SIG_API_CALL;
msg.pid = BTC_PID_SPP;
msg.act = BTC_SPP_ACT_CONNECT;
@@ -137,10 +133,6 @@ esp_err_t esp_spp_start_srv(esp_spp_sec_t sec_mask,
return ESP_ERR_INVALID_ARG;
}
if (sec_mask != ESP_SPP_SEC_NONE && sec_mask != ESP_SPP_SEC_AUTHORIZE && sec_mask != ESP_SPP_SEC_AUTHENTICATE) {
LOG_WARN("Suggest to use ESP_SPP_SEC_NONE, ESP_SPP_SEC_AUTHORIZE or ESP_SPP_SEC_AUTHENTICATE only\n");
}
msg.sig = BTC_SIG_API_CALL;
msg.pid = BTC_PID_SPP;
msg.act = BTC_SPP_ACT_START_SRV;

View File

@@ -116,7 +116,7 @@ typedef union {
struct a2d_audio_cfg_param {
esp_bd_addr_t remote_bda; /*!< remote bluetooth device address */
esp_a2d_mcc_t mcc; /*!< A2DP media codec capability information */
} audio_cfg; /*!< media codec configuration infomation */
} audio_cfg; /*!< media codec configuration information */
/**
* @brief ESP_A2D_MEDIA_CTRL_ACK_EVT
@@ -147,12 +147,12 @@ typedef void (* esp_a2d_sink_data_cb_t)(const uint8_t *buf, uint32_t len);
/**
* @brief A2DP source data read callback function
*
* @param[in] buf : buffer to be filled with PCM data stream from higer layer
* @param[in] buf : buffer to be filled with PCM data stream from higher layer
*
* @param[in] len : size(in bytes) of data block to be copied to buf. -1 is an indication to user
* that data buffer shall be flushed
*
* @return size of bytes read successfully, if the argumetn len is -1, this value is ignored.
* @return size of bytes read successfully, if the argument len is -1, this value is ignored.
*
*/
typedef int32_t (* esp_a2d_source_data_cb_t)(uint8_t *buf, int32_t len);

View File

@@ -111,7 +111,7 @@ typedef enum {
/// AVRC shuffle modes
typedef enum {
ESP_AVRC_PS_SHUFFLE_OFF = 0x1, /*<! shuffle off */
ESP_AVRC_PS_SHUFFLE_ALL = 0x2, /*<! all trackes shuffle */
ESP_AVRC_PS_SHUFFLE_ALL = 0x2, /*<! shuffle all tracks */
ESP_AVRC_PS_SHUFFLE_GROUP = 0x3 /*<! group shuffle */
} esp_avrc_ps_shf_value_ids_t;

View File

@@ -112,7 +112,7 @@ typedef enum {
BLE_ADDR_TYPE_RPA_RANDOM = 0x03,
} esp_ble_addr_type_t;
/// Used to exchange the encrytyption key in the init key & response key
/// Used to exchange the encryption key in the init key & response key
#define ESP_BLE_ENC_KEY_MASK (1 << 0) /* relate to BTM_BLE_ENC_KEY_MASK in stack/btm_api.h */
/// Used to exchange the IRK key in the init key & response key
#define ESP_BLE_ID_KEY_MASK (1 << 1) /* relate to BTM_BLE_ID_KEY_MASK in stack/btm_api.h */

View File

@@ -54,7 +54,6 @@ typedef uint8_t esp_ble_key_type_t;
#define ESP_LE_AUTH_NO_BOND 0x00 /*!< 0*/ /* relate to BTM_LE_AUTH_NO_BOND in stack/btm_api.h */
#define ESP_LE_AUTH_BOND 0x01 /*!< 1 << 0 */ /* relate to BTM_LE_AUTH_BOND in stack/btm_api.h */
#define ESP_LE_AUTH_REQ_MITM (1 << 2) /*!< 1 << 2 */ /* relate to BTM_LE_AUTH_REQ_MITM in stack/btm_api.h */
#define ESP_LE_AUTH_REQ_BOND_MITM (ESP_LE_AUTH_BOND | ESP_LE_AUTH_REQ_MITM)/*!< 0101*/
#define ESP_LE_AUTH_REQ_SC_ONLY (1 << 3) /*!< 1 << 3 */ /* relate to BTM_LE_AUTH_REQ_SC_ONLY in stack/btm_api.h */
#define ESP_LE_AUTH_REQ_SC_BOND (ESP_LE_AUTH_BOND | ESP_LE_AUTH_REQ_SC_ONLY) /*!< 1001 */ /* relate to BTM_LE_AUTH_REQ_SC_BOND in stack/btm_api.h */
#define ESP_LE_AUTH_REQ_SC_MITM (ESP_LE_AUTH_REQ_MITM | ESP_LE_AUTH_REQ_SC_ONLY) /*!< 1100 */ /* relate to BTM_LE_AUTH_REQ_SC_MITM in stack/btm_api.h */
@@ -155,7 +154,7 @@ typedef enum {
ESP_GAP_BLE_SCAN_STOP_COMPLETE_EVT, /*!< When stop scan complete, the event comes */
ESP_GAP_BLE_SET_STATIC_RAND_ADDR_EVT, /*!< When set the static rand address complete, the event comes */
ESP_GAP_BLE_UPDATE_CONN_PARAMS_EVT, /*!< When update connection parameters complete, the event comes */
ESP_GAP_BLE_SET_PKT_LENGTH_COMPLETE_EVT, /*!< When set pkt lenght complete, the event comes */
ESP_GAP_BLE_SET_PKT_LENGTH_COMPLETE_EVT, /*!< When set pkt length complete, the event comes */
ESP_GAP_BLE_SET_LOCAL_PRIVACY_COMPLETE_EVT, /*!< When Enable/disable privacy on the local device complete, the event comes */
ESP_GAP_BLE_REMOVE_BOND_DEV_COMPLETE_EVT, /*!< When remove the bond device complete, the event comes */
ESP_GAP_BLE_CLEAR_BOND_DEV_COMPLETE_EVT, /*!< When clear the bond device clear complete, the event comes */
@@ -263,23 +262,13 @@ typedef enum {
typedef enum {
ESP_BLE_SM_PASSKEY = 0,
/* Authentication requirements of local device */
ESP_BLE_SM_AUTHEN_REQ_MODE,
/* The IO capability of local device */
ESP_BLE_SM_IOCAP_MODE,
/* Initiator Key Distribution/Generation */
ESP_BLE_SM_SET_INIT_KEY,
/* Responder Key Distribution/Generation */
ESP_BLE_SM_SET_RSP_KEY,
/* Maximum Encryption key size to support */
ESP_BLE_SM_MAX_KEY_SIZE,
/* Minimum Encryption key size requirement from Peer */
ESP_BLE_SM_MIN_KEY_SIZE,
/* Set static Passkey */
ESP_BLE_SM_SET_STATIC_PASSKEY,
/* Reset static Passkey */
ESP_BLE_SM_CLEAR_STATIC_PASSKEY,
/* Accept only specified SMP Authentication requirement */
ESP_BLE_SM_ONLY_ACCEPT_SPECIFIED_SEC_AUTH,
ESP_BLE_SM_MAX_PARAM,
} esp_ble_sm_param_t;
@@ -297,7 +286,7 @@ typedef struct {
esp_ble_adv_type_t adv_type; /*!< Advertising type */
esp_ble_addr_type_t own_addr_type; /*!< Owner bluetooth device address type */
esp_bd_addr_t peer_addr; /*!< Peer device bluetooth device address */
esp_ble_addr_type_t peer_addr_type; /*!< Peer device bluetooth device address type, only support public address type and random address type */
esp_ble_addr_type_t peer_addr_type; /*!< Peer device bluetooth device address type */
esp_ble_adv_channel_t channel_map; /*!< Advertising channel map */
esp_ble_adv_filter_t adv_filter_policy; /*!< Advertising filter policy */
} esp_ble_adv_params_t;
@@ -307,8 +296,21 @@ typedef struct {
bool set_scan_rsp; /*!< Set this advertising data as scan response or not*/
bool include_name; /*!< Advertising data include device name or not */
bool include_txpower; /*!< Advertising data include TX power */
int min_interval; /*!< Advertising data show advertising min interval */
int max_interval; /*!< Advertising data show advertising max interval */
int min_interval; /*!< Advertising data show slave preferred connection min interval.
The connection interval in the following manner:
connIntervalmin = Conn_Interval_Min * 1.25 ms
Conn_Interval_Min range: 0x0006 to 0x0C80
Value of 0xFFFF indicates no specific minimum.
Values not defined above are reserved for future use.*/
int max_interval; /*!< Advertising data show slave preferred connection max interval.
The connection interval in the following manner:
connIntervalmax = Conn_Interval_Max * 1.25 ms
Conn_Interval_Max range: 0x0006 to 0x0C80
Conn_Interval_Max shall be equal to or greater than the Conn_Interval_Min.
Value of 0xFFFF indicates no specific maximum.
Values not defined above are reserved for future use.*/
int appearance; /*!< External appearance of device */
uint16_t manufacturer_len; /*!< Manufacturer data length */
uint8_t *p_manufacturer_data; /*!< Manufacturer data point */
@@ -364,8 +366,8 @@ typedef struct {
Range: 0x0004 to 0x4000 Default: 0x0010 (10 ms)
Time = N * 0.625 msec
Time Range: 2.5 msec to 10240 msec */
esp_ble_scan_duplicate_t scan_duplicate; /*!< The Scan_Duplicates parameter controls whether the Link Layer should filter out
duplicate advertising reports (BLE_SCAN_DUPLICATE_ENABLE) to the Host, or if the Link Layer should generate
esp_ble_scan_duplicate_t scan_duplicate; /*!< The Scan_Duplicates parameter controls whether the Link Layer should filter out
duplicate advertising reports (BLE_SCAN_DUPLICATE_ENABLE) to the Host, or if the Link Layer should generate
advertising reports for each packet received */
} esp_ble_scan_params_t;
@@ -473,7 +475,7 @@ typedef union
} esp_ble_key_value_t; /*!< ble key value type*/
/**
* @brief struct type of the bond key informatuon value
* @brief struct type of the bond key information value
*/
typedef struct
{
@@ -539,7 +541,7 @@ typedef union
esp_ble_key_t ble_key; /*!< BLE SMP keys used when pairing */
esp_ble_local_id_keys_t ble_id_keys; /*!< BLE IR event */
esp_ble_auth_cmpl_t auth_cmpl; /*!< Authentication complete indication. */
} esp_ble_sec_t; /*!< Ble secutity type */
} esp_ble_sec_t; /*!< BLE security type */
/// Sub Event of ESP_GAP_BLE_SCAN_RESULT_EVT
typedef enum {
@@ -550,7 +552,6 @@ typedef enum {
ESP_GAP_SEARCH_DISC_CMPL_EVT = 4, /*!< Discovery complete. */
ESP_GAP_SEARCH_DI_DISC_CMPL_EVT = 5, /*!< Discovery complete. */
ESP_GAP_SEARCH_SEARCH_CANCEL_CMPL_EVT = 6, /*!< Search cancelled */
ESP_GAP_SEARCH_INQ_DISCARD_NUM_EVT = 7, /*!< The number of pkt discarded by flow control */
} esp_gap_search_evt_t;
/**
@@ -606,7 +607,6 @@ typedef union {
int num_resps; /*!< Scan result number */
uint8_t adv_data_len; /*!< Adv data length */
uint8_t scan_rsp_len; /*!< Scan response length */
uint32_t num_dis; /*!< The number of discard packets */
} scan_rst; /*!< Event parameter of ESP_GAP_BLE_SCAN_RESULT_EVT */
/**
* @brief ESP_GAP_BLE_ADV_DATA_RAW_SET_COMPLETE_EVT
@@ -850,6 +850,18 @@ esp_err_t esp_ble_gap_set_pkt_data_len(esp_bd_addr_t remote_device, uint16_t tx_
*/
esp_err_t esp_ble_gap_set_rand_addr(esp_bd_addr_t rand_addr);
/**
* @brief This function clears the random address for the application
*
* @return
* - ESP_OK : success
* - other : failed
*
*/
esp_err_t esp_ble_gap_clear_rand_addr(void);
/**
* @brief Enable/disable privacy on the local device
*
@@ -950,7 +962,8 @@ esp_err_t esp_ble_gap_get_local_used_addr(esp_bd_addr_t local_used_addr, uint8_t
* @param[in] type - finding ADV data type
* @param[out] length - return the length of ADV data not including type
*
* @return pointer of ADV data
* @return - ESP_OK : success
* - other : failed
*
*/
uint8_t *esp_ble_resolve_adv_data(uint8_t *adv_data, uint8_t type, uint8_t *length);
@@ -1039,10 +1052,10 @@ esp_err_t esp_ble_gap_security_rsp(esp_bd_addr_t bd_addr, bool accept);
esp_err_t esp_ble_set_encryption(esp_bd_addr_t bd_addr, esp_ble_sec_act_t sec_act);
/**
* @brief Reply the key value to the peer device in the lagecy connection stage.
* @brief Reply the key value to the peer device in the legacy connection stage.
*
* @param[in] bd_addr : BD address of the peer
* @param[in] accept : passkey entry sucessful or declined.
* @param[in] accept : passkey entry successful or declined.
* @param[in] passkey : passkey value, must be a 6 digit number,
* can be lead by 0.
*
@@ -1054,7 +1067,7 @@ esp_err_t esp_ble_passkey_reply(esp_bd_addr_t bd_addr, bool accept, uint32_t pas
/**
* @brief Reply the comfirm value to the peer device in the lagecy connection stage.
* @brief Reply the confirm value to the peer device in the legacy connection stage.
*
* @param[in] bd_addr : BD address of the peer device
* @param[in] accept : numbers to compare are the same or different.
@@ -1107,7 +1120,7 @@ esp_err_t esp_ble_get_bond_device_list(int *dev_num, esp_ble_bond_dev_t *dev_lis
/**
* @brief This function is to disconnect the physical connection of the peer device
* gattc maybe have multiple virtual GATT server connections when multiple app_id registed.
* gattc may have multiple virtual GATT server connections when multiple app_id registered.
* esp_ble_gattc_close (esp_gatt_if_t gattc_if, uint16_t conn_id) only close one virtual GATT server connection.
* if there exist other virtual GATT server connections, it does not disconnect the physical connection.
* esp_ble_gap_disconnect(esp_bd_addr_t remote_device) disconnect the physical connection directly.

View File

@@ -70,7 +70,7 @@ typedef enum {
typedef struct {
esp_bt_gap_dev_prop_type_t type; /*!< device property type */
int len; /*!< device property value length */
void *val; /*!< devlice prpoerty value */
void *val; /*!< device property value */
} esp_bt_gap_dev_prop_t;
/// Extended Inquiry Response data type
@@ -97,7 +97,7 @@ typedef enum {
ESP_BT_COD_SRVC_RENDERING = 0x20, /*!< Rendering, e.g. Printing, Speakers */
ESP_BT_COD_SRVC_CAPTURING = 0x40, /*!< Capturing, e.g. Scanner, Microphone */
ESP_BT_COD_SRVC_OBJ_TRANSFER = 0x80, /*!< Object Transfer, e.g. v-Inbox, v-Folder */
ESP_BT_COD_SRVC_AUDIO = 0x100, /*!< Audio, e.g. Speaker, Microphone, Headerset service */
ESP_BT_COD_SRVC_AUDIO = 0x100, /*!< Audio, e.g. Speaker, Microphone, Headset service */
ESP_BT_COD_SRVC_TELEPHONY = 0x200, /*!< Telephony, e.g. Cordless telephony, Modem, Headset service */
ESP_BT_COD_SRVC_INFORMATION = 0x400, /*!< Information, e.g., WEB-server, WAP-server */
} esp_bt_cod_srvc_t;
@@ -110,6 +110,18 @@ typedef enum{
#define ESP_BT_PIN_CODE_LEN 16 /*!< Max pin code length */
typedef uint8_t esp_bt_pin_code_t[ESP_BT_PIN_CODE_LEN]; /*!< Pin Code (upto 128 bits) MSB is 0 */
typedef enum {
ESP_BT_SP_IOCAP_MODE = 0, /*!< Set IO mode */
//ESP_BT_SP_OOB_DATA, //TODO /*!< Set OOB data */
} esp_bt_sp_param_t;
/* relate to BTM_IO_CAP_xxx in stack/btm_api.h */
#define ESP_BT_IO_CAP_OUT 0 /*!< DisplayOnly */ /* relate to BTM_IO_CAP_OUT in stack/btm_api.h */
#define ESP_BT_IO_CAP_IO 1 /*!< DisplayYesNo */ /* relate to BTM_IO_CAP_IO in stack/btm_api.h */
#define ESP_BT_IO_CAP_IN 2 /*!< KeyboardOnly */ /* relate to BTM_IO_CAP_IN in stack/btm_api.h */
#define ESP_BT_IO_CAP_NONE 3 /*!< NoInputNoOutput */ /* relate to BTM_IO_CAP_NONE in stack/btm_api.h */
typedef uint8_t esp_bt_io_cap_t; /*!< combination of the io capability */
/// Bits of major service class field
#define ESP_BT_COD_SRVC_BIT_MASK (0xffe000) /*!< Major service bit mask */
#define ESP_BT_COD_SRVC_BIT_OFFSET (13) /*!< Major service bit offset */
@@ -158,6 +170,9 @@ typedef enum {
ESP_BT_GAP_RMT_SRVC_REC_EVT, /*!< get remote service record event */
ESP_BT_GAP_AUTH_CMPL_EVT, /*!< AUTH complete event */
ESP_BT_GAP_PIN_REQ_EVT, /*!< Legacy Pairing Pin code request */
ESP_BT_GAP_CFM_REQ_EVT, /*!< Simple Pairing User Confirmation request. */
ESP_BT_GAP_KEY_NOTIF_EVT, /*!< Simple Pairing Passkey Notification */
ESP_BT_GAP_KEY_REQ_EVT, /*!< Simple Pairing Passkey request */
ESP_BT_GAP_READ_RSSI_DELTA_EVT, /*!< read rssi event */
ESP_BT_GAP_EVT_MAX,
} esp_bt_gap_cb_event_t;
@@ -181,7 +196,7 @@ typedef union {
esp_bd_addr_t bda; /*!< remote bluetooth device address*/
int num_prop; /*!< number of properties got */
esp_bt_gap_dev_prop_t *prop; /*!< properties discovered from the new device */
} disc_res; /*!< discovery result paramter struct */
} disc_res; /*!< discovery result parameter struct */
/**
* @brief ESP_BT_GAP_DISC_STATE_CHANGED_EVT
@@ -234,6 +249,28 @@ typedef union {
bool min_16_digit; /*!< TRUE if the pin returned must be at least 16 digits */
} pin_req; /*!< pin request parameter struct */
/**
* @brief ESP_BT_GAP_CFM_REQ_EVT
*/
struct cfm_req_param {
esp_bd_addr_t bda; /*!< remote bluetooth device address*/
uint32_t num_val; /*!< the numeric value for comparison. */
} cfm_req; /*!< confirm request parameter struct */
/**
* @brief ESP_BT_GAP_KEY_NOTIF_EVT
*/
struct key_notif_param {
esp_bd_addr_t bda; /*!< remote bluetooth device address*/
uint32_t passkey; /*!< the numeric value for passkey entry. */
} key_notif; /*!< passkey notif parameter struct */
/**
* @brief ESP_BT_GAP_KEY_REQ_EVT
*/
struct key_req_param {
esp_bd_addr_t bda; /*!< remote bluetooth device address*/
} key_req; /*!< passkey request parameter struct */
} esp_bt_gap_cb_param_t;
/**
@@ -497,6 +534,53 @@ esp_err_t esp_bt_gap_set_pin(esp_bt_pin_type_t pin_type, uint8_t pin_code_len, e
*/
esp_err_t esp_bt_gap_pin_reply(esp_bd_addr_t bd_addr, bool accept, uint8_t pin_code_len, esp_bt_pin_code_t pin_code);
#if (BT_SSP_INCLUDED == TRUE)
/**
* @brief Set a GAP security parameter value. Overrides the default value.
*
* @param[in] param_type : the type of the param which is to be set
* @param[in] value : the param value
* @param[in] len : the length of the param value
*
* @return - ESP_OK : success
* - ESP_ERR_INVALID_STATE: if bluetooth stack is not yet enabled
* - other : failed
*
*/
esp_err_t esp_bt_gap_set_security_param(esp_bt_sp_param_t param_type,
void *value, uint8_t len);
/**
* @brief Reply the key value to the peer device in the legacy connection stage.
*
* @param[in] bd_addr : BD address of the peer
* @param[in] accept : passkey entry successful or declined.
* @param[in] passkey : passkey value, must be a 6 digit number,
* can be lead by 0.
*
* @return - ESP_OK : success
* - ESP_ERR_INVALID_STATE: if bluetooth stack is not yet enabled
* - other : failed
*
*/
esp_err_t esp_bt_gap_ssp_passkey_reply(esp_bd_addr_t bd_addr, bool accept, uint32_t passkey);
/**
* @brief Reply the confirm value to the peer device in the legacy connection stage.
*
* @param[in] bd_addr : BD address of the peer device
* @param[in] accept : numbers to compare are the same or different.
*
* @return - ESP_OK : success
* - ESP_ERR_INVALID_STATE: if bluetooth stack is not yet enabled
* - other : failed
*
*/
esp_err_t esp_bt_gap_ssp_confirm_reply(esp_bd_addr_t bd_addr, bool accept);
#endif /*(BT_SSP_INCLUDED == TRUE)*/
#ifdef __cplusplus
}
#endif

View File

@@ -12,6 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef __ESP_GATT_COMMON_API_H__
#define __ESP_GATT_COMMON_API_H__
#include <stdint.h>
#include <stdbool.h>
@@ -41,10 +44,8 @@ extern "C" {
*/
extern esp_err_t esp_ble_gatt_set_local_mtu (uint16_t mtu);
#if (BLE_INCLUDED == TRUE)
extern uint16_t esp_ble_get_sendable_packets_num (void);
#endif
#ifdef __cplusplus
}
#endif
#endif /* __ESP_GATT_COMMON_API_H__ */

View File

@@ -34,7 +34,7 @@ extern "C" {
* All "ESP_GATT_UUID_xxx" is attribute types
*/
#define ESP_GATT_UUID_IMMEDIATE_ALERT_SVC 0x1802 /* Immediate alert Service*/
#define ESP_GATT_UUID_LINK_LOSS_SVC 0x1803 /* Link Loss Service*/
#define ESP_GATT_UUID_LINK_LOSS_SVC 0x1803 /* Link Loss Service*/
#define ESP_GATT_UUID_TX_POWER_SVC 0x1804 /* TX Power Service*/
#define ESP_GATT_UUID_CURRENT_TIME_SVC 0x1805 /* Current Time Service Service*/
#define ESP_GATT_UUID_REF_TIME_UPDATE_SVC 0x1806 /* Reference Time Update Service*/
@@ -68,14 +68,8 @@ extern "C" {
#define ESP_GATT_UUID_CHAR_PRESENT_FORMAT 0x2904 /* Characteristic Presentation Format*/
#define ESP_GATT_UUID_CHAR_AGG_FORMAT 0x2905 /* Characteristic Aggregate Format*/
#define ESP_GATT_UUID_CHAR_VALID_RANGE 0x2906 /* Characteristic Valid Range */
#define ESP_GATT_UUID_EXT_RPT_REF_DESCR 0x2907 /* External Report Reference */
#define ESP_GATT_UUID_RPT_REF_DESCR 0x2908 /* Report Reference */
#define ESP_GATT_UUID_NUM_DIGITALS_DESCR 0x2909 /* Number of Digitals */
#define ESP_GATT_UUID_VALUE_TRIGGER_DESCR 0x290A /* Value Trigger Setting */
#define ESP_GATT_UUID_ENV_SENSING_CONFIG_DESCR 0x290B /* Environmental Sensing Configuration */
#define ESP_GATT_UUID_ENV_SENSING_MEASUREMENT_DESCR 0x290C /* Environmental Sensing Measurement */
#define ESP_GATT_UUID_ENV_SENSING_TRIGGER_DESCR 0x290D /* Environmental Sensing Trigger Setting */
#define ESP_GATT_UUID_TIME_TRIGGER_DESCR 0x290E /* Time Trigger Setting */
#define ESP_GATT_UUID_EXT_RPT_REF_DESCR 0x2907
#define ESP_GATT_UUID_RPT_REF_DESCR 0x2908
/* GAP Profile Attributes */
#define ESP_GATT_UUID_GAP_DEVICE_NAME 0x2A00
@@ -230,7 +224,7 @@ typedef enum {
ESP_GATT_CONN_L2C_FAILURE = 1, /*!< General L2cap failure */ /* relate to BTA_GATT_CONN_L2C_FAILURE in bta/bta_gatt_api.h */
ESP_GATT_CONN_TIMEOUT = 0x08, /*!< Connection timeout */ /* relate to BTA_GATT_CONN_TIMEOUT in bta/bta_gatt_api.h */
ESP_GATT_CONN_TERMINATE_PEER_USER = 0x13, /*!< Connection terminate by peer user */ /* relate to BTA_GATT_CONN_TERMINATE_PEER_USER in bta/bta_gatt_api.h */
ESP_GATT_CONN_TERMINATE_LOCAL_HOST = 0x16, /*!< Connectionterminated by local host */ /* relate to BTA_GATT_CONN_TERMINATE_LOCAL_HOST in bta/bta_gatt_api.h */
ESP_GATT_CONN_TERMINATE_LOCAL_HOST = 0x16, /*!< Connection terminated by local host */ /* relate to BTA_GATT_CONN_TERMINATE_LOCAL_HOST in bta/bta_gatt_api.h */
ESP_GATT_CONN_FAIL_ESTABLISH = 0x3e, /*!< Connection fail to establish */ /* relate to BTA_GATT_CONN_FAIL_ESTABLISH in bta/bta_gatt_api.h */
ESP_GATT_CONN_LMP_TIMEOUT = 0x22, /*!< Connection fail for LMP response tout */ /* relate to BTA_GATT_CONN_LMP_TIMEOUT in bta/bta_gatt_api.h */
ESP_GATT_CONN_CONN_CANCEL = 0x0100, /*!< L2CAP connection cancelled */ /* relate to BTA_GATT_CONN_CONN_CANCEL in bta/bta_gatt_api.h */
@@ -295,12 +289,17 @@ typedef uint8_t esp_gatt_char_prop_t;
/// GATT maximum attribute length
#define ESP_GATT_MAX_ATTR_LEN 600 //as same as GATT_MAX_ATTR_LEN
typedef enum {
ESP_GATT_SERVICE_FROM_REMOTE_DEVICE = 0, /* relate to BTA_GATTC_SERVICE_INFO_FROM_REMOTE_DEVICE in bta_gattc_int.h */
ESP_GATT_SERVICE_FROM_NVS_FLASH = 1, /* relate to BTA_GATTC_SERVICE_INFO_FROM_NVS_FLASH in bta_gattc_int.h */
ESP_GATT_SERVICE_FROM_UNKNOWN = 2, /* relate to BTA_GATTC_SERVICE_INFO_FROM_UNKNOWN in bta_gattc_int.h */
} esp_service_source_t;
/**
* @brief Attribute description (used to create database)
*/
typedef struct
{
{
uint16_t uuid_length; /*!< UUID length */
uint8_t *uuid_p; /*!< UUID value */
uint16_t perm; /*!< Attribute permission */
@@ -349,23 +348,23 @@ typedef struct
/**
* @brief Gatt include service entry element
*/
typedef struct
typedef struct
{
uint16_t start_hdl; /*!< Gatt start handle value of included service */
uint16_t end_hdl; /*!< Gatt end handle value of included service */
uint16_t uuid; /*!< Gatt attribute value UUID of included service */
uint16_t start_hdl; /*!< Gatt start handle value of included service */
uint16_t end_hdl; /*!< Gatt end handle value of included service */
uint16_t uuid; /*!< Gatt attribute value UUID of included service */
} esp_gatts_incl_svc_desc_t; /*!< Gatt include service entry element */
/**
* @brief Gatt include 128 bit service entry element
*/
typedef struct
typedef struct
{
uint16_t start_hdl; /*!< Gatt start handle value of included 128 bit service */
uint16_t end_hdl; /*!< Gatt end handle value of included 128 bit service */
} esp_gatts_incl128_svc_desc_t; /*!< Gatt include 128 bit service entry element */
uint16_t start_hdl; /*!< Gatt start handle value of included 128 bit service */
uint16_t end_hdl; /*!< Gatt end handle value of included 128 bit service */
} esp_gatts_incl128_svc_desc_t; /*!< Gatt include 128 bit service entry element */
/// Gatt attribute value
/// Gatt attribute value
typedef struct {
uint8_t value[ESP_GATT_MAX_ATTR_LEN]; /*!< Gatt attribute value */
uint16_t handle; /*!< Gatt attribute handle */
@@ -427,8 +426,8 @@ typedef struct {
/**
* @brief service element
*/
typedef struct {
bool is_primary; /*!< The service flag, true if the service is primary service, else is secondary service */
typedef struct {
bool is_primary; /*!< The service flag, true if the service is primary service, else is secondly service */
uint16_t start_handle; /*!< The start handle of the service */
uint16_t end_handle; /*!< The end handle of the service */
esp_bt_uuid_t uuid; /*!< The uuid of the service */
@@ -459,7 +458,7 @@ typedef struct {
uint16_t incl_srvc_s_handle; /*!< The start handle of the service which has been included */
uint16_t incl_srvc_e_handle; /*!< The end handle of the service which has been included */
esp_bt_uuid_t uuid; /*!< The include service uuid */
} esp_gattc_incl_svc_elem_t; /*!< The gattc inclue service element */
} esp_gattc_incl_svc_elem_t; /*!< The gattc include service element */
#ifdef __cplusplus

View File

@@ -115,9 +115,10 @@ typedef union {
* @brief ESP_GATTC_SEARCH_CMPL_EVT
*/
struct gattc_search_cmpl_evt_param {
esp_gatt_status_t status; /*!< Operation status */
uint16_t conn_id; /*!< Connection id */
} search_cmpl; /*!< Gatt client callback param of ESP_GATTC_SEARCH_CMPL_EVT */
esp_gatt_status_t status; /*!< Operation status */
uint16_t conn_id; /*!< Connection id */
esp_service_source_t searched_service_source; /*!< The source of the service information */
} search_cmpl; /*!< Gatt client callback param of ESP_GATTC_SEARCH_CMPL_EVT */
/**
* @brief ESP_GATTC_SEARCH_RES_EVT
@@ -312,7 +313,7 @@ esp_err_t esp_ble_gattc_open(esp_gatt_if_t gattc_if, esp_bd_addr_t remote_bda, e
/**
* @brief Close a virtual connection to a GATT server. gattc maybe have multiple virtual GATT server connections when multiple app_id registed,
* @brief Close the virtual connection to the GATT server. gattc may have multiple virtual GATT server connections when multiple app_id registered,
* this API only close one virtual GATT server connection. if there exist other virtual GATT server connections,
* it does not disconnect the physical connection.
* if you want to disconnect the physical connection directly, you can use esp_ble_gap_disconnect(esp_bd_addr_t remote_device).
@@ -346,7 +347,8 @@ esp_err_t esp_ble_gattc_send_mtu_req (esp_gatt_if_t gattc_if, uint16_t conn_id);
/**
* @brief This function is called to request a GATT service discovery
* @brief This function is called to get service from local cache.
* If it does not exist, request a GATT service discovery
* on a GATT server. This function report service search result
* by a callback event, and followed by a service search complete
* event.
@@ -371,7 +373,7 @@ esp_err_t esp_ble_gattc_search_service(esp_gatt_if_t gattc_if, uint16_t conn_id,
* @param[in] gattc_if: Gatt client access interface.
* @param[in] conn_id: connection ID which identify the server.
* @param[in] svc_uuid: the pointer to the service uuid.
* @param[out] result: The pointer to the service whith has been found in the gattc cache.
* @param[out] result: The pointer to the service which has been found in the gattc cache.
* @param[inout] count: input the number of service want to find,
* it will output the number of service has been found in the gattc cache with the given service uuid.
* @param[in] offset: Offset of the service position to get.
@@ -392,7 +394,7 @@ esp_gatt_status_t esp_ble_gattc_get_service(esp_gatt_if_t gattc_if, uint16_t con
* @param[in] conn_id: connection ID which identify the server.
* @param[in] start_handle: the attribute start handle.
* @param[in] end_handle: the attribute end handle
* @param[out] result: The pointer to the charateristic in the service.
* @param[out] result: The pointer to the characteristic in the service.
* @param[inout] count: input the number of characteristic want to find,
* it will output the number of characteristic has been found in the gattc cache with the given service.
* @param[in] offset: Offset of the characteristic position to get.
@@ -695,7 +697,7 @@ esp_err_t esp_ble_gattc_write_char_descr (esp_gatt_if_t gattc_if,
*
* @param[in] gattc_if: Gatt client access interface.
* @param[in] conn_id : connection ID.
* @param[in] handle : charateristic handle to prepare write.
* @param[in] handle : characteristic handle to prepare write.
* @param[in] offset : offset of the write value.
* @param[in] value_len: length of the value to be written.
* @param[in] value : the value to be written.
@@ -720,7 +722,7 @@ esp_err_t esp_ble_gattc_prepare_write(esp_gatt_if_t gattc_if,
*
* @param[in] gattc_if: Gatt client access interface.
* @param[in] conn_id : connection ID.
* @param[in] handle : characteristic descriptor hanlde to prepare write.
* @param[in] handle : characteristic descriptor handle to prepare write.
* @param[in] offset : offset of the write value.
* @param[in] value_len: length of the value to be written.
* @param[in] value : the value to be written.

View File

@@ -25,31 +25,32 @@ extern "C" {
/// GATT Server callback function events
typedef enum {
ESP_GATTS_REG_EVT = 0, /*!< When register application id, the event comes */
ESP_GATTS_READ_EVT = 1, /*!< When gatt client request read operation, the event comes */
ESP_GATTS_WRITE_EVT = 2, /*!< When gatt client request write operation, the event comes */
ESP_GATTS_EXEC_WRITE_EVT = 3, /*!< When gatt client request execute write, the event comes */
ESP_GATTS_MTU_EVT = 4, /*!< When set mtu complete, the event comes */
ESP_GATTS_CONF_EVT = 5, /*!< When receive confirm, the event comes */
ESP_GATTS_UNREG_EVT = 6, /*!< When unregister application id, the event comes */
ESP_GATTS_CREATE_EVT = 7, /*!< When create service complete, the event comes */
ESP_GATTS_ADD_INCL_SRVC_EVT = 8, /*!< When add included service complete, the event comes */
ESP_GATTS_ADD_CHAR_EVT = 9, /*!< When add characteristic complete, the event comes */
ESP_GATTS_ADD_CHAR_DESCR_EVT = 10, /*!< When add descriptor complete, the event comes */
ESP_GATTS_DELETE_EVT = 11, /*!< When delete service complete, the event comes */
ESP_GATTS_START_EVT = 12, /*!< When start service complete, the event comes */
ESP_GATTS_STOP_EVT = 13, /*!< When stop service complete, the event comes */
ESP_GATTS_CONNECT_EVT = 14, /*!< When gatt client connect, the event comes */
ESP_GATTS_DISCONNECT_EVT = 15, /*!< When gatt client disconnect, the event comes */
ESP_GATTS_OPEN_EVT = 16, /*!< When connect to peer, the event comes */
ESP_GATTS_CANCEL_OPEN_EVT = 17, /*!< When disconnect from peer, the event comes */
ESP_GATTS_CLOSE_EVT = 18, /*!< When gatt server close, the event comes */
ESP_GATTS_LISTEN_EVT = 19, /*!< When gatt listen to be connected the event comes */
ESP_GATTS_CONGEST_EVT = 20, /*!< When congest happen, the event comes */
ESP_GATTS_REG_EVT = 0, /*!< When register application id, the event comes */
ESP_GATTS_READ_EVT = 1, /*!< When gatt client request read operation, the event comes */
ESP_GATTS_WRITE_EVT = 2, /*!< When gatt client request write operation, the event comes */
ESP_GATTS_EXEC_WRITE_EVT = 3, /*!< When gatt client request execute write, the event comes */
ESP_GATTS_MTU_EVT = 4, /*!< When set mtu complete, the event comes */
ESP_GATTS_CONF_EVT = 5, /*!< When receive confirm, the event comes */
ESP_GATTS_UNREG_EVT = 6, /*!< When unregister application id, the event comes */
ESP_GATTS_CREATE_EVT = 7, /*!< When create service complete, the event comes */
ESP_GATTS_ADD_INCL_SRVC_EVT = 8, /*!< When add included service complete, the event comes */
ESP_GATTS_ADD_CHAR_EVT = 9, /*!< When add characteristic complete, the event comes */
ESP_GATTS_ADD_CHAR_DESCR_EVT = 10, /*!< When add descriptor complete, the event comes */
ESP_GATTS_DELETE_EVT = 11, /*!< When delete service complete, the event comes */
ESP_GATTS_START_EVT = 12, /*!< When start service complete, the event comes */
ESP_GATTS_STOP_EVT = 13, /*!< When stop service complete, the event comes */
ESP_GATTS_CONNECT_EVT = 14, /*!< When gatt client connect, the event comes */
ESP_GATTS_DISCONNECT_EVT = 15, /*!< When gatt client disconnect, the event comes */
ESP_GATTS_OPEN_EVT = 16, /*!< When connect to peer, the event comes */
ESP_GATTS_CANCEL_OPEN_EVT = 17, /*!< When disconnect from peer, the event comes */
ESP_GATTS_CLOSE_EVT = 18, /*!< When gatt server close, the event comes */
ESP_GATTS_LISTEN_EVT = 19, /*!< When gatt listen to be connected the event comes */
ESP_GATTS_CONGEST_EVT = 20, /*!< When congest happen, the event comes */
/* following is extra event */
ESP_GATTS_RESPONSE_EVT = 21, /*!< When gatt send response complete, the event comes */
ESP_GATTS_CREAT_ATTR_TAB_EVT = 22,
ESP_GATTS_SET_ATTR_VAL_EVT = 23,
ESP_GATTS_RESPONSE_EVT = 21, /*!< When gatt send response complete, the event comes */
ESP_GATTS_CREAT_ATTR_TAB_EVT = 22, /*!< When gatt create table complete, the event comes */
ESP_GATTS_SET_ATTR_VAL_EVT = 23, /*!< When gatt set attr value complete, the event comes */
ESP_GATTS_SEND_SERVICE_CHANGE_EVT = 24, /*!< When gatt send service change indication complete, the event comes */
} esp_gatts_cb_event_t;
/**
@@ -119,6 +120,7 @@ typedef union {
struct gatts_conf_evt_param {
esp_gatt_status_t status; /*!< Operation status */
uint16_t conn_id; /*!< Connection id */
uint16_t handle; /*!< attribute handle */
uint16_t len; /*!< The indication or notification value length, len is valid when send notification or indication failed */
uint8_t *value; /*!< The indication or notification value , value is valid when send notification or indication failed */
} conf; /*!< Gatt server callback param of ESP_GATTS_CONF_EVT (confirm) */
@@ -267,6 +269,13 @@ typedef union {
esp_gatt_status_t status; /*!< Operation status*/
} set_attr_val; /*!< Gatt server callback param of ESP_GATTS_SET_ATTR_VAL_EVT */
/**
* @brief ESP_GATTS_SEND_SERVICE_CHANGE_EVT
*/
struct gatts_send_service_change_evt_param{
esp_gatt_status_t status; /*!< Operation status*/
} service_change; /*!< Gatt server callback param of ESP_GATTS_SEND_SERVICE_CHANGE_EVT */
} esp_ble_gatts_cb_param_t;
/**
@@ -550,6 +559,22 @@ esp_err_t esp_ble_gatts_open(esp_gatt_if_t gatts_if, esp_bd_addr_t remote_bda, b
*/
esp_err_t esp_ble_gatts_close(esp_gatt_if_t gatts_if, uint16_t conn_id);
/**
* @brief Send service change indication
*
* @param[in] gatts_if: GATT server access interface
* @param[in] remote_bda: remote device bluetooth device address.
* If remote_bda is NULL then it will send service change
* indication to all the connected devices and if not then
* to a specific device
*
* @return
* - ESP_OK : success
* - other : failed
*
*/
esp_err_t esp_ble_gatts_send_service_change_indication(esp_gatt_if_t gatts_if, esp_bd_addr_t remote_bda);
#ifdef __cplusplus
}
#endif

View File

@@ -40,7 +40,7 @@ typedef enum {
ESP_HF_CLIENT_AUDIO_STATE_DISCONNECTED = 0, /*!< audio connection released */
ESP_HF_CLIENT_AUDIO_STATE_CONNECTING, /*!< audio connection has been initiated */
ESP_HF_CLIENT_AUDIO_STATE_CONNECTED, /*!< audio connection is established */
ESP_HF_CLIENT_AUDIO_STATE_CONNECTED_MSBC, /*!< mSBC audio connection is estalibshed */
ESP_HF_CLIENT_AUDIO_STATE_CONNECTED_MSBC, /*!< mSBC audio connection is established */
} esp_hf_client_audio_state_t;
/// in-band ring tone state
@@ -66,9 +66,9 @@ typedef enum {
#define ESP_HF_CLIENT_CHLD_FEAT_REL_ACC 0x02 /* 1 Release active calls and accept other waiting or held call */
#define ESP_HF_CLIENT_CHLD_FEAT_REL_X 0x04 /* 1x Release specified active call only */
#define ESP_HF_CLIENT_CHLD_FEAT_HOLD_ACC 0x08 /* 2 Active calls on hold and accept other waiting or held call */
#define ESP_HF_CLIENT_CHLD_FEAT_PRIV_X 0x10 /* 2x Request private mode with specified call(put the rest on hold */
#define ESP_HF_CLIENT_CHLD_FEAT_PRIV_X 0x10 /* 2x Request private mode with specified call(put the rest on hold) */
#define ESP_HF_CLIENT_CHLD_FEAT_MERGE 0x20 /* 3 Add held call to multiparty */
#define ESP_HF_CLIENT_CHLD_FEAT_MERGE_DETACH 0x40 /* 4 Connect two calls and leave(disconnct from multiparty */
#define ESP_HF_CLIENT_CHLD_FEAT_MERGE_DETACH 0x40 /* 4 Connect two calls and leave(disconnect from multiparty) */
/// HF CLIENT callback events
typedef enum {
@@ -140,7 +140,7 @@ typedef union {
* @brief ESP_HF_CLIENT_CIND_SIGNAL_STRENGTH_EVT
*/
struct hf_client_signal_strength_ind_param {
int value; /*!< singal strength value, ranges from 0 to 5 */
int value; /*!< signal strength value, ranges from 0 to 5 */
} signal_strength; /*!< HF callback param of ESP_HF_CLIENT_CIND_SIGNAL_STRENGTH_EVT */
/**
@@ -175,7 +175,7 @@ typedef union {
* @brief ESP_HF_CLIENT_CIND_CALL_HELD_EVT
*/
struct hf_client_call_held_ind_param {
esp_hf_call_held_status_t status; /*!< bluetooth proprietary call hold status indocator */
esp_hf_call_held_status_t status; /*!< bluetooth proprietary call hold status indicator */
} call_held; /*!< HF callback param of ESP_HF_CLIENT_CIND_CALL_HELD_EVT */
/**
@@ -251,9 +251,9 @@ typedef union {
} esp_hf_client_cb_param_t;
/**
* @brief HFP client incoming data callback function, the callback is useful in case of
* @brief HFP client incoming data callback function, the callback is useful in case of
* Voice Over HCI.
* @param[in] buf : pointer to incoming data(payload of HCI synchronous data packet), the
* @param[in] buf : pointer to incoming data(payload of HCI synchronous data packet), the
* buffer is allocated inside bluetooth protocol stack and will be released after
* invoke of the callback is finished.
* @param[in] len : size(in bytes) in buf
@@ -261,13 +261,13 @@ typedef union {
typedef void (* esp_hf_client_incoming_data_cb_t)(const uint8_t *buf, uint32_t len);
/**
* @brief HFP client outgoing data callback function, the callback is useful in case of
* Voice Over HCI. Once audio connection is set up and the application layer has
* prepared data to send, the lower layer will call this function to read data
* @brief HFP client outgoing data callback function, the callback is useful in case of
* Voice Over HCI. Once audio connection is set up and the application layer has
* prepared data to send, the lower layer will call this function to read data
* and then send. This callback is supposed to be implemented as non-blocking,
* and if data is not enough, return value 0 is supposed.
*
* @param[in] buf : pointer to incoming data(payload of HCI synchronous data packet), the
*
* @param[in] buf : pointer to incoming data(payload of HCI synchronous data packet), the
* buffer is allocated inside bluetooth protocol stack and will be released after
* invoke of the callback is finished.
* @param[in] len : size(in bytes) in buf
@@ -326,7 +326,7 @@ esp_err_t esp_hf_client_deinit(void);
/**
*
* @brief Connect to remote bluetooth HFP audio gateway(AG) device, must after esp_hf_client_init()
* @brief Connect to remote bluetooth HFP audio gateway(AG) device, must after esp_a2d_hf_client_init()
*
* @param[in] remote_bda: remote bluetooth device address
*
@@ -606,7 +606,7 @@ void esp_hf_client_outgoing_data_ready(void);
/**
* @brief Initialize the down sampling converter. This is a utility function that can
* only be used in the case that Voice Over HCI is enabled.
* only be used in the case that Voice Over HCI is enabled.
*
* @param[in] src_sps: original samples per second(source audio data, i.e. 48000, 32000,
* 16000, 44100, 22050, 11025)
@@ -619,7 +619,7 @@ void esp_hf_client_pcm_resample_init(uint32_t src_sps, uint32_t bits, uint32_t c
* @brief Down sampling utility to convert high sampling rate into 8K/16bits 1-channel mode PCM
* samples. This can only be used in the case that Voice Over HCI is enabled.
*
* @param[in] src: pointer to the buffer where the original smapling PCM are stored
* @param[in] src: pointer to the buffer where the original sampling PCM are stored
* @param[in] in_bytes: length of the input PCM sample buffer in byte
* @param[in] dst: pointer to the buffer which is to be used to store the converted PCM samples
*

View File

@@ -120,7 +120,7 @@ typedef enum {
/// response indication codes for AT commands
typedef enum {
ESP_HF_AT_RESPONSE_CODE_OK = 0, /*!< acknoweledges execution of a command line */
ESP_HF_AT_RESPONSE_CODE_OK = 0, /*!< acknowledges execution of a command line */
ESP_HF_AT_RESPONSE_CODE_ERR, /*!< command not accepted */
ESP_HF_AT_RESPONSE_CODE_NO_CARRIER, /*!< connection terminated */
ESP_HF_AT_RESPONSE_CODE_BUSY, /*!< busy signal detected */

View File

@@ -30,7 +30,7 @@ typedef enum {
ESP_SPP_NO_RESOURCE /*!< No more set pm control block */
} esp_spp_status_t;
/* Security Setting Mask, Suggest to use ESP_SPP_SEC_NONE, ESP_SPP_SEC_AUTHORIZE or ESP_SPP_SEC_AUTHENTICATE only.*/
/* Security Setting Mask */
#define ESP_SPP_SEC_NONE 0x0000 /*!< No security. relate to BTA_SEC_NONE in bta/bta_api.h */
#define ESP_SPP_SEC_AUTHORIZE 0x0001 /*!< Authorization required (only needed for out going connection ) relate to BTA_SEC_AUTHORIZE in bta/bta_api.h*/
#define ESP_SPP_SEC_AUTHENTICATE 0x0012 /*!< Authentication required. relate to BTA_SEC_AUTHENTICATE in bta/bta_api.h*/
@@ -62,9 +62,9 @@ typedef enum {
ESP_SPP_CLOSE_EVT = 27, /*!< When SPP connection closed, the event comes */
ESP_SPP_START_EVT = 28, /*!< When SPP server started, the event comes */
ESP_SPP_CL_INIT_EVT = 29, /*!< When SPP client initiated a connection, the event comes */
ESP_SPP_DATA_IND_EVT = 30, /*!< When SPP connection received data, the event comes, olny for ESP_SPP_MODE_CB */
ESP_SPP_CONG_EVT = 31, /*!< When SPP connection congestion status changed, the event comes, olny for ESP_SPP_MODE_CB */
ESP_SPP_WRITE_EVT = 33, /*!< When SPP write operation completes, the event comes, olny for ESP_SPP_MODE_CB */
ESP_SPP_DATA_IND_EVT = 30, /*!< When SPP connection received data, the event comes, only for ESP_SPP_MODE_CB */
ESP_SPP_CONG_EVT = 31, /*!< When SPP connection congestion status changed, the event comes, only for ESP_SPP_MODE_CB */
ESP_SPP_WRITE_EVT = 33, /*!< When SPP write operation completes, the event comes, only for ESP_SPP_MODE_CB */
ESP_SPP_SRV_OPEN_EVT = 34, /*!< When SPP Server connection open, the event comes */
} esp_spp_cb_event_t;
@@ -95,7 +95,7 @@ typedef union {
struct spp_open_evt_param {
esp_spp_status_t status; /*!< status */
uint32_t handle; /*!< The connection handle */
int fd; /*!< The file descriptor olny for ESP_SPP_MODE_VFS*/
int fd; /*!< The file descriptor only for ESP_SPP_MODE_VFS */
esp_bd_addr_t rem_bda; /*!< The peer address */
} open; /*!< SPP callback param of ESP_SPP_OPEN_EVT */
@@ -106,7 +106,7 @@ typedef union {
esp_spp_status_t status; /*!< status */
uint32_t handle; /*!< The connection handle */
uint32_t new_listen_handle; /*!< The new listen handle */
int fd; /*!< The file descriptor olny for ESP_SPP_MODE_VFS*/
int fd; /*!< The file descriptor only for ESP_SPP_MODE_VFS */
esp_bd_addr_t rem_bda; /*!< The peer address */
} srv_open; /*!< SPP callback param of ESP_SPP_SRV_OPEN_EVT */
/**
@@ -155,7 +155,7 @@ typedef union {
esp_spp_status_t status; /*!< status */
uint32_t handle; /*!< The connection handle */
uint16_t len; /*!< The length of data */
uint8_t *data; /*!< The data recived */
uint8_t *data; /*!< The data received */
} data_ind; /*!< SPP callback param of ESP_SPP_DATA_IND_EVT */
/**
@@ -190,7 +190,8 @@ esp_err_t esp_spp_register_callback(esp_spp_cb_t callback);
/**
* @brief This function is called to init SPP.
*
* @param[in] mode: Choose the mode of SPP, ESP_SPP_MODE_CB or ESP_SPP_MODE_VFS.
* @param[in] mode: Choose the mode of SPP, ESP_SPP_MODE_CB or ESP_SPP_MODE_CB.
* Now only supports ESP_SPP_MODE_CB mode, we will continue to update.
*
* @return
* - ESP_OK: success
@@ -223,13 +224,13 @@ esp_err_t esp_spp_deinit();
esp_err_t esp_spp_start_discovery(esp_bd_addr_t bd_addr);
/**
* @brief This function makes an SPP conection to a remote BD Address.
* @brief This function makes an SPP connection to a remote BD Address.
* When the connection is initiated or failed to initiate,
* the callback is called with ESP_SPP_CL_INIT_EVT.
* When the connection is established or failed,
* the callback is called with ESP_SPP_OPEN_EVT.
*
* @param[in] sec_mask: Security Setting Mask. Suggest to use ESP_SPP_SEC_NONE, ESP_SPP_SEC_AUTHORIZE or ESP_SPP_SEC_AUTHENTICATE only.
* @param[in] sec_mask: Security Setting Mask .
* @param[in] role: Master or slave.
* @param[in] remote_scn: Remote device bluetooth device SCN.
* @param[in] peer_bd_addr: Remote device bluetooth device address.
@@ -260,7 +261,7 @@ esp_err_t esp_spp_disconnect(uint32_t handle);
* When the connection is established, the callback is called
* with ESP_SPP_SRV_OPEN_EVT.
*
* @param[in] sec_mask: Security Setting Mask. Security Setting Mask. Suggest to use ESP_SPP_SEC_NONE, ESP_SPP_SEC_AUTHORIZE or ESP_SPP_SEC_AUTHENTICATE only.
* @param[in] sec_mask: Security Setting Mask .
* @param[in] role: Master or slave.
* @param[in] local_scn: The specific channel you want to get.
* If channel is 0, means get any channel.
@@ -275,7 +276,7 @@ esp_err_t esp_spp_start_srv(esp_spp_sec_t sec_mask,
/**
* @brief This function is used to write data, olny for ESP_SPP_MODE_CB.
* @brief This function is used to write data, only for ESP_SPP_MODE_CB.
*
* @param[in] handle: The connection handle.
* @param[in] len: The length of the data written.
@@ -301,4 +302,4 @@ esp_err_t esp_spp_vfs_register(void);
}
#endif
#endif ///__ESP_SPP_API_H__
#endif ///__ESP_SPP_API_H__

View File

@@ -1293,10 +1293,9 @@ void bta_av_setconfig_rsp (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
/* if SBC is used by the SNK as INT, discover req is not sent in bta_av_config_ind.
* call disc_res now */
/* this is called in A2DP SRC path only, In case of SINK we don't need it */
if (local_sep == AVDT_TSEP_SRC) {
if (local_sep == AVDT_TSEP_SRC)
p_scb->p_cos->disc_res(p_scb->hndl, num, num, 0, p_scb->peer_addr,
UUID_SERVCLASS_AUDIO_SOURCE);
}
} else {
/* we do not know the peer device and it is using non-SBC codec
* we need to know all the SEPs on SNK */

View File

@@ -829,11 +829,10 @@ void bta_av_rc_msg(tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data)
if (p_data->rc_msg.msg.pass.op_id == AVRC_ID_VENDOR) {
p_data->rc_msg.msg.hdr.ctype = BTA_AV_RSP_NOT_IMPL;
#if (AVRC_METADATA_INCLUDED == TRUE)
if (p_cb->features & BTA_AV_FEAT_METADATA) {
if (p_cb->features & BTA_AV_FEAT_METADATA)
p_data->rc_msg.msg.hdr.ctype =
bta_av_group_navi_supported(p_data->rc_msg.msg.pass.pass_len,
p_data->rc_msg.msg.pass.p_pass_data, is_inquiry);
}
#endif
} else {
p_data->rc_msg.msg.hdr.ctype = bta_av_op_supported(p_data->rc_msg.msg.pass.op_id, is_inquiry);
@@ -891,9 +890,7 @@ void bta_av_rc_msg(tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data)
evt = bta_av_proc_meta_cmd (&rc_rsp, &p_data->rc_msg, &ctype);
} else
#endif
{
evt = BTA_AV_VENDOR_CMD_EVT;
}
}
/* else if configured to support vendor specific and it's a response */
else if ((p_cb->features & BTA_AV_FEAT_VENDOR) &&
@@ -905,9 +902,7 @@ void bta_av_rc_msg(tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data)
evt = BTA_AV_META_MSG_EVT;
} else
#endif
{
evt = BTA_AV_VENDOR_RSP_EVT;
}
}
/* else if not configured to support vendor specific and it's a command */
@@ -1875,8 +1870,14 @@ void bta_av_dereg_comp(tBTA_AV_DATA *p_data)
bta_av_cb.features = 0;
}
/* Clear the Capturing service class bit */
cod.service = BTM_COD_SERVICE_CAPTURING;
/* Clear the Capturing/Rendering service class bit */
if (p_data->api_reg.tsep == AVDT_TSEP_SRC) {
cod.service = BTM_COD_SERVICE_CAPTURING | BTM_COD_SERVICE_AUDIO;
} else {
#if (BTA_AV_SINK_INCLUDED == TRUE)
cod.service = BTM_COD_SERVICE_RENDERING | BTM_COD_SERVICE_AUDIO;
#endif
}
utl_set_device_class(&cod, BTA_UTL_CLR_COD_SERVICE_CLASS);
}
}

View File

@@ -114,7 +114,7 @@ void BTA_AvRegister(tBTA_AV_CHNL chnl, const char *p_service_name, UINT8 app_id,
p_buf->hdr.layer_specific = chnl;
p_buf->hdr.event = BTA_AV_API_REGISTER_EVT;
if (p_service_name) {
BCM_STRNCPY_S(p_buf->p_service_name, p_service_name, BTA_SERVICE_NAME_LEN);
BCM_STRNCPY_S(p_buf->p_service_name, sizeof(p_buf->p_service_name), p_service_name, BTA_SERVICE_NAME_LEN);
p_buf->p_service_name[BTA_SERVICE_NAME_LEN - 1] = 0;
} else {
p_buf->p_service_name[0] = 0;

View File

@@ -40,9 +40,8 @@ const UINT32 bta_av_meta_caps_co_ids[] = {
AVRC_CO_BROADCOM
};
/* AVRCP supported categories */
#define BTA_AV_RC_SNK_SUPF_CT (AVRC_SUPF_CT_CAT1)
#define BTA_AV_RC_SRC_SUPF_CT (AVRC_SUPF_CT_CAT2)
/* AVRCP cupported categories */
#define BTA_AV_RC_SUPF_CT (AVRC_SUPF_CT_CAT2)
/* Added to modify
** 1. flush timeout
@@ -63,11 +62,9 @@ const UINT16 bta_av_audio_flush_to[] = {
/* Note: Android doesnt support AVRC_SUPF_TG_GROUP_NAVI */
/* Note: if AVRC_SUPF_TG_GROUP_NAVI is set, bta_av_cfg.avrc_group should be TRUE */
#if AVRC_METADATA_INCLUDED == TRUE
#define BTA_AV_RC_SNK_SUPF_TG (AVRC_SUPF_TG_CAT2) /* TODO: | AVRC_SUPF_TG_APP_SETTINGS) */
#define BTA_AV_RC_SRC_SUPF_TG (AVRC_SUPF_TG_CAT1) /* TODO: | AVRC_SUPF_TG_APP_SETTINGS) */
#define BTA_AV_RC_SUPF_TG (AVRC_SUPF_TG_CAT1) /* TODO: | AVRC_SUPF_TG_APP_SETTINGS) */
#else
#define BTA_AV_RC_SNK_SUPF_TG (AVRC_SUPF_TG_CAT2)
#define BTA_AV_RC_SRC_SUPF_TG (AVRC_SUPF_TG_CAT1)
#define BTA_AV_RC_SUPF_TG (AVRC_SUPF_TG_CAT1)
#endif
/*
@@ -98,10 +95,8 @@ const tBTA_AV_CFG bta_av_cfg = {
48, /* AVRCP MTU at L2CAP for control channel */
#endif
BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */
BTA_AV_RC_SNK_SUPF_CT, /* AVRCP controller categories as SNK */
BTA_AV_RC_SNK_SUPF_TG, /* AVRCP target categories as SNK */
BTA_AV_RC_SRC_SUPF_CT, /* AVRCP controller categories as SRC */
BTA_AV_RC_SRC_SUPF_TG, /* AVRCP target categories as SRC */
BTA_AV_RC_SUPF_CT, /* AVRCP controller categories */
BTA_AV_RC_SUPF_TG, /* AVRCP target categories */
672, /* AVDTP signaling channel MTU at L2CAP */
BTA_AV_MAX_A2DP_MTU, /* AVDTP audio transport channel MTU at L2CAP */
bta_av_audio_flush_to, /* AVDTP audio transport channel flush timeout */

View File

@@ -483,7 +483,8 @@ static void bta_av_api_sink_enable(tBTA_AV_DATA *p_data)
activate_sink = p_data->hdr.layer_specific;
APPL_TRACE_DEBUG("bta_av_api_sink_enable %d \n", activate_sink)
char p_service_name[BTA_SERVICE_NAME_LEN + 1];
BCM_STRNCPY_S(p_service_name, BTIF_AVK_SERVICE_NAME, BTA_SERVICE_NAME_LEN);
BCM_STRNCPY_S(p_service_name, sizeof(p_service_name),
BTIF_AVK_SERVICE_NAME, BTA_SERVICE_NAME_LEN);
if (activate_sink) {
AVDT_SINK_Activate();
@@ -525,7 +526,7 @@ static void bta_av_api_register(tBTA_AV_DATA *p_data)
tBTA_UTL_COD cod;
UINT8 index = 0;
char p_avk_service_name[BTA_SERVICE_NAME_LEN + 1];
BCM_STRNCPY_S(p_avk_service_name, BTIF_AVK_SERVICE_NAME, BTA_SERVICE_NAME_LEN);
BCM_STRNCPY_S(p_avk_service_name, sizeof(p_avk_service_name), BTIF_AVK_SERVICE_NAME, BTA_SERVICE_NAME_LEN);
memset(&cs, 0, sizeof(tAVDT_CS));
@@ -570,25 +571,25 @@ static void bta_av_api_register(tBTA_AV_DATA *p_data)
bta_ar_reg_avct(p_bta_av_cfg->avrc_mtu, p_bta_av_cfg->avrc_br_mtu,
(UINT8)(bta_av_cb.sec_mask & (~BTA_SEC_AUTHORIZE)), BTA_ID_AV);
#endif
if (p_data->api_reg.tsep == AVDT_TSEP_SRC) {
bta_ar_reg_avrc(UUID_SERVCLASS_AV_REM_CTRL_TARGET, "AV Remote Control Target\n", NULL,
p_bta_av_cfg->avrc_src_tg_cat, BTA_ID_AV);
} else {
bta_ar_reg_avrc(UUID_SERVCLASS_AV_REM_CTRL_TARGET, "AV Remote Control Target\n", NULL,
p_bta_av_cfg->avrc_snk_tg_cat, BTA_ID_AV);
}
bta_ar_reg_avrc(UUID_SERVCLASS_AV_REM_CTRL_TARGET, "AV Remote Control Target\n", NULL,
p_bta_av_cfg->avrc_tg_cat, BTA_ID_AV);
#endif
}
/* Set the Capturing service class bit */
/* Set the Calss of Device (Audio & Capturing/Rendering service class bit) */
if (p_data->api_reg.tsep == AVDT_TSEP_SRC) {
cod.service = BTM_COD_SERVICE_CAPTURING;
cod.service = BTM_COD_SERVICE_CAPTURING | BTM_COD_SERVICE_AUDIO;
cod.major = BTM_COD_MAJOR_AUDIO;
cod.minor = BTM_COD_MINOR_UNCLASSIFIED;
} else {
#if (BTA_AV_SINK_INCLUDED == TRUE)
cod.service = BTM_COD_SERVICE_RENDERING;
cod.service = BTM_COD_SERVICE_RENDERING | BTM_COD_SERVICE_AUDIO;
cod.major = BTM_COD_MAJOR_AUDIO;
cod.minor = BTM_COD_MINOR_LOUDSPEAKER;
#endif
}
utl_set_device_class(&cod, BTA_UTL_SET_COD_SERVICE_CLASS);
utl_set_device_class(&cod, BTA_UTL_SET_COD_ALL);
} /* if 1st channel */
/* get stream configuration and create stream */
@@ -706,13 +707,8 @@ static void bta_av_api_register(tBTA_AV_DATA *p_data)
}
#if( defined BTA_AR_INCLUDED ) && (BTA_AR_INCLUDED == TRUE)
/* create an SDP record as AVRC CT. */
if (p_data->api_reg.tsep == AVDT_TSEP_SRC) {
bta_ar_reg_avrc(UUID_SERVCLASS_AV_REMOTE_CONTROL, "AV Remote Control Controller\n", NULL,
p_bta_av_cfg->avrc_src_ct_cat, BTA_ID_AV);
} else {
bta_ar_reg_avrc(UUID_SERVCLASS_AV_REMOTE_CONTROL, "AV Remote Control Controller\n", NULL,
p_bta_av_cfg->avrc_snk_ct_cat, BTA_ID_AV);
}
bta_ar_reg_avrc(UUID_SERVCLASS_AV_REMOTE_CONTROL, NULL, NULL,
p_bta_av_cfg->avrc_ct_cat, BTA_ID_AV);
#endif
}
}
@@ -1272,7 +1268,7 @@ BOOLEAN bta_av_hdl_event(BT_HDR *p_msg)
** Returns char *
**
*******************************************************************************/
UNUSED_ATTR static char *bta_av_st_code(UINT8 state)
static char *bta_av_st_code(UINT8 state)
{
switch (state) {
case BTA_AV_INIT_ST: return "INIT";

View File

@@ -28,7 +28,6 @@
#include <string.h>
#include "bta/bta_av_co.h"
#include "bta_av_int.h"
#include "osi/osi.h"
/*****************************************************************************
** Constants and types
@@ -565,7 +564,7 @@ void bta_av_set_scb_sst_incoming (tBTA_AV_SCB *p_scb)
** Returns char *
**
*******************************************************************************/
UNUSED_ATTR static char *bta_av_sst_code(UINT8 state)
static char *bta_av_sst_code(UINT8 state)
{
switch (state) {
case BTA_AV_INIT_SST: return "INIT";

View File

@@ -72,9 +72,9 @@ static void bta_dm_bl_change_cback (tBTM_BL_EVENT_DATA *p_data);
static void bta_dm_policy_cback(tBTA_SYS_CONN_STATUS status, UINT8 id, UINT8 app_id, BD_ADDR peer_addr);
/* Extended Inquiry Response */
#if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE && SMP_INCLUDED == TRUE)
#if (BT_SSP_INCLUDED == TRUE && SMP_INCLUDED == TRUE)
static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data);
#endif /* (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE) */
#endif /* (BT_SSP_INCLUDED == TRUE) */
static void bta_dm_set_eir (char *local_name);
#if (SDP_INCLUDED == TRUE)
@@ -127,7 +127,6 @@ static void bta_dm_remove_sec_dev_entry(BD_ADDR remote_bd_addr);
#endif ///SMP_INCLUDED == TRUE
static void bta_dm_observe_results_cb(tBTM_INQ_RESULTS *p_inq, UINT8 *p_eir);
static void bta_dm_observe_cmpl_cb(void *p_result);
static void bta_dm_observe_discard_cb (uint32_t num_dis);
static void bta_dm_delay_role_switch_cback(TIMER_LIST_ENT *p_tle);
extern void sdpu_uuid16_to_uuid128(UINT16 uuid16, UINT8 *p_uuid128);
static void bta_dm_disable_timer_cback(TIMER_LIST_ENT *p_tle);
@@ -219,7 +218,7 @@ const tBTM_APPL_INFO bta_security = {
&bta_dm_new_link_key_cback,
&bta_dm_authentication_complete_cback,
&bta_dm_bond_cancel_complete_cback,
#if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE)
#if (BT_SSP_INCLUDED == TRUE)
&bta_dm_sp_cback,
#else
NULL,
@@ -323,9 +322,6 @@ void bta_dm_deinit_cb(void)
}
#endif
memset(&bta_dm_cb, 0, sizeof(bta_dm_cb));
#if BTA_DYNAMIC_MEMORY
xSemaphoreGive(deinit_semaphore);
#endif /* #if BTA_DYNAMIC_MEMORY */
}
/*******************************************************************************
@@ -639,15 +635,13 @@ void bta_dm_set_visibility(tBTA_DM_MSG *p_data)
/* set modes for Discoverability and connectability if not ignore */
if (p_data->set_visibility.disc_mode != (BTA_DM_IGNORE | BTA_DM_LE_IGNORE)) {
if ((p_data->set_visibility.disc_mode & BTA_DM_LE_IGNORE) == BTA_DM_LE_IGNORE) {
if ((p_data->set_visibility.disc_mode & BTA_DM_LE_IGNORE) == BTA_DM_LE_IGNORE)
p_data->set_visibility.disc_mode =
((p_data->set_visibility.disc_mode & ~BTA_DM_LE_IGNORE) | le_disc_mode);
}
if ((p_data->set_visibility.disc_mode & BTA_DM_IGNORE) == BTA_DM_IGNORE) {
if ((p_data->set_visibility.disc_mode & BTA_DM_IGNORE) == BTA_DM_IGNORE)
p_data->set_visibility.disc_mode =
((p_data->set_visibility.disc_mode & ~BTA_DM_IGNORE) | disc_mode);
}
BTM_SetDiscoverability(p_data->set_visibility.disc_mode,
bta_dm_cb.inquiry_scan_window,
@@ -655,15 +649,13 @@ void bta_dm_set_visibility(tBTA_DM_MSG *p_data)
}
if (p_data->set_visibility.conn_mode != (BTA_DM_IGNORE | BTA_DM_LE_IGNORE)) {
if ((p_data->set_visibility.conn_mode & BTA_DM_LE_IGNORE) == BTA_DM_LE_IGNORE) {
if ((p_data->set_visibility.conn_mode & BTA_DM_LE_IGNORE) == BTA_DM_LE_IGNORE)
p_data->set_visibility.conn_mode =
((p_data->set_visibility.conn_mode & ~BTA_DM_LE_IGNORE) | le_conn_mode);
}
if ((p_data->set_visibility.conn_mode & BTA_DM_IGNORE) == BTA_DM_IGNORE) {
if ((p_data->set_visibility.conn_mode & BTA_DM_IGNORE) == BTA_DM_IGNORE)
p_data->set_visibility.conn_mode =
((p_data->set_visibility.conn_mode & ~BTA_DM_IGNORE) | conn_mode);
}
BTM_SetConnectability(p_data->set_visibility.conn_mode,
bta_dm_cb.page_scan_window,
@@ -1120,6 +1112,28 @@ void bta_dm_confirm(tBTA_DM_MSG *p_data)
}
#endif ///SMP_INCLUDED == TRUE
/*******************************************************************************
**
** Function bta_dm_key_req
**
** Description Send the user passkey request reply in response to a
** request from BTM
**
** Returns void
**
*******************************************************************************/
#if (SMP_INCLUDED == TRUE && BT_SSP_INCLUDED)
void bta_dm_key_req(tBTA_DM_MSG *p_data)
{
tBTM_STATUS res = BTM_NOT_AUTHORIZED;
if (p_data->key_req.accept == TRUE) {
res = BTM_SUCCESS;
}
BTM_PasskeyReqReply(res, p_data->key_req.bd_addr, p_data->key_req.passkey);
}
#endif ///SMP_INCLUDED == TRUE && BT_SSP_INCLUDED
/*******************************************************************************
**
** Function bta_dm_loc_oob
@@ -1650,7 +1664,7 @@ void bta_dm_sdp_result (tBTA_DM_MSG *p_data)
if (SDP_FindServiceUUIDInRec(p_sdp_rec, &service_uuid)) {
/* send result back to app now, one by one */
bdcpy (result.disc_ble_res.bd_addr, bta_dm_search_cb.peer_bdaddr);
BCM_STRNCPY_S((char *)result.disc_ble_res.bd_name, bta_dm_get_remname(), (BD_NAME_LEN));
BCM_STRNCPY_S((char *)result.disc_ble_res.bd_name, sizeof(BD_NAME), bta_dm_get_remname(), (BD_NAME_LEN));
result.disc_ble_res.bd_name[BD_NAME_LEN] = 0;
result.disc_ble_res.service.len = service_uuid.len;
result.disc_ble_res.service.uu.uuid16 = service_uuid.uu.uuid16;
@@ -1791,7 +1805,8 @@ void bta_dm_sdp_result (tBTA_DM_MSG *p_data)
}
bdcpy (p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr);
BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, bta_dm_get_remname(), (BD_NAME_LEN - 1));
BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, sizeof(BD_NAME),
bta_dm_get_remname(), (BD_NAME_LEN - 1));
/* make sure the string is null terminated */
p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN - 1] = 0;
@@ -1817,7 +1832,8 @@ void bta_dm_sdp_result (tBTA_DM_MSG *p_data)
p_msg->disc_result.result.disc_res.result = BTA_FAILURE;
p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found;
bdcpy (p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr);
BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, bta_dm_get_remname(), (BD_NAME_LEN - 1));
BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, sizeof(BD_NAME),
bta_dm_get_remname(), (BD_NAME_LEN - 1));
/* make sure the string is null terminated */
p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN - 1] = 0;
@@ -1869,12 +1885,10 @@ void bta_dm_disc_result (tBTA_DM_MSG *p_data)
#if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE
/* if any BR/EDR service discovery has been done, report the event */
if ((bta_dm_search_cb.services & ((BTA_ALL_SERVICE_MASK | BTA_USER_SERVICE_MASK ) & ~BTA_BLE_SERVICE_MASK))) {
bta_dm_search_cb.p_search_cback(BTA_DM_DISC_RES_EVT, &p_data->disc_result.result);
}
#else
bta_dm_search_cb.p_search_cback(BTA_DM_DISC_RES_EVT, &p_data->disc_result.result);
if ((bta_dm_search_cb.services & ((BTA_ALL_SERVICE_MASK | BTA_USER_SERVICE_MASK ) & ~BTA_BLE_SERVICE_MASK)))
#endif
bta_dm_search_cb.p_search_cback(BTA_DM_DISC_RES_EVT, &p_data->disc_result.result);
tBTA_DM_MSG *p_msg = (tBTA_DM_MSG *) osi_malloc(sizeof(tBTA_DM_MSG));
/* send a message to change state */
@@ -2140,10 +2154,9 @@ static void bta_dm_find_services ( BD_ADDR bd_addr)
}
/* last one? clear the BLE service bit if all discovery has been done */
if (bta_dm_search_cb.uuid_to_search == 0) {
if (bta_dm_search_cb.uuid_to_search == 0)
bta_dm_search_cb.services_to_search &=
(tBTA_SERVICE_MASK)(~(BTA_SERVICE_ID_TO_SERVICE_MASK(bta_dm_search_cb.service_index)));
}
} else
#endif
@@ -2201,7 +2214,8 @@ static void bta_dm_find_services ( BD_ADDR bd_addr)
p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT;
p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found;
bdcpy (p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr);
BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, bta_dm_get_remname(), (BD_NAME_LEN - 1));
BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, sizeof(BD_NAME),
bta_dm_get_remname(), (BD_NAME_LEN - 1));
/* make sure the string is terminated */
p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN - 1] = 0;
@@ -2386,7 +2400,8 @@ static void bta_dm_discover_device(BD_ADDR remote_bd_addr)
p_msg->disc_result.result.disc_res.result = BTA_SUCCESS;
p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found;
bdcpy (p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr);
BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, (char *)bta_dm_search_cb.peer_name, (BD_NAME_LEN - 1));
BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, sizeof(BD_NAME),
(char *)bta_dm_search_cb.peer_name, (BD_NAME_LEN - 1));
/* make sure the string is terminated */
p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN - 1] = 0;
@@ -2530,7 +2545,7 @@ static void bta_dm_service_search_remname_cback (BD_ADDR bd_addr, DEV_CLASS dc,
rem_name.length = (BD_NAME_LEN - 1);
rem_name.remote_bd_name[(BD_NAME_LEN - 1)] = 0;
}
BCM_STRNCPY_S((char *)rem_name.remote_bd_name, (char *)bd_name, (BD_NAME_LEN - 1));
BCM_STRNCPY_S((char *)rem_name.remote_bd_name, sizeof(BD_NAME), (char *)bd_name, (BD_NAME_LEN - 1));
rem_name.status = BTM_SUCCESS;
bta_dm_remname_cback(&rem_name);
@@ -2573,7 +2588,7 @@ static void bta_dm_remname_cback (tBTM_REMOTE_DEV_NAME *p_remote_name)
/* remote name discovery is done but it could be failed */
bta_dm_search_cb.name_discover_done = TRUE;
BCM_STRNCPY_S((char *)bta_dm_search_cb.peer_name,(char *)p_remote_name->remote_bd_name, (BD_NAME_LEN));
BCM_STRNCPY_S((char *)bta_dm_search_cb.peer_name, sizeof(BD_NAME), (char *)p_remote_name->remote_bd_name, (BD_NAME_LEN));
bta_dm_search_cb.peer_name[BD_NAME_LEN] = 0;
BTM_SecDeleteRmtNameNotifyCallback(&bta_dm_service_search_remname_cback);
@@ -2586,7 +2601,7 @@ static void bta_dm_remname_cback (tBTM_REMOTE_DEV_NAME *p_remote_name)
if ((p_msg = (tBTA_DM_REM_NAME *) osi_malloc(sizeof(tBTA_DM_REM_NAME))) != NULL) {
bdcpy (p_msg->result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr);
BCM_STRNCPY_S((char *)p_msg->result.disc_res.bd_name, (char *)p_remote_name->remote_bd_name, (BD_NAME_LEN));
BCM_STRNCPY_S((char *)p_msg->result.disc_res.bd_name, sizeof(BD_NAME), (char *)p_remote_name->remote_bd_name, (BD_NAME_LEN));
/* make sure the string is null terminated */
p_msg->result.disc_res.bd_name[BD_NAME_LEN] = 0;
@@ -2618,7 +2633,7 @@ static UINT8 bta_dm_authorize_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NA
bdcpy(sec_event.authorize.bd_addr, bd_addr);
memcpy(sec_event.authorize.dev_class, dev_class, DEV_CLASS_LEN);
BCM_STRNCPY_S((char *)sec_event.authorize.bd_name, (char *)bd_name, (BD_NAME_LEN - 1));
BCM_STRNCPY_S((char *)sec_event.authorize.bd_name, sizeof(BD_NAME), (char *)bd_name, (BD_NAME_LEN - 1));
/* make sure the string is null terminated */
sec_event.authorize.bd_name[BD_NAME_LEN - 1] = 0;
@@ -2651,7 +2666,9 @@ static UINT8 bta_dm_authorize_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NA
}
}
#if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE)
/*******************************************************************************
**
** Function bta_dm_pinname_cback
@@ -2708,7 +2725,6 @@ static UINT8 bta_dm_authorize_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NA
bta_dm_cb.p_sec_cback(event, &sec_event);
}
}
#endif //(BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE)
/*******************************************************************************
**
@@ -2728,9 +2744,21 @@ static UINT8 bta_dm_pin_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_
return BTM_NOT_AUTHORIZED;
}
/* If the device name is not known, save bdaddr and devclass and initiate a name request */
if (bd_name[0] == 0) {
bta_dm_cb.pin_evt = BTA_DM_PIN_REQ_EVT;
bdcpy(bta_dm_cb.pin_bd_addr, bd_addr);
BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class, dev_class);
if ((BTM_ReadRemoteDeviceName(bd_addr, bta_dm_pinname_cback, BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED) {
return BTM_CMD_STARTED;
}
APPL_TRACE_WARNING(" bta_dm_pin_cback() -> Failed to start Remote Name Request ");
}
bdcpy(sec_event.pin_req.bd_addr, bd_addr);
BTA_COPY_DEVICE_CLASS(sec_event.pin_req.dev_class, dev_class);
BCM_STRNCPY_S((char *)sec_event.pin_req.bd_name, (char *)bd_name, (BD_NAME_LEN - 1));
BCM_STRNCPY_S((char *)sec_event.pin_req.bd_name, sizeof(BD_NAME), (char *)bd_name, (BD_NAME_LEN - 1));
sec_event.pin_req.bd_name[BD_NAME_LEN - 1] = 0;
sec_event.pin_req.min_16_digit = min_16_digit;
@@ -2826,7 +2854,7 @@ static UINT8 bta_dm_authentication_complete_cback(BD_ADDR bd_addr, DEV_CLASS dev
return BTM_SUCCESS;
}
#if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE)
#if (BT_SSP_INCLUDED == TRUE)
/*******************************************************************************
**
** Function bta_dm_sp_cback
@@ -2850,7 +2878,7 @@ static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data)
/* TODO_SP */
switch (event) {
case BTM_SP_IO_REQ_EVT:
#if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE)
#if (BT_SSP_INCLUDED == TRUE)
/* translate auth_req */
bta_dm_co_io_req(p_data->io_req.bd_addr, &p_data->io_req.io_cap,
&p_data->io_req.oob_data, &p_data->io_req.auth_req, p_data->io_req.is_orig);
@@ -2862,7 +2890,7 @@ static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data)
APPL_TRACE_EVENT("io mitm: %d oob_data:%d", p_data->io_req.auth_req, p_data->io_req.oob_data);
break;
case BTM_SP_IO_RSP_EVT:
#if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE)
#if (BT_SSP_INCLUDED == TRUE)
bta_dm_co_io_rsp(p_data->io_rsp.bd_addr, p_data->io_rsp.io_cap,
p_data->io_rsp.oob_data, p_data->io_rsp.auth_req );
#endif
@@ -2877,10 +2905,10 @@ static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data)
sec_event.cfm_req.rmt_io_caps = p_data->cfm_req.rmt_io_caps;
/* continue to next case */
#if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE)
#if (BT_SSP_INCLUDED == TRUE)
/* Passkey entry mode, mobile device with output capability is very
unlikely to receive key request, so skip this event */
/*case BTM_SP_KEY_REQ_EVT: */
case BTM_SP_KEY_REQ_EVT:
case BTM_SP_KEY_NOTIF_EVT:
#endif
if (BTM_SP_CFM_REQ_EVT == event) {
@@ -2900,7 +2928,8 @@ static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data)
copy these values into key_notif from cfm_req */
bdcpy(sec_event.key_notif.bd_addr, p_data->cfm_req.bd_addr);
BTA_COPY_DEVICE_CLASS(sec_event.key_notif.dev_class, p_data->cfm_req.dev_class);
BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name, (char *)p_data->cfm_req.bd_name, (BD_NAME_LEN - 1));
BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name, sizeof(BD_NAME),
(char *)p_data->cfm_req.bd_name, (BD_NAME_LEN - 1));
sec_event.key_notif.bd_name[BD_NAME_LEN - 1] = 0;
}
}
@@ -2921,11 +2950,33 @@ static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data)
} else {
bdcpy(sec_event.key_notif.bd_addr, p_data->key_notif.bd_addr);
BTA_COPY_DEVICE_CLASS(sec_event.key_notif.dev_class, p_data->key_notif.dev_class);
BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name, (char *)p_data->key_notif.bd_name, (BD_NAME_LEN - 1));
BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name, sizeof(BD_NAME),
(char *)p_data->key_notif.bd_name, (BD_NAME_LEN - 1));
sec_event.key_notif.bd_name[BD_NAME_LEN - 1] = 0;
}
}
if (BTM_SP_KEY_REQ_EVT == event) {
pin_evt = BTA_DM_SP_KEY_REQ_EVT;
/* If the device name is not known, save bdaddr and devclass
and initiate a name request with values from key_notif */
if (p_data->key_notif.bd_name[0] == 0) {
bta_dm_cb.pin_evt = pin_evt;
bdcpy(bta_dm_cb.pin_bd_addr, p_data->key_notif.bd_addr);
BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class, p_data->key_notif.dev_class);
if ((BTM_ReadRemoteDeviceName(p_data->key_notif.bd_addr, bta_dm_pinname_cback,
BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED) {
return BTM_CMD_STARTED;
}
APPL_TRACE_WARNING(" bta_dm_sp_cback() -> Failed to start Remote Name Request ");
} else {
bdcpy(sec_event.key_notif.bd_addr, p_data->key_notif.bd_addr);
BTA_COPY_DEVICE_CLASS(sec_event.key_notif.dev_class, p_data->key_notif.dev_class);
BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name, sizeof(BD_NAME),
(char *)p_data->key_notif.bd_name, (BD_NAME_LEN - 1));
sec_event.key_notif.bd_name[BD_NAME_LEN - 1] = 0;
}
}
bta_dm_cb.p_sec_cback(pin_evt, &sec_event);
break;
@@ -2951,7 +3002,7 @@ static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data)
bdcpy(sec_event.rmt_oob.bd_addr, p_data->rmt_oob.bd_addr);
BTA_COPY_DEVICE_CLASS(sec_event.rmt_oob.dev_class, p_data->rmt_oob.dev_class);
BCM_STRNCPY_S((char *)sec_event.rmt_oob.bd_name, (char *)p_data->rmt_oob.bd_name, (BD_NAME_LEN - 1));
BCM_STRNCPY_S((char *)sec_event.rmt_oob.bd_name, sizeof(BD_NAME), (char *)p_data->rmt_oob.bd_name, (BD_NAME_LEN - 1));
sec_event.rmt_oob.bd_name[BD_NAME_LEN - 1] = 0;
bta_dm_cb.p_sec_cback(BTA_DM_SP_RMT_OOB_EVT, &sec_event);
@@ -2979,7 +3030,7 @@ static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data)
APPL_TRACE_EVENT("dm status: %d", status);
return status;
}
#endif /* (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE) */
#endif /* (BT_SSP_INCLUDED == TRUE) */
#endif ///SMP_INCLUDED == TRUE
@@ -3601,11 +3652,11 @@ static char *bta_dm_get_remname(void)
char *p_temp;
/* If the name isn't already stored, try retrieving from BTM */
if (*p_name == '\0') {
if (*p_name == '\0')
if ((p_temp = BTM_SecReadDevName(bta_dm_search_cb.peer_bdaddr)) != NULL) {
p_name = p_temp;
}
}
return p_name;
}
#endif ///SDP_INCLUDED == TRUE || SMP_INCLUDED == TRUE
@@ -4220,28 +4271,6 @@ static void bta_dm_observe_cmpl_cb (void *p_result)
}
}
/*******************************************************************************
**
** Function bta_dm_observe_discard_cb
**
** Description Callback for BLE Observe lost
**
**
** Returns void
**
*******************************************************************************/
static void bta_dm_observe_discard_cb (uint32_t num_dis)
{
tBTA_DM_SEARCH data;
APPL_TRACE_DEBUG("bta_dm_observe_discard_cb");
data.inq_dis.num_dis = num_dis;
if (bta_dm_search_cb.p_scan_cback) {
bta_dm_search_cb.p_scan_cback(BTA_DM_INQ_DISCARD_NUM_EVT, &data);
}
}
#if (SMP_INCLUDED == TRUE)
/*******************************************************************************
**
@@ -4287,7 +4316,8 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D
bdcpy(sec_event.ble_req.bd_addr, bda);
p_name = BTM_SecReadDevName(bda);
if (p_name != NULL) {
BCM_STRNCPY_S((char *)sec_event.ble_req.bd_name, p_name, (BD_NAME_LEN));
BCM_STRNCPY_S((char *)sec_event.ble_req.bd_name,
sizeof(BD_NAME), p_name, (BD_NAME_LEN));
} else {
sec_event.ble_req.bd_name[0] = 0;
}
@@ -4299,7 +4329,8 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D
bdcpy(sec_event.key_notif.bd_addr, bda);
p_name = BTM_SecReadDevName(bda);
if (p_name != NULL) {
BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name, p_name, (BD_NAME_LEN));
BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name,
sizeof(BD_NAME), p_name, (BD_NAME_LEN));
} else {
sec_event.key_notif.bd_name[0] = 0;
}
@@ -4320,7 +4351,7 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D
case BTM_LE_NC_REQ_EVT:
bdcpy(sec_event.key_notif.bd_addr, bda);
BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name, bta_dm_get_remname(), (BD_NAME_LEN));
BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name, sizeof(BD_NAME), bta_dm_get_remname(), (BD_NAME_LEN));
sec_event.ble_req.bd_name[BD_NAME_LEN] = 0;
sec_event.key_notif.passkey = p_data->key_notif;
bta_dm_cb.p_sec_cback(BTA_DM_BLE_NC_REQ_EVT, &sec_event);
@@ -4340,7 +4371,8 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D
#endif
p_name = BTM_SecReadDevName(bda);
if (p_name != NULL) {
BCM_STRNCPY_S((char *)sec_event.auth_cmpl.bd_name, p_name, (BD_NAME_LEN));
BCM_STRNCPY_S((char *)sec_event.auth_cmpl.bd_name,
sizeof(BD_NAME), p_name, (BD_NAME_LEN));
} else {
sec_event.auth_cmpl.bd_name[0] = 0;
}
@@ -4443,8 +4475,7 @@ void bta_dm_add_ble_device (tBTA_DM_MSG *p_data)
{
if (!BTM_SecAddBleDevice (p_data->add_ble_device.bd_addr, NULL,
p_data->add_ble_device.dev_type ,
p_data->add_ble_device.addr_type,
p_data->add_ble_device.auth_mode)) {
p_data->add_ble_device.addr_type)) {
APPL_TRACE_ERROR ("BTA_DM: Error adding BLE Device for device %08x%04x",
(p_data->add_ble_device.bd_addr[0] << 24) + (p_data->add_ble_device.bd_addr[1] << 16) + \
(p_data->add_ble_device.bd_addr[2] << 8) + p_data->add_ble_device.bd_addr[3],
@@ -4770,7 +4801,7 @@ void bta_dm_ble_scan (tBTA_DM_MSG *p_data)
bta_dm_search_cb.p_scan_cback = p_data->ble_scan.p_cback;
if ((status = BTM_BleScan(TRUE, p_data->ble_scan.duration,
bta_dm_observe_results_cb, bta_dm_observe_cmpl_cb, bta_dm_observe_discard_cb)) != BTM_CMD_STARTED) {
bta_dm_observe_results_cb, bta_dm_observe_cmpl_cb)) != BTM_CMD_STARTED) {
APPL_TRACE_WARNING(" %s start scan failed. status=0x%x\n", __FUNCTION__, status);
}
@@ -4780,7 +4811,7 @@ void bta_dm_ble_scan (tBTA_DM_MSG *p_data)
}
} else {
bta_dm_search_cb.p_scan_cback = NULL;
status = BTM_BleScan(FALSE, 0, NULL, NULL, NULL);
status = BTM_BleScan(FALSE, 0, NULL, NULL);
if (status != BTM_CMD_STARTED){
APPL_TRACE_WARNING(" %s stop scan failed, status=0x%x\n", __FUNCTION__, status);
@@ -5123,10 +5154,9 @@ void bta_dm_ble_setup_storage (tBTA_DM_MSG *p_data)
p_data->ble_set_storage.ref_value);
}
if (BTM_CMD_STARTED != btm_status) {
if (BTM_CMD_STARTED != btm_status)
bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_CFG_STRG_EVT, p_data->ble_set_storage.ref_value,
btm_status);
}
}
/*******************************************************************************
@@ -5154,10 +5184,9 @@ void bta_dm_ble_enable_batch_scan (tBTA_DM_MSG *p_data)
p_data->ble_enable_scan.ref_value);
}
if (BTM_CMD_STARTED != btm_status) {
if (BTM_CMD_STARTED != btm_status)
bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_ENABLE_EVT, p_data->ble_enable_scan.ref_value,
btm_status);
}
}
/*******************************************************************************
@@ -5181,10 +5210,9 @@ void bta_dm_ble_disable_batch_scan (tBTA_DM_MSG *p_data)
btm_status = BTM_BleDisableBatchScan(p_data->ble_disable_scan.ref_value);
}
if (BTM_CMD_STARTED != btm_status) {
if (BTM_CMD_STARTED != btm_status)
bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_DISABLE_EVT, p_data->ble_enable_scan.ref_value,
btm_status);
}
}
/*******************************************************************************
@@ -5208,10 +5236,9 @@ void bta_dm_ble_read_scan_reports(tBTA_DM_MSG *p_data)
p_data->ble_read_reports.ref_value);
}
if (BTM_CMD_STARTED != btm_status) {
if (BTM_CMD_STARTED != btm_status)
bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_READ_REPTS_EVT, p_data->ble_enable_scan.ref_value,
btm_status);
}
}
/*******************************************************************************
@@ -5341,11 +5368,10 @@ void bta_dm_cfg_filter_cond (tBTA_DM_MSG *p_data)
}
}
if (p_data->ble_cfg_filter_cond.p_filt_cfg_cback) {
if (p_data->ble_cfg_filter_cond.p_filt_cfg_cback)
p_data->ble_cfg_filter_cond.p_filt_cfg_cback(BTA_DM_BLE_PF_CONFIG_EVT,
p_data->ble_cfg_filter_cond.cond_type, 0, status,
p_data->ble_cfg_filter_cond.ref_value);
}
return;
}
@@ -5376,10 +5402,9 @@ void bta_dm_enable_scan_filter(tBTA_DM_MSG *p_data)
return;
}
if (p_data->ble_enable_scan_filt.p_filt_status_cback) {
if (p_data->ble_enable_scan_filt.p_filt_status_cback)
p_data->ble_enable_scan_filt.p_filt_status_cback (BTA_DM_BLE_PF_ENABLE_EVT,
p_data->ble_enable_scan_filt.ref_value, status);
}
}
@@ -5413,10 +5438,9 @@ void bta_dm_scan_filter_param_setup (tBTA_DM_MSG *p_data)
}
}
if (p_data->ble_scan_filt_param_setup.p_filt_param_cback) {
if (p_data->ble_scan_filt_param_setup.p_filt_param_cback)
p_data->ble_scan_filt_param_setup.p_filt_param_cback (BTA_DM_BLE_PF_ENABLE_EVT, 0,
p_data->ble_scan_filt_param_setup.ref_value, status);
}
return;
}
@@ -5559,7 +5583,7 @@ static void bta_dm_gatt_disc_result(tBTA_GATT_ID service_id)
/* send result back to app now, one by one */
bdcpy (result.disc_ble_res.bd_addr, bta_dm_search_cb.peer_bdaddr);
BCM_STRNCPY_S((char *)result.disc_ble_res.bd_name,bta_dm_get_remname(), (BD_NAME_LEN - 1));
BCM_STRNCPY_S((char *)result.disc_ble_res.bd_name, sizeof(BD_NAME), bta_dm_get_remname(), (BD_NAME_LEN - 1));
result.disc_ble_res.bd_name[BD_NAME_LEN] = 0;
memcpy(&result.disc_ble_res.service, &service_id.uuid, sizeof(tBT_UUID));
@@ -5601,7 +5625,8 @@ static void bta_dm_gatt_disc_complete(UINT16 conn_id, tBTA_GATT_STATUS status)
p_msg->disc_result.result.disc_res.num_uuids = 0;
p_msg->disc_result.result.disc_res.p_uuid_list = NULL;
bdcpy (p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr);
BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, bta_dm_get_remname(), (BD_NAME_LEN - 1));
BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, sizeof(BD_NAME),
bta_dm_get_remname(), (BD_NAME_LEN - 1));
/* make sure the string is terminated */
p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN - 1] = 0;
@@ -5725,8 +5750,6 @@ void bta_dm_proc_open_evt(tBTA_GATTC_OPEN *p_data)
((p2[0]) << 24) + ((p2[1]) << 16) + ((p2[2]) << 8) + (p2[3]),
((p2[4]) << 8) + p2[5]);
UNUSED(p1);
UNUSED(p2);
APPL_TRACE_DEBUG("BTA_GATTC_OPEN_EVT conn_id = %d client_if=%d status = %d" ,
p_data->conn_id,
p_data->client_if,

View File

@@ -174,7 +174,7 @@ void BTA_DmSetDeviceName(const char *p_name)
if ((p_msg = (tBTA_DM_API_SET_NAME *) osi_malloc(sizeof(tBTA_DM_API_SET_NAME))) != NULL) {
p_msg->hdr.event = BTA_DM_API_SET_NAME_EVT;
/* truncate the name if needed */
BCM_STRNCPY_S((char *)p_msg->name, p_name, BD_NAME_LEN - 1);
BCM_STRNCPY_S((char *)p_msg->name, sizeof(p_msg->name), p_name, BD_NAME_LEN - 1);
p_msg->name[BD_NAME_LEN - 1] = 0;
bta_sys_sendmsg(p_msg);
@@ -533,6 +533,29 @@ void BTA_DmConfirm(BD_ADDR bd_addr, BOOLEAN accept)
}
}
/*******************************************************************************
**
** Function BTA_DmPasskeyReqReply
**
** Description This function is called to provide the passkey for
** Simple Pairing in response to BTA_DM_SP_KEY_REQ_EVT
**
** Returns void
**
*******************************************************************************/
#if (BT_SSP_INCLUDED == TRUE)
void BTA_DmPasskeyReqReply(BOOLEAN accept, BD_ADDR bd_addr, UINT32 passkey)
{
tBTA_DM_API_KEY_REQ *p_msg;
if ((p_msg = (tBTA_DM_API_KEY_REQ *) osi_malloc(sizeof(tBTA_DM_API_KEY_REQ))) != NULL) {
p_msg->hdr.event = BTA_DM_API_KEY_REQ_EVT;
bdcpy(p_msg->bd_addr, bd_addr);
p_msg->accept = accept;
p_msg->passkey = passkey;
bta_sys_sendmsg(p_msg);
}
}
#endif ///BT_SSP_INCLUDED == TRUE
/*******************************************************************************
**
** Function BTA_DmAddDevice
@@ -774,13 +797,12 @@ void BTA_DmAddBleKey (BD_ADDR bd_addr, tBTA_LE_KEY_VALUE *p_le_key, tBTA_LE_KEY_
**
** Parameters: bd_addr - BD address of the peer
** dev_type - Remote device's device type.
** auth_mode - auth mode
** addr_type - LE device address type.
**
** Returns void
**
*******************************************************************************/
void BTA_DmAddBleDevice(BD_ADDR bd_addr, tBLE_ADDR_TYPE addr_type, int auth_mode, tBT_DEVICE_TYPE dev_type)
void BTA_DmAddBleDevice(BD_ADDR bd_addr, tBLE_ADDR_TYPE addr_type, tBT_DEVICE_TYPE dev_type)
{
tBTA_DM_API_ADD_BLE_DEVICE *p_msg;
@@ -790,7 +812,6 @@ void BTA_DmAddBleDevice(BD_ADDR bd_addr, tBLE_ADDR_TYPE addr_type, int auth_mode
p_msg->hdr.event = BTA_DM_API_ADD_BLEDEVICE_EVT;
bdcpy(p_msg->bd_addr, bd_addr);
p_msg->addr_type = addr_type;
p_msg->auth_mode = auth_mode;
p_msg->dev_type = dev_type;
bta_sys_sendmsg(p_msg);

View File

@@ -28,7 +28,7 @@
#include "bta/bta_sys.h"
#include "bta/bta_api.h"
#include "bta_dm_int.h"
// #include "bta/bta_jv_api.h"
#include "bta/bta_jv_api.h"
#ifndef BTA_DM_LINK_POLICY_SETTINGS
#define BTA_DM_LINK_POLICY_SETTINGS (HCI_ENABLE_MASTER_SLAVE_SWITCH | HCI_ENABLE_HOLD_MODE | HCI_ENABLE_SNIFF_MODE | HCI_ENABLE_PARK_MODE)
@@ -116,11 +116,11 @@ tBTA_DM_CFG *p_bta_dm_cfg = (tBTA_DM_CFG *) &bta_dm_cfg;
tBTA_DM_RM *p_bta_dm_rm_cfg = (tBTA_DM_RM *) &bta_dm_rm_cfg;
#if BLE_INCLUDED == TRUE
# define BTA_DM_NUM_PM_ENTRY 8 /* number of entries in bta_dm_pm_cfg except the first */
# define BTA_DM_NUM_PM_SPEC 8 /* number of entries in bta_dm_pm_spec */
#else
# define BTA_DM_NUM_PM_ENTRY 6 /* number of entries in bta_dm_pm_cfg except the first */
# define BTA_DM_NUM_PM_SPEC 6 /* number of entries in bta_dm_pm_spec */
#else
# define BTA_DM_NUM_PM_ENTRY 4 /* number of entries in bta_dm_pm_cfg except the first */
# define BTA_DM_NUM_PM_SPEC 4 /* number of entries in bta_dm_pm_spec */
#endif
#if (BTA_DM_PM_INCLUDED == TRUE)
@@ -129,11 +129,13 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_CFG bta_dm_pm_cfg[BTA_DM_NUM_PM_ENTRY + 1]
{BTA_ID_SYS, BTA_DM_NUM_PM_ENTRY, 0}, /* reserved: specifies length of this table. */
{BTA_ID_AG, BTA_ALL_APP_ID, 0}, /* ag uses first spec table for app id 0 */
{BTA_ID_AV, BTA_ALL_APP_ID, 1}, /* av spec table */
{BTA_ID_HS, BTA_ALL_APP_ID, 2}, /* HS spec table */
{BTA_ID_AVK, BTA_ALL_APP_ID, 3} /* avk spec table */
{BTA_ID_JV, BTA_APP_ID_1, 2}, /* app BTA_JV_PM_ID_1, reuse ftc spec table */
{BTA_ID_JV, BTA_ALL_APP_ID, 3}, /* reuse fts spec table */
{BTA_ID_HS, BTA_ALL_APP_ID, 4}, /* HS spec table */
{BTA_ID_AVK, BTA_ALL_APP_ID, 5} /* avk spec table */
#if BLE_INCLUDED == TRUE
, {BTA_ID_GATTC, BTA_ALL_APP_ID, 4} /* gattc spec table */
, {BTA_ID_GATTS, BTA_ALL_APP_ID, 5} /* gatts spec table */
, {BTA_ID_GATTC, BTA_ALL_APP_ID, 6} /* gattc spec table */
, {BTA_ID_GATTS, BTA_ALL_APP_ID, 7} /* gatts spec table */
#endif
};
@@ -177,7 +179,45 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
}
},
/* HS : 2 */
/* FTC, OPC, JV : 2 */
{
(BTA_DM_PM_SNIFF), /* allow sniff */
#if (BTM_SSR_INCLUDED == TRUE)
(BTA_DM_PM_SSR2), /* the SSR entry */
#endif
{
{{BTA_DM_PM_SNIFF_JV_IDX, BTA_FTC_OPS_IDLE_TO_SNIFF_DELAY_MS + BTA_DM_PM_SPEC_TO_OFFSET}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
{{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
{{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
{{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
{{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
{{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
{{BTA_DM_PM_SNIFF_JV_IDX, BTA_FTC_OPS_IDLE_TO_SNIFF_DELAY_MS + BTA_DM_PM_SPEC_TO_OFFSET}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
{{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
{{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
}
},
/* FTS, PBS, OPS, MSE, BTA_JV_PM_ID_1 : 3 */
{
(BTA_DM_PM_SNIFF), /* allow sniff */
#if (BTM_SSR_INCLUDED == TRUE)
(BTA_DM_PM_SSR2), /* the SSR entry */
#endif
{
{{BTA_DM_PM_SNIFF_JV_IDX, BTA_FTS_OPS_IDLE_TO_SNIFF_DELAY_MS + BTA_DM_PM_SPEC_TO_OFFSET}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
{{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
{{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
{{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
{{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
{{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
{{BTA_DM_PM_SNIFF_JV_IDX, BTA_FTS_OPS_IDLE_TO_SNIFF_DELAY_MS + BTA_DM_PM_SPEC_TO_OFFSET}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
{{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
{{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
}
},
/* HS : 4 */
{
(BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
#if (BTM_SSR_INCLUDED == TRUE)
@@ -188,15 +228,15 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
{{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
{{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
{{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
{{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */
{{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close sniff */
{{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
{{BTA_DM_PM_SNIFF3, 7000 + BTA_DM_PM_SPEC_TO_OFFSET}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */
{{BTA_DM_PM_SNIFF, 7000 + BTA_DM_PM_SPEC_TO_OFFSET}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close sniff */
{{BTA_DM_PM_SNIFF, 7000 + BTA_DM_PM_SPEC_TO_OFFSET}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
{{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
{{BTA_DM_PM_RETRY, 7000 + BTA_DM_PM_SPEC_TO_OFFSET}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
}
},
/* AVK : 3 */
/* AVK : 5 */
{
(BTA_DM_PM_SNIFF), /* allow sniff */
#if (BTM_SSR_INCLUDED == TRUE)
@@ -216,7 +256,7 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
}
#if BLE_INCLUDED == TRUE
/* GATTC : 4 */
/* GATTC : 6 */
, {
(BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
#if (BTM_SSR_INCLUDED == TRUE)
@@ -237,7 +277,7 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
{{BTA_DM_PM_RETRY, 5000 + BTA_DM_PM_SPEC_TO_OFFSET}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
}
}
/* GATTS : 5 */
/* GATTS : 7 */
, {
(BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
#if (BTM_SSR_INCLUDED == TRUE)

View File

@@ -45,11 +45,20 @@ tBTE_APPL_CFG bte_appl_cfg = {
BTM_BLE_INITIATOR_KEY_SIZE,
BTM_BLE_RESPONDER_KEY_SIZE,
BTM_BLE_MAX_KEY_SIZE,
BTM_BLE_MIN_KEY_SIZE,
BTM_BLE_ONLY_ACCEPT_SPECIFIED_SEC_AUTH_DISABLE
};
#endif
#if (defined CLASSIC_BT_INCLUDED && CLASSIC_BT_INCLUDED == TRUE && BT_SSP_INCLUDED == TRUE)
#include "common/bte_appl.h"
#include "btm_int.h"
tBTE_BT_APPL_CFG bte_bt_appl_cfg = {
0, //Todo, Authentication requirements
BTM_LOCAL_IO_CAPS,
NULL, //Todo, OOB data
};
#endif
/*******************************************************************************
**
** Function bta_dm_co_get_compress_memory
@@ -71,6 +80,34 @@ BOOLEAN bta_dm_co_get_compress_memory(tBTA_SYS_ID id, UINT8 **memory_p, UINT32 *
return TRUE;
}
/*******************************************************************************
**
** Function bta_dm_co_bt_set_io_cap
**
** Description This function is used to set IO capabilities
**
** Parameters bt_io_cap - IO capabilities
**
** @return - ESP_BT_STATUS_SUCCESS : success
** - other : failed
**
*******************************************************************************/
esp_err_t bta_dm_co_bt_set_io_cap(UINT8 bt_io_cap)
{
esp_err_t ret = ESP_BT_STATUS_SUCCESS;
#if (BT_SSP_INCLUDED == TRUE)
if(bt_io_cap < BTM_IO_CAP_MAX ) {
bte_bt_appl_cfg.bt_io_cap = bt_io_cap;
btm_cb.devcb.loc_io_caps = bt_io_cap;
ret = ESP_BT_STATUS_SUCCESS;
} else {
ret = ESP_BT_STATUS_FAIL;
APPL_TRACE_ERROR("%s error:Invalid io cap value.",__func__);
}
#endif ///BT_SSP_INCLUDED == TRUE
return ret;
}
/*******************************************************************************
**
** Function bta_dm_co_io_req
@@ -362,7 +399,7 @@ void bta_dm_co_ble_set_rsp_key_req(UINT8 rsp_key)
void bta_dm_co_ble_set_max_key_size(UINT8 ble_key_size)
{
#if (SMP_INCLUDED == TRUE)
if(ble_key_size >= bte_appl_cfg.ble_min_key_size && ble_key_size <= BTM_BLE_MAX_KEY_SIZE) {
if(ble_key_size >= BTM_BLE_MIN_KEY_SIZE && ble_key_size <= BTM_BLE_MAX_KEY_SIZE) {
bte_appl_cfg.ble_max_key_size = ble_key_size;
} else {
APPL_TRACE_ERROR("%s error:Invalid key size value, key_size =%d",__func__, ble_key_size);
@@ -370,17 +407,6 @@ void bta_dm_co_ble_set_max_key_size(UINT8 ble_key_size)
#endif ///SMP_INCLUDED == TRUE
}
void bta_dm_co_ble_set_min_key_size(UINT8 ble_key_size)
{
#if (SMP_INCLUDED == TRUE)
if(ble_key_size >= BTM_BLE_MIN_KEY_SIZE && ble_key_size <= bte_appl_cfg.ble_max_key_size) {
bte_appl_cfg.ble_min_key_size = ble_key_size;
} else {
APPL_TRACE_ERROR("%s error:Invalid key size value, key_size =%d",__func__, ble_key_size);
}
#endif ///SMP_INCLUDED == TRUE
}
void bta_dm_co_ble_set_accept_auth_enable(UINT8 enable)
{
#if (SMP_INCLUDED == TRUE)

View File

@@ -75,6 +75,9 @@ const tBTA_DM_ACTION bta_dm_action[BTA_DM_MAX_EVT] = {
/* simple pairing events */
#if (SMP_INCLUDED == TRUE)
bta_dm_confirm, /* BTA_DM_API_CONFIRM_EVT */
#if (BT_SSP_INCLUDED == TRUE)
bta_dm_key_req, /* BTA_DM_API_KEY_REQ_EVT */
#endif ///BT_SSP_INCLUDED == TRUE
bta_dm_set_encryption, /* BTA_DM_API_SET_ENCRYPTION_EVT */
#endif ///SMP_INCLUDED == TRUE
#if (BTM_OOB_INCLUDED == TRUE && SMP_INCLUDED == TRUE)

View File

@@ -1038,10 +1038,9 @@ static void bta_dm_pm_hid_check(BOOLEAN bScoActive)
bta_dm_pm_set_sniff_policy( bta_dm_find_peer_device(bta_dm_conn_srvcs.conn_srvc[j].peer_bdaddr), bScoActive);
/* if we had disabled link policy, seems like the hid device stop retrying SNIFF after a few tries. force sniff if needed */
if (!bScoActive) {
if (!bScoActive)
bta_dm_pm_set_mode(bta_dm_conn_srvcs.conn_srvc[j].peer_bdaddr, BTA_DM_PM_NO_ACTION,
BTA_DM_PM_RESTART);
}
}
}

Some files were not shown because too many files have changed in this diff Show More