From d27d29719579cd765ef032b76e9a50b71bcf2a84 Mon Sep 17 00:00:00 2001 From: me-no-dev Date: Fri, 22 Sep 2017 17:28:54 +0800 Subject: [PATCH] Update IDF to c4e65d6 --- cores/esp32/esp32-hal-bt.c | 2 +- package/package_esp32_index.template.json | 56 +- platform.txt | 2 +- tools/gen_esp32part.exe | Bin 3337841 -> 3337841 bytes tools/gen_esp32part.py | 22 +- tools/platformio-build.py | 2 +- tools/sdk/bin/bootloader.bin | Bin 10576 -> 10560 bytes tools/sdk/bin/bootloader_qio.bin | Bin 12400 -> 12384 bytes tools/sdk/include/bluedroid/bt_target.h | 6 + tools/sdk/include/bluedroid/bta_api.h | 12 + tools/sdk/include/bluedroid/bta_gatt_api.h | 397 +++++++------- tools/sdk/include/bluedroid/bta_gattc_int.h | 134 ++--- tools/sdk/include/bluedroid/btc_ble_storage.h | 127 ++--- tools/sdk/include/bluedroid/btc_config.h | 6 +- tools/sdk/include/bluedroid/btc_dm.h | 46 ++ tools/sdk/include/bluedroid/btc_gap_ble.h | 31 +- tools/sdk/include/bluedroid/btc_gattc.h | 131 +++-- tools/sdk/include/bluedroid/btc_storage.h | 6 + tools/sdk/include/bluedroid/btm_api.h | 5 + tools/sdk/include/bluedroid/btm_int.h | 22 + tools/sdk/include/bluedroid/esp_bt_defs.h | 9 +- tools/sdk/include/bluedroid/esp_gap_ble_api.h | 94 +++- tools/sdk/include/bluedroid/esp_gatt_defs.h | 113 +++- tools/sdk/include/bluedroid/esp_gattc_api.h | 489 +++++++++++------- tools/sdk/include/bluedroid/hci_layer.h | 1 - tools/sdk/include/bluedroid/l2c_api.h | 79 +++ tools/sdk/include/bluedroid/l2c_int.h | 44 +- tools/sdk/include/bluedroid/l2cdefs.h | 9 + tools/sdk/include/bt/bt.h | 50 +- tools/sdk/include/config/sdkconfig.h | 3 +- tools/sdk/include/driver/driver/uart.h | 16 +- tools/sdk/include/esp32/esp_dport_access.h | 4 + tools/sdk/include/esp32/esp_now.h | 315 +++++++++++ tools/sdk/include/esp32/esp_spiram.h | 6 + tools/sdk/include/esp32/esp_wifi_types.h | 12 + .../freertos/freertos/FreeRTOSConfig.h | 2 - tools/sdk/include/heap/esp_heap_caps.h | 4 +- tools/sdk/include/log/esp_log.h | 100 +++- tools/sdk/include/log/esp_log_internal.h | 24 + tools/sdk/include/lwip/apps/dhcpserver.h | 5 - tools/sdk/include/nvs_flash/nvs_flash.h | 29 +- tools/sdk/include/soc/soc/soc.h | 8 +- tools/sdk/include/spiffs/esp_spiffs.h | 8 + tools/sdk/include/spiffs/spiffs_config.h | 10 +- tools/sdk/ld/esp32.common.ld | 5 +- tools/sdk/ld/esp32.rom.ld | 9 + .../sdk/ld/esp32.spiram.rom-functions-dram.ld | 143 +++++ .../sdk/ld/esp32.spiram.rom-functions-iram.ld | 144 ++++++ tools/sdk/lib/libapp_trace.a | Bin 18264 -> 22252 bytes tools/sdk/lib/libapp_update.a | Bin 52388 -> 52260 bytes tools/sdk/lib/libbootloader_support.a | Bin 152286 -> 151422 bytes tools/sdk/lib/libbt.a | Bin 11762286 -> 11938122 bytes tools/sdk/lib/libbtdm_app.a | Bin 143616 -> 199362 bytes tools/sdk/lib/libcoap.a | Bin 451330 -> 450118 bytes tools/sdk/lib/libcoexist.a | Bin 14802 -> 14802 bytes tools/sdk/lib/libconsole.a | Bin 394388 -> 394144 bytes tools/sdk/lib/libcore.a | Bin 10538 -> 10538 bytes tools/sdk/lib/libcxx.a | Bin 50180 -> 50524 bytes tools/sdk/lib/libdriver.a | Bin 1850010 -> 1851024 bytes tools/sdk/lib/libesp32.a | Bin 706356 -> 722244 bytes tools/sdk/lib/libesp_adc_cal.a | Bin 16902 -> 16774 bytes tools/sdk/lib/libespnow.a | Bin 0 -> 49634 bytes tools/sdk/lib/libethernet.a | Bin 147586 -> 147070 bytes tools/sdk/lib/libexpat.a | Bin 1239676 -> 1239316 bytes tools/sdk/lib/libfatfs.a | Bin 394728 -> 393964 bytes tools/sdk/lib/libfreertos.a | Bin 554698 -> 559136 bytes tools/sdk/lib/libheap.a | Bin 186988 -> 188806 bytes tools/sdk/lib/libjsmn.a | Bin 21578 -> 21542 bytes tools/sdk/lib/libjson.a | Bin 208230 -> 208130 bytes tools/sdk/lib/liblog.a | Bin 25618 -> 37388 bytes tools/sdk/lib/liblwip.a | Bin 2022512 -> 2017732 bytes tools/sdk/lib/libmbedtls.a | Bin 3148706 -> 3145030 bytes tools/sdk/lib/libmdns.a | Bin 203656 -> 203528 bytes tools/sdk/lib/libmicro-ecc.a | Bin 154324 -> 154280 bytes tools/sdk/lib/libnet80211.a | Bin 735444 -> 748578 bytes tools/sdk/lib/libnewlib.a | Bin 83896 -> 83548 bytes tools/sdk/lib/libnghttp.a | Bin 1552422 -> 1550870 bytes tools/sdk/lib/libnvs_flash.a | Bin 631074 -> 668446 bytes tools/sdk/lib/libopenssl.a | Bin 267760 -> 267264 bytes tools/sdk/lib/libpp.a | Bin 490434 -> 494584 bytes tools/sdk/lib/libpthread.a | Bin 65354 -> 65254 bytes tools/sdk/lib/libsdmmc.a | Bin 106078 -> 105942 bytes tools/sdk/lib/libsoc.a | Bin 114388 -> 113896 bytes tools/sdk/lib/libspi_flash.a | Bin 188048 -> 187604 bytes tools/sdk/lib/libspiffs.a | Bin 555208 -> 554920 bytes tools/sdk/lib/libtcpip_adapter.a | Bin 118420 -> 117588 bytes tools/sdk/lib/libulp.a | Bin 36790 -> 36602 bytes tools/sdk/lib/libvfs.a | Bin 113310 -> 113062 bytes tools/sdk/lib/libwear_levelling.a | Bin 208978 -> 211502 bytes tools/sdk/lib/libwpa.a | Bin 153760 -> 153940 bytes tools/sdk/lib/libwpa2.a | Bin 434786 -> 441116 bytes tools/sdk/lib/libwpa_supplicant.a | Bin 549934 -> 547778 bytes tools/sdk/lib/libwps.a | Bin 346374 -> 346402 bytes tools/sdk/lib/libxtensa-debug-module.a | Bin 12082 -> 11966 bytes tools/sdk/sdkconfig | 337 ++++++------ 95 files changed, 2149 insertions(+), 930 deletions(-) create mode 100644 tools/sdk/include/esp32/esp_now.h create mode 100644 tools/sdk/include/log/esp_log_internal.h create mode 100644 tools/sdk/ld/esp32.spiram.rom-functions-dram.ld create mode 100644 tools/sdk/ld/esp32.spiram.rom-functions-iram.ld create mode 100644 tools/sdk/lib/libespnow.a diff --git a/cores/esp32/esp32-hal-bt.c b/cores/esp32/esp32-hal-bt.c index 08b8d3fd..d701bbbf 100644 --- a/cores/esp32/esp32-hal-bt.c +++ b/cores/esp32/esp32-hal-bt.c @@ -52,7 +52,7 @@ bool btStop(){ return true; } if(esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_ENABLED){ - if (esp_bt_controller_disable(ESP_BT_MODE_BTDM)) { + if (esp_bt_controller_disable()) { log_e("BT Disable failed"); return false; } diff --git a/package/package_esp32_index.template.json b/package/package_esp32_index.template.json index 62cb662b..a41ef215 100644 --- a/package/package_esp32_index.template.json +++ b/package/package_esp32_index.template.json @@ -33,12 +33,12 @@ { "packager": "esp32", "name": "xtensa-esp32-elf-gcc", - "version": "1.22.0-61-gab8375a-5.2.0" + "version": "1.22.0-73-ge28a011-5.2.0" }, { "packager": "esp32", "name": "esptool", - "version": "a420774" + "version": "4dab24e" } ] } @@ -46,55 +46,55 @@ "tools": [ { "name": "xtensa-esp32-elf-gcc", - "version": "1.22.0-61-gab8375a-5.2.0", + "version": "1.22.0-73-ge28a011-5.2.0", "systems": [ { "host": "i686-mingw32", - "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-win32-1.22.0-61-gab8375a-5.2.0-2.zip", - "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-61-gab8375a-5.2.0-2.zip", - "checksum": "SHA-256:c00dbdab8e8acc273d4aa319a74f7bb1d9496c843159823201d685359174168f", - "size": "76346909" + "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-win32-1.22.0-73-ge28a011-5.2.0.zip", + "archiveFileName": "xtensa-esp32-elf-win32-1.22.0-73-ge28a011-5.2.0.zip", + "checksum": "SHA-256:97566173909b20567b99ec1b0f5746e341d65961f82fdb760a00937193d03d29", + "size": "78710389" }, { "host": "x86_64-apple-darwin", - "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-osx-1.22.0-61-gab8375a-5.2.0.tar.gz", - "archiveFileName": "xtensa-esp32-elf-osx-1.22.0-61-gab8375a-5.2.0.tar.gz", - "checksum": "SHA-256:89a9a6084ec032ddcd4bdae37b428e533ed5fd0c0ab6b66ddf703e4b3f83d6e4", - "size": "40481812" + "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-osx-1.22.0-73-ge28a011-5.2.0.tar.gz", + "archiveFileName": "xtensa-esp32-elf-osx-1.22.0-73-ge28a011-5.2.0.tar.gz", + "checksum": "SHA-256:5eb503462eb7f6a41c0d6c0538b512ab35a0f76ce96514a4e7a6074f6b3ad0d0", + "size": "39903635" }, { "host": "x86_64-pc-linux-gnu", - "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz", - "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz", - "checksum": "SHA-256:b74333fd7f622f035fee7c4e0ca57c3e2ccb2515de5d901f33e87e79cdf0d4f9", - "size": "37674568" + "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-73-ge28a011-5.2.0.tar.gz", + "archiveFileName": "xtensa-esp32-elf-linux64-1.22.0-73-ge28a011-5.2.0.tar.gz", + "checksum": "SHA-256:3763dbed9fd43901c07757622e9c46d29e89eda812b83627df5cb9d019cae0e5", + "size": "37656793" }, { "host": "i686-pc-linux-gnu", - "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-61-gab8375a-5.2.0.tar.gz", - "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-61-gab8375a-5.2.0.tar.gz", - "checksum": "SHA-256:dbb342b7c377a7c3a1fcccc60fa1193332d0c37e6a90c5075d3471c13c9e94ad", - "size": "41032647" + "url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-73-ge28a011-5.2.0.tar.gz", + "archiveFileName": "xtensa-esp32-elf-linux32-1.22.0-73-ge28a011-5.2.0.tar.gz", + "checksum": "SHA-256:1d8b1dd16223dcb5181af7d713582cf7f22db36c0865d9fcff7b51cfac460641", + "size": "38991614" } ] }, { "name": "esptool", - "version": "a420774", + "version": "4dab24e", "systems": [ { "host": "i686-mingw32", - "url": "https://dl.espressif.com/dl/esptool-a420774-windows.zip", - "archiveFileName": "esptool-a420774-windows.zip", - "checksum": "SHA-256:7778545baa30a85a37a956e47e42a236fa67227f21b160b2164ef83a5e20a41f", - "size": "3394137" + "url": "https://dl.espressif.com/dl/esptool-4dab24e-windows.zip", + "archiveFileName": "esptool-4dab24e-windows.zip", + "checksum": "SHA-256:604014edbd79616470ecda20d623bac3a8d916b1147d37f7a66a83959eff066c", + "size": "3462819" }, { "host": "x86_64-apple-darwin", - "url": "https://dl.espressif.com/dl/esptool-a420774-macos.tar.gz", - "archiveFileName": "esptool-a420774-macos.tar.gz", - "checksum": "SHA-256:1a6237b695fe299357bfd78a9727564464a00e020bc7c7a4cf6fad02250eb2a2", - "size": "3808980" + "url": "https://dl.espressif.com/dl/esptool-4dab24e-macos.tar.gz", + "archiveFileName": "esptool-4dab24e-macos.tar.gz", + "checksum": "SHA-256:92fe2f0505ed93051681bd4d5d766664eacfa32745976dda695c728b529dcc8f", + "size": "3869525" } ] } diff --git a/platform.txt b/platform.txt index 5fdc6e2b..6e71f6a4 100644 --- a/platform.txt +++ b/platform.txt @@ -34,7 +34,7 @@ compiler.S.flags=-c -g3 -x assembler-with-cpp -MMD -mlongcalls compiler.c.elf.cmd=xtensa-esp32-elf-gcc compiler.c.elf.flags=-nostdlib "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/ld" -T esp32_out.ld -T esp32.common.ld -T esp32.rom.ld -T esp32.peripherals.ld -T esp32.rom.spiram_incompatible_fns.ld -u ld_include_panic_highint_hdl -u call_user_start_cpu0 -Wl,--gc-sections -Wl,-static -Wl,--undefined=uxTopUsedPriority -compiler.c.elf.libs=-lgcc -lstdc++ -lapp_trace -lapp_update -lbootloader_support -lbt -lbtdm_app -lc -lc_nano -lcoap -lcoexist -lconsole -lcore -lcxx -ldriver -lesp32 -lesp_adc_cal -lethernet -lexpat -lfatfs -lfreertos -lhal -lheap -ljsmn -ljson -llog -llwip -lm -lmbedtls -lmdns -lmicro-ecc -lnet80211 -lnewlib -lnghttp -lnvs_flash -lopenssl -lphy -lpp -lpthread -lrtc -lsdmmc -lsmartconfig -lsoc -lspi_flash -lspiffs -ltcpip_adapter -lulp -lvfs -lwear_levelling -lwpa -lwpa2 -lwpa_supplicant -lwps -lxtensa-debug-module +compiler.c.elf.libs=-lgcc -lstdc++ -lapp_trace -lapp_update -lbootloader_support -lbt -lbtdm_app -lc -lc_nano -lcoap -lcoexist -lconsole -lcore -lcxx -ldriver -lesp32 -lesp_adc_cal -lespnow -lethernet -lexpat -lfatfs -lfreertos -lhal -lheap -ljsmn -ljson -llog -llwip -lm -lmbedtls -lmdns -lmicro-ecc -lnet80211 -lnewlib -lnghttp -lnvs_flash -lopenssl -lphy -lpp -lpthread -lrtc -lsdmmc -lsmartconfig -lsoc -lspi_flash -lspiffs -ltcpip_adapter -lulp -lvfs -lwear_levelling -lwpa -lwpa2 -lwpa_supplicant -lwps -lxtensa-debug-module compiler.as.cmd=xtensa-esp32-elf-as diff --git a/tools/gen_esp32part.exe b/tools/gen_esp32part.exe index 6379500de05369cd8d62e0d0aedc317b53c7d4a7..c4db89310bc234beb35c0fe45f07cd3d383d4642 100644 GIT binary patch delta 6539 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 delta 205 zcmX>QbRlSh2BXhJO;074)Z*-t`~rQ~-~eMID4AMZpqrVJrdv>&l#`h}Ign9o;(WD< zCyIzuY_hq7@dcygABO+-J`Dfu1sML@i!l7R-@)+T{tCl?`xlctnP2nrF#fmqVES(_ z!}#C6VR9pju%HgpfBPwn|Lxx}{<)K&*d5q-82{VPWpH3P4;K+({BQrB!GYobmL7J81wHHzoHCQk8J%$% zKKTx#2@?auW_~6{Cdn@h|LuJk{@V*M{I?fj_;0^~;lKSEhX3{tCTp^IGb&6jWjStG z!}#BR1Ji%|9>)LnFBt#Z&oTI5&tUMueuBXV`zavI^xysu2IHNHnx0B7sm0kP`33r}!2!lbP%^c+KsPfbO}C&lDJL^|VyDf-69wix zjQ{NqF(@$n|IowkaHogeflY+*zx`YW2Zr--5gEq+_U{=S82)eRVRu;2!|uSTGC7~o znFvcJpJX&y#Ka`|hvC1y55s?Z0fztfA`JiScQE|7zryg}{>5ZT7H>w4$*C;I4OmS2h8bgno1uBsMkTdZM9HGAL*079m1&Hw-a diff --git a/tools/sdk/include/bluedroid/bt_target.h b/tools/sdk/include/bluedroid/bt_target.h index 34b8c194..b5883416 100644 --- a/tools/sdk/include/bluedroid/bt_target.h +++ b/tools/sdk/include/bluedroid/bt_target.h @@ -665,6 +665,12 @@ #define L2CAP_CLIENT_INCLUDED FALSE #endif +/* The maximum number of simultaneous applications that can register with LE L2CAP. */ +#ifndef BLE_MAX_L2CAP_CLIENTS +#define BLE_MAX_L2CAP_CLIENTS 15 +#endif + + /* The maximum number of simultaneous links that L2CAP can support. Up to 7*/ #ifndef MAX_ACL_CONNECTIONS #define MAX_L2CAP_LINKS 5 diff --git a/tools/sdk/include/bluedroid/bta_api.h b/tools/sdk/include/bluedroid/bta_api.h index fb02175f..12fd911c 100644 --- a/tools/sdk/include/bluedroid/bta_api.h +++ b/tools/sdk/include/bluedroid/bta_api.h @@ -406,6 +406,12 @@ typedef tBTM_SET_PKT_DATA_LENGTH_CBACK tBTA_SET_PKT_DATA_LENGTH_CBACK; typedef tBTM_SET_LOCAL_PRIVACY_CBACK tBTA_SET_LOCAL_PRIVACY_CBACK; +typedef tBTM_CMPL_CB tBTA_CMPL_CB; + +typedef tBTM_TX_POWER_RESULTS tBTA_TX_POWER_RESULTS; + +typedef tBTM_RSSI_RESULTS tBTA_RSSI_RESULTS; + /* advertising channel map */ #define BTA_BLE_ADV_CHNL_37 BTM_BLE_ADV_CHNL_37 #define BTA_BLE_ADV_CHNL_38 BTM_BLE_ADV_CHNL_38 @@ -1404,6 +1410,12 @@ extern void BTA_DisableTestMode(void); *******************************************************************************/ extern void BTA_DmSetDeviceName(char *p_name); +extern void BTA_DmUpdateWhiteList(BOOLEAN add_remove, BD_ADDR remote_addr); + +extern void BTA_DmBleReadAdvTxPower(tBTA_CMPL_CB *cmpl_cb); + +extern void BTA_DmBleReadRSSI(BD_ADDR remote_addr, tBTA_CMPL_CB *cmpl_cb); + /******************************************************************************* ** ** Function BTA_DmSetVisibility diff --git a/tools/sdk/include/bluedroid/bta_gatt_api.h b/tools/sdk/include/bluedroid/bta_gatt_api.h index 4b4945aa..d81fa547 100644 --- a/tools/sdk/include/bluedroid/bta_gatt_api.h +++ b/tools/sdk/include/bluedroid/bta_gatt_api.h @@ -27,6 +27,7 @@ #include "bta_api.h" #include "gatt_api.h" +#include "list.h" #ifndef BTA_GATT_INCLUDED #warning BTA_GATT_INCLUDED not defined @@ -43,6 +44,34 @@ #define BTA_GATT_DEBUG FALSE #endif +typedef enum { + BTGATT_DB_PRIMARY_SERVICE, + BTGATT_DB_SECONDARY_SERVICE, + BTGATT_DB_CHARACTERISTIC, + BTGATT_DB_DESCRIPTOR, + BTGATT_DB_INCLUDED_SERVICE, +}bt_gatt_db_attribute_type_t; + +typedef enum { + GATT_OP_GET_SVC_BY_UUID, + GATT_OP_GET_ALL_CHAR, + GATT_OP_GET_ALL_DESCRI, + GATT_OP_GET_CHAR_BY_UUID, + GATT_OP_GET_DESCRI_BY_UUID, + GATT_OP_GET_DESCRI_BY_HANDLE, + GATT_OP_GET_INCLUDE_SVC, +}bt_gatt_get_db_op_t; + +typedef struct { + bt_gatt_db_attribute_type_t type; + UINT16 attribute_handle; + UINT16 start_handle; + UINT16 end_handle; + UINT16 id; + UINT8 properties; + bt_uuid_t uuid; +}btgatt_db_element_t; + /***************************************************************************** ** Constants and data types *****************************************************************************/ @@ -104,7 +133,7 @@ typedef struct { #define BTA_GATT_APP_RSP GATT_APP_RSP /* 0xE1 */ //Error caused by customer application or stack bug #define BTA_GATT_UNKNOWN_ERROR GATT_UNKNOWN_ERROR /* 0XEF */ - + /* 0xE0 ~ 0xFC reserved for future use */ #define BTA_GATT_CCC_CFG_ERR GATT_CCC_CFG_ERR /* 0xFD Client Characteristic Configuration Descriptor Improperly Configured */ #define BTA_GATT_PRC_IN_PROGRESS GATT_PRC_IN_PROGRESS /* 0xFE Procedure Already in progress */ #define BTA_GATT_OUT_OF_RANGE GATT_OUT_OF_RANGE /* 0xFFAttribute value out of range */ @@ -213,41 +242,13 @@ typedef struct { BOOLEAN is_primary; } tBTA_GATT_SRVC_ID; -typedef struct { - tBTA_GATT_SRVC_ID srvc_id; - tBTA_GATT_ID char_id; -} tBTA_GATTC_CHAR_ID; - -typedef struct { - tBTA_GATTC_CHAR_ID char_id; - tBTA_GATT_ID descr_id; -} tBTA_GATTC_CHAR_DESCR_ID; - -typedef struct { - tBTA_GATT_SRVC_ID srvc_id; - tBTA_GATT_SRVC_ID incl_svc_id; -} tBTA_GATTC_INCL_SVC_ID; - -#define BTA_GATT_TYPE_CHAR 0 -#define BTA_GATT_TYPE_CHAR_DESCR 1 -typedef UINT8 tBTA_GATT_ID_TYPE; - -typedef struct { - tBTA_GATT_ID_TYPE id_type; - union { - tBTA_GATTC_CHAR_ID char_id; - tBTA_GATTC_CHAR_DESCR_ID char_descr_id; - - } id_value; -} tBTA_GATTC_ATTR_ID; #define BTA_GATTC_MULTI_MAX GATT_MAX_READ_MULTI_HANDLES typedef struct { UINT8 num_attr; - tBTA_GATTC_ATTR_ID id_list[BTA_GATTC_MULTI_MAX]; - -} tBTA_GATTC_MULTI; + UINT16 handles[BTA_GATTC_MULTI_MAX]; +}tBTA_GATTC_MULTI; /* relate to ESP_GATT_xxx in esp_gatt_def.h */ #define BTA_GATT_AUTH_REQ_NONE GATT_AUTH_REQ_NONE @@ -275,44 +276,28 @@ typedef struct { UINT8 id; UINT8 prop; /* used when attribute type is characteristic */ BOOLEAN is_primary; /* used when attribute type is service */ -} tBTA_GATTC_NV_ATTR; + UINT16 incl_srvc_handle; /* used when attribute type is included service */ +}tBTA_GATTC_NV_ATTR; /* callback data structure */ typedef struct { tBTA_GATT_STATUS status; tBTA_GATTC_IF client_if; -// btla-specific ++ tBT_UUID app_uuid; -// btla-specific -- -} tBTA_GATTC_REG; - -typedef struct { - UINT8 num_pres_fmt; /* number of presentation format aggregated*/ - tBTA_GATTC_CHAR_DESCR_ID pre_format[BTA_GATTC_MULTI_MAX]; -} tBTA_GATT_CHAR_AGGRE_VALUE; - -typedef union { - tBTA_GATT_CHAR_AGGRE_VALUE aggre_value; - tBTA_GATT_UNFMT unformat; - -} tBTA_GATT_READ_VAL; +}tBTA_GATTC_REG; typedef struct { UINT16 conn_id; tBTA_GATT_STATUS status; - tBTA_GATT_SRVC_ID srvc_id; - tBTA_GATT_ID char_id; - tBTA_GATT_ID descr_type; - tBTA_GATT_READ_VAL *p_value; -} tBTA_GATTC_READ; + UINT16 handle; + tBTA_GATT_UNFMT *p_value; +}tBTA_GATTC_READ; typedef struct { UINT16 conn_id; tBTA_GATT_STATUS status; - tBTA_GATT_SRVC_ID srvc_id; - tBTA_GATT_ID char_id; - tBTA_GATT_ID descr_type; -} tBTA_GATTC_WRITE; + UINT16 handle; +}tBTA_GATTC_WRITE; typedef struct { UINT16 conn_id; @@ -326,8 +311,10 @@ typedef struct { typedef struct { UINT16 conn_id; - tBTA_GATT_SRVC_ID service_uuid; -} tBTA_GATTC_SRVC_RES; + UINT16 start_handle; + UINT16 end_handle; + tBTA_GATT_ID service_uuid; +}tBTA_GATTC_SRVC_RES; typedef struct { UINT16 conn_id; @@ -355,8 +342,7 @@ typedef struct { typedef struct { UINT16 conn_id; BD_ADDR bda; - tBTA_GATTC_CHAR_ID char_id; - tBTA_GATT_ID descr_type; + UINT16 handle; UINT16 len; UINT8 value[BTA_GATT_MAX_ATTR_LEN]; BOOLEAN is_notify; @@ -367,14 +353,12 @@ typedef struct { BOOLEAN congested; /* congestion indicator */ } tBTA_GATTC_CONGEST; -// btla-specific ++ typedef struct { tBTA_GATT_STATUS status; tBTA_GATTC_IF client_if; UINT16 conn_id; BD_ADDR remote_bda; -} tBTA_GATTC_OPEN_CLOSE; -// btla-specific -- +}tBTA_GATTC_OPEN_CLOSE; typedef struct { tBTA_GATTC_IF client_if; @@ -395,6 +379,8 @@ typedef struct { BD_ADDR remote_bda; } tBTA_GATTC_DISCONNECT; + + typedef union { tBTA_GATT_STATUS status; @@ -541,33 +527,26 @@ typedef struct { typedef struct { tBTA_GATTS_IF server_if; tBTA_GATT_STATUS status; -// btla-specific ++ tBT_UUID uuid; -// btla-specific -- -} tBTA_GATTS_REG_OPER; +}tBTA_GATTS_REG_OPER; typedef struct { tBTA_GATTS_IF server_if; UINT16 service_id; -// btla-specific ++ UINT16 svc_instance; BOOLEAN is_primary; tBTA_GATT_STATUS status; tBT_UUID uuid; -// btla-specific -- -} tBTA_GATTS_CREATE; +}tBTA_GATTS_CREATE; typedef struct { tBTA_GATTS_IF server_if; UINT16 service_id; UINT16 attr_id; tBTA_GATT_STATUS status; -// btla-specific ++ tBT_UUID char_uuid; -// btla-specific -- -} tBTA_GATTS_ADD_RESULT; - +}tBTA_GATTS_ADD_RESULT; typedef struct{ tBTA_GATTS_IF server_if; UINT16 service_id; @@ -614,7 +593,6 @@ typedef struct { tBTA_GATT_STATUS status; tBTA_GATTS_IF server_if; } tBTA_GATTS_CANCEL_OPEN; - /* GATTS callback data */ typedef union { tBTA_GATTS_REG_OPER reg_oper; @@ -648,6 +626,41 @@ typedef void (tBTA_GATTS_ENB_CBACK)(tBTA_GATT_STATUS status); /* Server callback function */ typedef void (tBTA_GATTS_CBACK)(tBTA_GATTS_EVT event, tBTA_GATTS *p_data); +typedef struct +{ + tBT_UUID uuid; + BOOLEAN is_primary; + UINT16 handle; + UINT16 s_handle; + UINT16 e_handle; + list_t *characteristics; /* list of tBTA_GATTC_CHARACTERISTIC */ + list_t *included_svc; /* list of tBTA_GATTC_INCLUDED_SVC */ +} __attribute__((packed)) tBTA_GATTC_SERVICE; + +typedef struct +{ + tBT_UUID uuid; + UINT16 handle; + tBTA_GATT_CHAR_PROP properties; + tBTA_GATTC_SERVICE *service; /* owning service*/ + list_t *descriptors; /* list of tBTA_GATTC_DESCRIPTOR */ +} __attribute__((packed)) tBTA_GATTC_CHARACTERISTIC; + +typedef struct +{ + tBT_UUID uuid; + UINT16 handle; + tBTA_GATTC_CHARACTERISTIC *characteristic; /* owning characteristic */ +} __attribute__((packed)) tBTA_GATTC_DESCRIPTOR; + +typedef struct +{ + tBT_UUID uuid; + UINT16 handle; + UINT16 incl_srvc_s_handle; + tBTA_GATTC_SERVICE *owning_service; /* owning service*/ + tBTA_GATTC_SERVICE *included_service; +} __attribute__((packed)) tBTA_GATTC_INCLUDED_SVC; /***************************************************************************** ** External Function Declarations @@ -770,175 +783,114 @@ extern void BTA_GATTC_ServiceSearchRequest(UINT16 conn_id, tBT_UUID *p_srvc_uuid /******************************************************************************* ** -** Function BTA_GATTC_GetFirstChar +** Function BTA_GATTC_GetServices ** -** Description This function is called to find the first charatceristic of the -** service on the given server. +** Description This function is called to find the services on the given server. ** ** Parameters conn_id: connection ID which identify the server. -** p_srvc_id: the service ID of which the characteristic is belonged to. -** p_char_uuid_cond: Characteristic UUID, if NULL find the first available -** characteristic. -** p_char_result: output parameter which will store the GATT -** characteristic ID. -** p_property: output parameter to carry the characteristic property. ** -** Returns returns status. +** Returns returns list_t of tBTA_GATTC_SERVICE or NULL. ** *******************************************************************************/ -extern tBTA_GATT_STATUS BTA_GATTC_GetFirstChar (UINT16 conn_id, - tBTA_GATT_SRVC_ID *p_srvc_id, - tBT_UUID *p_char_uuid_cond, - tBTA_GATTC_CHAR_ID *p_char_result, - tBTA_GATT_CHAR_PROP *p_property); +extern const list_t* BTA_GATTC_GetServices(UINT16 conn_id); /******************************************************************************* ** -** Function BTA_GATTC_GetNextChar +** Function BTA_GATTC_GetCharacteristic ** -** Description This function is called to find the next charatceristic of the -** service on the given server. +** Description This function is called to find the characteristic on the given server. ** ** Parameters conn_id: connection ID which identify the server. -** p_start_char_id: start the characteristic search from the next record -** after the one identified by char_id. -** p_char_uuid_cond: Characteristic UUID, if NULL find the first available -** characteristic. -** p_char_result: output parameter which will store the GATT -** characteristic ID. -** p_property: output parameter, characteristic property. +** handle: characteristic handle ** -** Returns returns status. +** Returns returns pointer to tBTA_GATTC_CHARACTERISTIC or NULL. ** *******************************************************************************/ -extern tBTA_GATT_STATUS BTA_GATTC_GetNextChar (UINT16 conn_id, - tBTA_GATTC_CHAR_ID *p_start_char_id, - tBT_UUID *p_char_uuid_cond, - tBTA_GATTC_CHAR_ID *p_char_result, - tBTA_GATT_CHAR_PROP *p_property); +extern const tBTA_GATTC_CHARACTERISTIC* BTA_GATTC_GetCharacteristic(UINT16 conn_id, UINT16 handle); /******************************************************************************* ** -** Function BTA_GATTC_GetFirstCharDescr +** Function BTA_GATTC_GetDescriptor ** -** Description This function is called to find the first charatceristic descriptor of the -** charatceristic on the given server. +** Description This function is called to find the characteristic on the given server. ** ** Parameters conn_id: connection ID which identify the server. -** p_char_id: the characteristic ID of which the descriptor is belonged to. -** p_descr_uuid_cond: Characteristic Descr UUID, if NULL find the first available -** characteristic. -** p_descr_result: output parameter which will store the GATT -** characteristic descriptor ID. +** handle: descriptor handle ** -** Returns returns status. +** Returns returns pointer to tBTA_GATTC_DESCRIPTOR or NULL. ** *******************************************************************************/ -extern tBTA_GATT_STATUS BTA_GATTC_GetFirstCharDescr (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id, - tBT_UUID *p_descr_uuid_cond, - tBTA_GATTC_CHAR_DESCR_ID *p_descr_result); +extern const tBTA_GATTC_DESCRIPTOR* BTA_GATTC_GetDescriptor(UINT16 conn_id, UINT16 handle); + +extern void BTA_GATTC_GetServiceWithUUID(UINT16 conn_id, tBT_UUID *svc_uuid, + btgatt_db_element_t **db, int *count); + +extern void BTA_GATTC_GetAllChar(UINT16 conn_id, UINT16 start_handle, UINT16 end_handle, + btgatt_db_element_t **db, int *count); + +extern void BTA_GATTC_GetAllDescriptor(UINT16 conn_id, UINT16 char_handle, + btgatt_db_element_t **db, int *count); + +extern void BTA_GATTC_GetCharByUUID(UINT16 conn_id, UINT16 start_handle, UINT16 end_handle, tBT_UUID char_uuid, + btgatt_db_element_t **db, int *count); + +extern void BTA_GATTC_GetDescrByUUID(UINT16 conn_id, uint16_t start_handle, uint16_t end_handle, + tBT_UUID char_uuid, tBT_UUID descr_uuid, + btgatt_db_element_t **db, int *count); + +extern void BTA_GATTC_GetDescrByCharHandle(UINT16 conn_id, UINT16 char_handle, tBT_UUID descr_uuid, + btgatt_db_element_t **db, int *count); + +extern void BTA_GATTC_GetIncludeService(UINT16 conn_id, UINT16 start_handle, UINT16 end_handle, + tBT_UUID *incl_uuid, btgatt_db_element_t **db, int *count); + +extern void BTA_GATTC_GetDBSize(UINT16 conn_id, UINT16 start_handle, UINT16 end_handle, int *count); + +extern void BTA_GATTC_GetDBSizeByType(UINT16 conn_id, bt_gatt_db_attribute_type_t type, + UINT16 start_handle, UINT16 end_handle, UINT16 char_handle, int *count); /******************************************************************************* ** -** Function BTA_GATTC_GetNextCharDescr +** Function BTA_GATTC_GetGattDb ** -** Description This function is called to find the next charatceristic of the -** service on the given server. +** Description This function is called to get gatt db. ** ** Parameters conn_id: connection ID which identify the server. -** p_start_descr_id: start the characteristic search from the next record -** after the one identified by p_start_descr_id. -** p_descr_uuid_cond: Characteristic descriptor UUID, if NULL find -** the first available characteristic descriptor. -** p_descr_result: output parameter which will store the GATT -** characteristic descriptor ID. -** -** Returns returns status. +** db: output parameter which will contain gatt db copy. +** Caller is responsible for freeing it. +** count: number of elements in db. ** *******************************************************************************/ -extern tBTA_GATT_STATUS BTA_GATTC_GetNextCharDescr (UINT16 conn_id, - tBTA_GATTC_CHAR_DESCR_ID *p_start_descr_id, - tBT_UUID *p_descr_uuid_cond, - tBTA_GATTC_CHAR_DESCR_ID *p_descr_result); - - -/******************************************************************************* -** -** Function BTA_GATTC_GetFirstIncludedService -** -** Description This function is called to find the first included service of the -** service on the given server. -** -** Parameters conn_id: connection ID which identify the server. -** p_srvc_id: the service ID of which the included service is belonged to. -** p_uuid_cond: include service UUID, if NULL find the first available -** included service. -** p_result: output parameter which will store the GATT ID -** of the included service found. -** -** Returns returns status. -** -*******************************************************************************/ -extern tBTA_GATT_STATUS BTA_GATTC_GetFirstIncludedService(UINT16 conn_id, - tBTA_GATT_SRVC_ID *p_srvc_id, - tBT_UUID *p_uuid_cond, - tBTA_GATTC_INCL_SVC_ID *p_result); - -/******************************************************************************* -** -** Function BTA_GATTC_GetNextIncludedService -** -** Description This function is called to find the next included service of the -** service on the given server. -** -** Parameters conn_id: connection ID which identify the server. -** p_start_id: start the search from the next record -** after the one identified by p_start_id. -** p_uuid_cond: Included service UUID, if NULL find the first available -** included service. -** p_result: output parameter which will store the GATT ID -** of the included service found. -** -** Returns returns status. -** -*******************************************************************************/ -extern tBTA_GATT_STATUS BTA_GATTC_GetNextIncludedService(UINT16 conn_id, - tBTA_GATTC_INCL_SVC_ID *p_start_id, - tBT_UUID *p_uuid_cond, - tBTA_GATTC_INCL_SVC_ID *p_result); +extern void BTA_GATTC_GetGattDb(UINT16 conn_id, UINT16 start_handle, UINT16 end_handle, + btgatt_db_element_t **db, int *count); /******************************************************************************* ** ** Function BTA_GATTC_ReadCharacteristic ** -** Description This function is called to read a service's characteristics of -** the given characteritisc ID. +** Description This function is called to read a characteristics value ** -** Parameters conn_id - connection ID. -** p_char_id - characteritic ID to read. +** Parameters conn_id - connectino ID. +** handle - characteritic handle to read. ** ** Returns None ** *******************************************************************************/ -extern void BTA_GATTC_ReadCharacteristic (UINT16 conn_id, - tBTA_GATTC_CHAR_ID *p_char_id, - tBTA_GATT_AUTH_REQ auth_req); +void BTA_GATTC_ReadCharacteristic(UINT16 conn_id, UINT16 handle, tBTA_GATT_AUTH_REQ auth_req); /******************************************************************************* ** ** Function BTA_GATTC_ReadCharDescr ** -** Description This function is called to read a characteristics descriptor. +** Description This function is called to read a descriptor value. ** ** Parameters conn_id - connection ID. -** p_char_descr_id - characteritic descriptor ID to read. +** handle - descriptor handle to read. ** ** Returns None ** *******************************************************************************/ -extern void BTA_GATTC_ReadCharDescr (UINT16 conn_id, - tBTA_GATTC_CHAR_DESCR_ID *p_char_descr_id, - tBTA_GATT_AUTH_REQ auth_req); +void BTA_GATTC_ReadCharDescr (UINT16 conn_id, UINT16 handle, tBTA_GATT_AUTH_REQ auth_req); /******************************************************************************* ** @@ -947,40 +899,40 @@ extern void BTA_GATTC_ReadCharDescr (UINT16 conn_id, ** Description This function is called to write characteristic value. ** ** Parameters conn_id - connection ID. -** p_char_id - characteristic ID to write. -** write_type - type of write. +** handle - characteristic handle to write. +** write_type - type of write. ** len: length of the data to be written. ** p_value - the value to be written. ** ** Returns None ** *******************************************************************************/ -extern void BTA_GATTC_WriteCharValue (UINT16 conn_id, - tBTA_GATTC_CHAR_ID *p_char_id, - tBTA_GATTC_WRITE_TYPE write_type, - UINT16 len, - UINT8 *p_value, - tBTA_GATT_AUTH_REQ auth_req); +void BTA_GATTC_WriteCharValue ( UINT16 conn_id, + UINT16 handle, + tBTA_GATTC_WRITE_TYPE write_type, + UINT16 len, + UINT8 *p_value, + tBTA_GATT_AUTH_REQ auth_req); /******************************************************************************* ** ** Function BTA_GATTC_WriteCharDescr ** -** Description This function is called to write characteristic descriptor value. +** Description This function is called to write descriptor value. ** ** Parameters conn_id - connection ID -** p_char_descr_id - characteristic descriptor ID to write. -** write_type - type of write. +** handle - descriptor handle to write. +** write_type - type of write. ** p_value - the value to be written. ** ** Returns None ** *******************************************************************************/ -extern void BTA_GATTC_WriteCharDescr (UINT16 conn_id, - tBTA_GATTC_CHAR_DESCR_ID *p_char_descr_id, - tBTA_GATTC_WRITE_TYPE write_type, - tBTA_GATT_UNFMT *p_data, - tBTA_GATT_AUTH_REQ auth_req); +void BTA_GATTC_WriteCharDescr (UINT16 conn_id, + UINT16 handle, + tBTA_GATTC_WRITE_TYPE write_type, + tBTA_GATT_UNFMT *p_data, + tBTA_GATT_AUTH_REQ auth_req); /******************************************************************************* ** @@ -989,12 +941,12 @@ extern void BTA_GATTC_WriteCharDescr (UINT16 conn_id, ** Description This function is called to send handle value confirmation. ** ** Parameters conn_id - connection ID. -** p_char_id - characteristic ID to confrim. +** handle - characteristic handle to confirm. ** ** Returns None ** *******************************************************************************/ -extern void BTA_GATTC_SendIndConfirm (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char_id); +extern void BTA_GATTC_SendIndConfirm (UINT16 conn_id, UINT16 handle); /******************************************************************************* ** @@ -1002,17 +954,16 @@ extern void BTA_GATTC_SendIndConfirm (UINT16 conn_id, tBTA_GATTC_CHAR_ID *p_char ** ** Description This function is called to register for notification of a service. ** -** Parameters client_if - client interface. -** remote_bda - target GATT server. -** p_char_id - pointer to GATT characteristic ID. +** Parameters client_if - client interface. +** remote_bda - target GATT server. +** handle - GATT characteristic handle. ** ** Returns OK if registration succeed, otherwise failed. ** *******************************************************************************/ extern tBTA_GATT_STATUS BTA_GATTC_RegisterForNotifications (tBTA_GATTC_IF client_if, - BD_ADDR remote_bda, - tBTA_GATTC_CHAR_ID *p_char_id); - + BD_ADDR remote_bda, + UINT16 handle); /******************************************************************************* ** @@ -1022,14 +973,14 @@ extern tBTA_GATT_STATUS BTA_GATTC_RegisterForNotifications (tBTA_GATTC_IF c ** ** Parameters client_if - client interface. ** remote_bda - target GATT server. -** p_char_id - pointer to a GATT characteristic ID. +** handle - GATT characteristic handle. ** ** Returns OK if deregistration succeed, otherwise failed. ** *******************************************************************************/ extern tBTA_GATT_STATUS BTA_GATTC_DeregisterForNotifications (tBTA_GATTC_IF client_if, - BD_ADDR remote_bda, - tBTA_GATTC_CHAR_ID *p_char_id); + BD_ADDR remote_bda, + UINT16 handle); /******************************************************************************* ** @@ -1038,16 +989,16 @@ extern tBTA_GATT_STATUS BTA_GATTC_DeregisterForNotifications (tBTA_GATTC_IF ** Description This function is called to prepare write a characteristic value. ** ** Parameters conn_id - connection ID. -** p_char_id - GATT characteritic ID of the service. +** handle - GATT characteritic handle. ** offset - offset of the write value. -** len: length of the data to be written. +** len - length of the data to be written. ** p_value - the value to be written. ** ** Returns None ** *******************************************************************************/ extern void BTA_GATTC_PrepareWrite (UINT16 conn_id, - tBTA_GATTC_CHAR_ID *p_char_id, + UINT16 handle, UINT16 offset, UINT16 len, UINT8 *p_value, @@ -1069,7 +1020,7 @@ extern void BTA_GATTC_PrepareWrite (UINT16 conn_id, ** *******************************************************************************/ extern void BTA_GATTC_PrepareWriteCharDescr (UINT16 conn_id, - tBTA_GATTC_CHAR_DESCR_ID *p_char_descr_id, + UINT16 handle, UINT16 offset, tBTA_GATT_UNFMT *p_data, tBTA_GATT_AUTH_REQ auth_req); @@ -1360,9 +1311,9 @@ extern void BTA_GATTS_StopService(UINT16 service_id); ** *******************************************************************************/ extern void BTA_GATTS_HandleValueIndication (UINT16 conn_id, UINT16 attr_id, - UINT16 data_len, - UINT8 *p_data, - BOOLEAN need_confirm); + UINT16 data_len, + UINT8 *p_data, + BOOLEAN need_confirm); /******************************************************************************* ** diff --git a/tools/sdk/include/bluedroid/bta_gattc_int.h b/tools/sdk/include/bluedroid/bta_gattc_int.h index 6ea09ef8..2515cb52 100644 --- a/tools/sdk/include/bluedroid/bta_gattc_int.h +++ b/tools/sdk/include/bluedroid/bta_gattc_int.h @@ -58,12 +58,6 @@ enum { BTA_GATTC_OP_CMPL_EVT, BTA_GATTC_INT_DISCONN_EVT, - /* for cache loading/saving */ - BTA_GATTC_START_CACHE_EVT, - BTA_GATTC_CI_CACHE_OPEN_EVT, - BTA_GATTC_CI_CACHE_LOAD_EVT, - BTA_GATTC_CI_CACHE_SAVE_EVT, - BTA_GATTC_INT_START_IF_EVT, BTA_GATTC_API_REG_EVT, BTA_GATTC_API_DEREG_EVT, @@ -74,6 +68,8 @@ enum { }; typedef UINT16 tBTA_GATTC_INT_EVT; +#define BTA_GATTC_SERVICE_CHANGED_LEN 4 + /* max client application GATTC can support */ #ifndef BTA_GATTC_CL_MAX #define BTA_GATTC_CL_MAX 3 // 32 @@ -95,7 +91,7 @@ typedef UINT16 tBTA_GATTC_INT_EVT; #endif #define BTA_GATTC_WRITE_PREPARE GATT_WRITE_PREPARE - +#define BTA_GATTC_INVALID_HANDLE 0 /* internal strucutre for GATTC register API */ typedef struct { @@ -125,17 +121,15 @@ typedef tBTA_GATTC_API_OPEN tBTA_GATTC_API_CANCEL_OPEN; typedef struct { BT_HDR hdr; tBTA_GATT_AUTH_REQ auth_req; - tBTA_GATT_SRVC_ID srvc_id; - tBTA_GATT_ID char_id; - tBTA_GATT_ID *p_descr_type; + UINT16 handle; + tBTA_GATTC_EVT cmpl_evt; } tBTA_GATTC_API_READ; typedef struct { BT_HDR hdr; tBTA_GATT_AUTH_REQ auth_req; - tBTA_GATT_SRVC_ID srvc_id; - tBTA_GATT_ID char_id; - tBTA_GATT_ID *p_descr_type; + UINT16 handle; + tBTA_GATTC_EVT cmpl_evt; tBTA_GATTC_WRITE_TYPE write_type; UINT16 offset; UINT16 len; @@ -149,8 +143,7 @@ typedef struct { typedef struct { BT_HDR hdr; - tBTA_GATT_SRVC_ID srvc_id; - tBTA_GATT_ID char_id; + UINT16 handle; } tBTA_GATTC_API_CONFIRM; typedef tGATT_CL_COMPLETE tBTA_GATTC_CMPL; @@ -171,8 +164,8 @@ typedef struct { BT_HDR hdr; tBTA_GATT_AUTH_REQ auth_req; UINT8 num_attr; - tBTA_GATTC_ATTR_ID *p_id_list; -} tBTA_GATTC_API_READ_MULTI; + UINT16 handles[GATT_MAX_READ_MULTI_HANDLES]; +}tBTA_GATTC_API_READ_MULTI; typedef struct { BT_HDR hdr; @@ -215,9 +208,6 @@ typedef union { tBTA_GATTC_API_READ_MULTI api_read_multi; tBTA_GATTC_API_CFG_MTU api_mtu; tBTA_GATTC_OP_CMPL op_cmpl; - tBTA_GATTC_CI_EVT ci_open; - tBTA_GATTC_CI_EVT ci_save; - tBTA_GATTC_CI_LOAD ci_load; tBTA_GATTC_INT_CONN int_conn; tBTA_GATTC_ENC_CMPL enc_cmpl; @@ -230,43 +220,13 @@ typedef union { /* GATT server cache on the client */ -typedef union { - UINT8 uuid128[LEN_UUID_128]; - UINT16 uuid16; -} tBTA_GATTC_UUID; - -typedef struct gattc_attr_cache { - tBTA_GATTC_UUID *p_uuid; - struct gattc_attr_cache *p_next; - UINT16 uuid_len; - UINT16 attr_handle; - UINT8 inst_id; - tBTA_GATT_CHAR_PROP property; /* if characteristic, it is char property; - if included service, flag primary, - if descriptor, not used */ - tBTA_GATTC_ATTR_TYPE attr_type; -// btla-specific ++ -} __attribute__((packed)) tBTA_GATTC_CACHE_ATTR; -// btla-specific -- - -typedef struct gattc_svc_cache { - tBTA_GATT_SRVC_ID service_uuid; - tBTA_GATTC_CACHE_ATTR *p_attr; - tBTA_GATTC_CACHE_ATTR *p_last_attr; - UINT16 s_handle; - UINT16 e_handle; - struct gattc_svc_cache *p_next; - tBTA_GATTC_CACHE_ATTR *p_cur_char; -// btla-specific ++ -} __attribute__((packed)) tBTA_GATTC_CACHE; -// btla-specific -- - typedef struct { tBT_UUID uuid; UINT16 s_handle; UINT16 e_handle; + // this field is set only for characteristic + UINT16 char_decl_handle; BOOLEAN is_primary; - UINT8 srvc_inst_id; tBTA_GATT_CHAR_PROP property; } tBTA_GATTC_ATTR_REC; @@ -299,11 +259,7 @@ typedef struct { UINT8 state; - tBTA_GATTC_CACHE *p_srvc_cache; - tBTA_GATTC_CACHE *p_cur_srvc; - fixed_queue_t *cache_buffer; /* buffer queue used for storing the cache data */ - UINT8 *p_free; /* starting point to next available byte */ - UINT16 free_byte; /* number of available bytes in server cache buffer */ + list_t *p_srvc_cache; /* list of tBTA_GATTC_SERVICE */ UINT8 update_count; /* indication received */ UINT8 num_clcb; /* number of associated CLCB */ @@ -314,7 +270,7 @@ typedef struct { UINT8 next_avail_idx; UINT8 total_srvc; UINT8 total_char; - + UINT16 total_attr; UINT8 srvc_hdl_chg; /* service handle change indication pending */ UINT16 attr_index; /* cahce NV saving/loading attribute index */ @@ -328,8 +284,8 @@ typedef struct { typedef struct { BOOLEAN in_use; BD_ADDR remote_bda; - tBTA_GATTC_CHAR_ID char_id; -} tBTA_GATTC_NOTIF_REG; + UINT16 handle; +}tBTA_GATTC_NOTIF_REG; typedef struct { tBTA_GATTC_CBACK *p_cback; @@ -403,11 +359,7 @@ typedef struct { tBTA_GATTC_CLCB clcb[BTA_GATTC_CLCB_MAX]; tBTA_GATTC_SERV known_server[BTA_GATTC_KNOWN_SR_MAX]; -#if (SDP_INCLUDED == TRUE) - tSDP_DISCOVERY_DB *p_sdp_db; -#endif ///SDP_INCLUDED == TRUE - UINT16 sdp_conn_id; -} tBTA_GATTC_CB; +}tBTA_GATTC_CB; typedef enum { SERVICE_CHANGE_CCC_WRITTEN_SUCCESS = 0, @@ -474,10 +426,7 @@ extern void bta_gattc_confirm(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); extern void bta_gattc_execute(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); extern void bta_gattc_read_multi(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); extern void bta_gattc_ci_open(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); -extern void bta_gattc_ci_load(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); extern void bta_gattc_ci_close(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); -extern void bta_gattc_ci_save(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); -extern void bta_gattc_cache_open(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); extern void bta_gattc_ignore_op_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); extern void bta_gattc_restart_discover(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_msg); extern void bta_gattc_init_bk_conn(tBTA_GATTC_API_OPEN *p_data, tBTA_GATTC_RCB *p_clreg); @@ -509,20 +458,13 @@ extern tBTA_GATTC_CLCB *bta_gattc_find_int_disconn_clcb(tBTA_GATTC_DATA *p_msg); extern BOOLEAN bta_gattc_enqueue(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); -extern UINT16 bta_gattc_id2handle(tBTA_GATTC_SERV *p_srcb, tBTA_GATT_SRVC_ID *p_service_id, tBTA_GATT_ID *p_char_id, tBTA_GATT_ID *p_descr_uuid); -extern BOOLEAN bta_gattc_handle2id(tBTA_GATTC_SERV *p_srcb, UINT16 handle, tBTA_GATT_SRVC_ID *service_id, tBTA_GATT_ID *char_id, tBTA_GATT_ID *p_type); -extern BOOLEAN bta_gattc_uuid_compare (tBT_UUID *p_src, tBT_UUID *p_tar, BOOLEAN is_precise); -extern void bta_gattc_pack_attr_uuid(tBTA_GATTC_CACHE_ATTR *p_attr, tBT_UUID *p_uuid); +extern BOOLEAN bta_gattc_uuid_compare (const tBT_UUID *p_src, const tBT_UUID *p_tar, BOOLEAN is_precise); extern BOOLEAN bta_gattc_check_notif_registry(tBTA_GATTC_RCB *p_clreg, tBTA_GATTC_SERV *p_srcb, tBTA_GATTC_NOTIFY *p_notify); -extern tBTA_GATT_STATUS bta_gattc_pack_read_cb_data(tBTA_GATTC_SERV *p_srcb, tBT_UUID *p_descr_uuid, tGATT_VALUE *p_attr, tBTA_GATT_READ_VAL *p_value); extern BOOLEAN bta_gattc_mark_bg_conn (tBTA_GATTC_IF client_if, BD_ADDR_PTR remote_bda, BOOLEAN add, BOOLEAN is_listen); extern BOOLEAN bta_gattc_check_bg_conn (tBTA_GATTC_IF client_if, BD_ADDR remote_bda, UINT8 role); extern UINT8 bta_gattc_num_reg_app(void); -extern void bta_gattc_clear_notif_registration(UINT16 conn_id); -extern tBTA_GATTC_SERV *bta_gattc_find_srvr_cache(BD_ADDR bda); -extern BOOLEAN bta_gattc_charid_compare(tBTA_GATTC_CHAR_ID *p_src, tBTA_GATTC_CHAR_ID *p_tar); -extern BOOLEAN bta_gattc_srvcid_compare(tBTA_GATT_SRVC_ID *p_src, tBTA_GATT_SRVC_ID *p_tar); -extern void bta_gattc_cpygattid(tBTA_GATT_ID *p_des, tBTA_GATT_ID *p_src); +extern void bta_gattc_clear_notif_registration(tBTA_GATTC_SERV *p_srcb, UINT16 conn_id, UINT16 start_handle, UINT16 end_handle); +extern tBTA_GATTC_SERV * bta_gattc_find_srvr_cache(BD_ADDR bda); /* discovery functions */ extern void bta_gattc_disc_res_cback (UINT16 conn_id, tGATT_DISC_TYPE disc_type, tGATT_DISC_RES *p_data); @@ -530,17 +472,41 @@ extern void bta_gattc_disc_cmpl_cback (UINT16 conn_id, tGATT_DISC_TYPE disc_type extern tBTA_GATT_STATUS bta_gattc_discover_procedure(UINT16 conn_id, tBTA_GATTC_SERV *p_server_cb, UINT8 disc_type); extern tBTA_GATT_STATUS bta_gattc_discover_pri_service(UINT16 conn_id, tBTA_GATTC_SERV *p_server_cb, UINT8 disc_type); extern void bta_gattc_search_service(tBTA_GATTC_CLCB *p_clcb, tBT_UUID *p_uuid); -extern tBTA_GATT_STATUS bta_gattc_query_cache(UINT16 conn_id, UINT8 query_type, tBTA_GATT_SRVC_ID *p_srvc_id, - tBTA_GATT_ID *p_start_rec, tBT_UUID *p_uuid_cond, - tBTA_GATT_ID *p_output, void *p_param); -extern tBTA_GATT_STATUS bta_gattc_init_cache(tBTA_GATTC_SERV *p_srvc_cb); -extern void bta_gattc_rebuild_cache(tBTA_GATTC_SERV *p_srcv, UINT16 num_attr, tBTA_GATTC_NV_ATTR *p_attr, UINT16 attr_index); -extern BOOLEAN bta_gattc_cache_save(tBTA_GATTC_SERV *p_srvc_cb, UINT16 conn_id); +extern const list_t* bta_gattc_get_services(UINT16 conn_id); +extern const tBTA_GATTC_SERVICE* bta_gattc_get_service_for_handle(UINT16 conn_id, UINT16 handle); +tBTA_GATTC_CHARACTERISTIC* bta_gattc_get_characteristic_srcb(tBTA_GATTC_SERV *p_srcb, UINT16 handle); +extern tBTA_GATTC_CHARACTERISTIC* bta_gattc_get_characteristic(UINT16 conn_id, UINT16 handle); +extern tBTA_GATTC_DESCRIPTOR* bta_gattc_get_descriptor(UINT16 conn_id, UINT16 handle); +extern void bta_gattc_get_db_size_handle(UINT16 conn_id, UINT16 start_handle, UINT16 end_handle, int *count); +extern void bta_gattc_get_db_size_with_type_handle(UINT16 conn_id, bt_gatt_db_attribute_type_t type, + UINT16 start_handle, UINT16 end_handle, UINT16 char_handle, int *count); +extern void bta_gattc_get_service_with_uuid(UINT16 conn_id, tBT_UUID *svc_uuid, + btgatt_db_element_t **svc_db, + int *count); +extern void bta_gattc_get_db_with_opration(UINT16 conn_id, + bt_gatt_get_db_op_t op, + UINT16 char_handle, + tBT_UUID *incl_uuid, + tBT_UUID *char_uuid, + tBT_UUID *descr_uuid, + UINT16 start_handle, UINT16 end_handle, + btgatt_db_element_t **char_db, + int *count); + +extern void bta_gattc_get_gatt_db(UINT16 conn_id, UINT16 start_handle, UINT16 end_handle, btgatt_db_element_t **db, int *count); + +extern tBTA_GATT_STATUS bta_gattc_init_cache(tBTA_GATTC_SERV *p_srvc_cb); +extern void bta_gattc_rebuild_cache(tBTA_GATTC_SERV *p_srcv, UINT16 num_attr, tBTA_GATTC_NV_ATTR *attr); +extern void bta_gattc_cache_save(tBTA_GATTC_SERV *p_srvc_cb, UINT16 conn_id); +extern void bta_gattc_reset_discover_st(tBTA_GATTC_SERV *p_srcb, tBTA_GATT_STATUS status); extern tBTA_GATTC_CONN *bta_gattc_conn_alloc(BD_ADDR remote_bda); extern tBTA_GATTC_CONN *bta_gattc_conn_find(BD_ADDR remote_bda); extern tBTA_GATTC_CONN *bta_gattc_conn_find_alloc(BD_ADDR remote_bda); extern BOOLEAN bta_gattc_conn_dealloc(BD_ADDR remote_bda); +extern bool bta_gattc_cache_load(tBTA_GATTC_CLCB *p_clcb); +extern void bta_gattc_cache_reset(BD_ADDR server_bda); + #endif /* BTA_GATTC_INT_H */ diff --git a/tools/sdk/include/bluedroid/btc_ble_storage.h b/tools/sdk/include/bluedroid/btc_ble_storage.h index 111f1f0a..0d4d43e7 100644 --- a/tools/sdk/include/bluedroid/btc_ble_storage.h +++ b/tools/sdk/include/bluedroid/btc_ble_storage.h @@ -23,52 +23,25 @@ #define BTC_LE_LOCAL_KEY_DHK (1<<2) #define BTC_LE_LOCAL_KEY_ER (1<<3) +#define BTC_BLE_STORAGE_DEV_TYPE_STR "DevType" +#define BTC_BLE_STORAGE_ADDR_TYPE_STR "AddrType" +#define BTC_BLE_STORAGE_LINK_KEY_STR "LinkKey" +#define BTC_BLE_STORAGE_LE_KEY_PENC_STR "LE_KEY_PENC" +#define BTC_BLE_STORAGE_LE_KEY_PID_STR "LE_KEY_PID" +#define BTC_BLE_STORAGE_LE_KEY_PCSRK_STR "LE_KEY_PCSRK" +#define BTC_BLE_STORAGE_LE_KEY_LENC_STR "LE_KEY_LENC" +#define BTC_BLE_STORAGE_LE_KEY_LID_STR "LE_KEY_LID" +#define BTC_BLE_STORAGE_LE_KEY_LCSRK_STR "LE_KEY_LCSRK" + +#define BTC_BLE_STORAGE_LOCAL_ADAPTER_STR "Adapter" +#define BTC_BLE_STORAGE_LE_LOCAL_KEY_IR_STR "LE_LOCAL_KEY_IR" +#define BTC_BLE_STORAGE_LE_LOCAL_KEY_IRK_STR "LE_LOCAL_KEY_IRK" +#define BTC_BLE_STORAGE_LE_LOCAL_KEY_DHK_STR "LE_LOCAL_KEY_DHK" +#define BTC_BLE_STORAGE_LE_LOCAL_KEY_ER_STR "LE_LOCAL_KEY_ER" + /************************************************************************************ ** Local type definitions ************************************************************************************/ -typedef struct -{ - uint32_t num_devices; - bt_bdaddr_t devices[BTM_SEC_MAX_DEVICE_RECORDS]; -} btc_bonded_devices_t; - -typedef struct -{ - bool is_penc_key_rcvd; - tBTM_LE_PENC_KEYS penc_key; /* received peer encryption key */ - bool is_pcsrk_key_rcvd; - tBTM_LE_PCSRK_KEYS pcsrk_key; /* received peer device SRK */ - bool is_pid_key_rcvd; - tBTM_LE_PID_KEYS pid_key; /* peer device ID key */ - bool is_lenc_key_rcvd; - tBTM_LE_LENC_KEYS lenc_key; /* local encryption reproduction keys LTK = = d1(ER,DIV,0)*/ - bool is_lcsrk_key_rcvd; - tBTM_LE_LCSRK_KEYS lcsrk_key; /* local device CSRK = d1(ER,DIV,1)*/ - bool is_lidk_key_rcvd; /* local identity key received */ -} btc_dm_ble_cb_t; - -typedef struct -{ - bt_bdaddr_t static_bdaddr; - BD_ADDR bd_addr; - btc_dm_ble_cb_t ble; -} btc_dm_pairing_cb_t; - -typedef struct -{ - uint8_t ir[BT_OCTET16_LEN]; - uint8_t irk[BT_OCTET16_LEN]; - uint8_t dhk[BT_OCTET16_LEN]; -}btc_dm_local_key_id_t; - -typedef struct -{ - bool is_er_rcvd; - uint8_t er[BT_OCTET16_LEN]; - bool is_id_keys_rcvd; - btc_dm_local_key_id_t id_keys; /* ID kyes */ -}btc_dm_local_key_cb_t; - typedef struct { BT_OCTET16 sp_c; @@ -77,63 +50,37 @@ typedef struct } btc_dm_oob_cb_t; -extern btc_dm_pairing_cb_t pairing_cb; -extern btc_dm_local_key_cb_t ble_local_key_cb; -extern btc_bonded_devices_t bonded_devices; +void btc_storage_save(void); -bt_status_t btc_storage_load_bonded_ble_devices(void); +bt_status_t btc_storage_add_ble_bonding_key( bt_bdaddr_t *remote_bd_addr, char *key, uint8_t key_type, uint8_t key_length); -bt_status_t btc_get_bonded_ble_devices_list(esp_ble_bond_dev_t *bond_dev); - -bt_status_t btc_in_fetch_bonded_ble_devices(int add); - -void btc_dm_remove_ble_bonding_keys(void); - -bt_status_t btc_storage_add_ble_bonding_key( bt_bdaddr_t *remote_bd_addr, - char *key, - uint8_t key_type, - uint8_t key_length); - -bool btc_compare_le_key_value(const uint8_t key_type, const size_t key_len, const tBTA_LE_KEY_VALUE *key_vaule, - bt_bdaddr_t bd_addr); - -void btc_save_ble_bonding_keys(void); - -bt_status_t btc_in_fetch_bonded_ble_device(const char *remote_bd_addr, int add, - btc_bonded_devices_t *p_bonded_devices); - -bt_status_t btc_storage_get_ble_bonding_key(bt_bdaddr_t *remote_bd_addr, - uint8_t key_type, - char *key_value, - int key_length); - -bool btc_storage_compare_address_key_value(bt_bdaddr_t *remote_bd_addr, - uint8_t key_type, void *key_value, int key_length); -bt_status_t btc_storage_add_ble_local_key(char *key, - uint8_t key_type, - uint8_t key_length); +bt_status_t btc_storage_get_ble_bonding_key(bt_bdaddr_t *remote_bd_addr, uint8_t key_type, char *key_value, int key_length); bt_status_t btc_storage_remove_ble_bonding_keys(bt_bdaddr_t *remote_bd_addr); -bt_status_t btc_storage_clear_bond_devices(void); +bool btc_storage_compare_address_key_value(bt_bdaddr_t *remote_bd_addr, uint8_t key_type, void *key_value, int key_length); + +bt_status_t btc_storage_add_ble_local_key(char *key, uint8_t key_type, uint8_t key_length); bt_status_t btc_storage_remove_ble_local_keys(void); -bt_status_t btc_storage_get_ble_local_key(uint8_t key_type, - char *key_value, - int key_len); +bt_status_t btc_storage_get_ble_local_key(uint8_t key_type, char *key_value, int key_len); -bt_status_t btc_storage_get_remote_addr_type(bt_bdaddr_t *remote_bd_addr, - int *addr_type); +bt_status_t btc_storage_get_remote_addr_type(bt_bdaddr_t *remote_bd_addr, int *addr_type); + +bt_status_t btc_storage_set_remote_addr_type(bt_bdaddr_t *remote_bd_addr, uint8_t addr_type, bool flush); + +bt_status_t btc_storage_remove_remote_addr_type(bt_bdaddr_t *remote_bd_addr, bool flush); + +bt_status_t btc_storage_set_ble_dev_type(bt_bdaddr_t *bd_addr, bool flush); + +bt_status_t btc_storage_remove_ble_dev_type(bt_bdaddr_t *remote_bd_addr, bool flush); + +bt_status_t btc_storage_load_bonded_ble_devices(void); + +bt_status_t btc_storage_get_bonded_ble_devices_list(esp_ble_bond_dev_t *bond_dev, int dev_num); int btc_storage_get_num_ble_bond_devices(void); -bt_status_t btc_storage_set_remote_addr_type(bt_bdaddr_t *remote_bd_addr, - uint8_t addr_type); - -void btc_dm_load_ble_local_keys(void); - -void btc_dm_get_ble_local_keys(tBTA_DM_BLE_LOCAL_KEY_MASK *p_key_mask, BT_OCTET16 er, - tBTA_BLE_LOCAL_ID_KEYS *p_id_keys); #endif ///SMP_INCLUDED == TRUE -#endif ///__BTC_BLE_STORAGE_H__ \ No newline at end of file +#endif ///__BTC_BLE_STORAGE_H__ diff --git a/tools/sdk/include/bluedroid/btc_config.h b/tools/sdk/include/bluedroid/btc_config.h index 2367c53b..79f6137e 100644 --- a/tools/sdk/include/bluedroid/btc_config.h +++ b/tools/sdk/include/bluedroid/btc_config.h @@ -20,8 +20,6 @@ #include "bt_types.h" -#define BTC_LE_DEV_TYPE "DevType" - typedef struct btc_config_section_iter_t btc_config_section_iter_t; bool btc_config_init(void); @@ -46,7 +44,6 @@ const btc_config_section_iter_t *btc_config_section_end(void); const btc_config_section_iter_t *btc_config_section_next(const btc_config_section_iter_t *section); const char *btc_config_section_name(const btc_config_section_iter_t *section); -void btc_config_save(void); void btc_config_flush(void); int btc_config_clear(void); @@ -55,4 +52,7 @@ bool btc_get_address_type(const BD_ADDR bd_addr, int *p_addr_type); bool btc_compare_address_key_value(const char *section, char *key_type, void *key_value, int key_length); bool btc_get_device_type(const BD_ADDR bd_addr, int *p_device_type); +void btc_config_lock(void); +void btc_config_unlock(void); + #endif diff --git a/tools/sdk/include/bluedroid/btc_dm.h b/tools/sdk/include/bluedroid/btc_dm.h index e397d82b..44f4d84c 100644 --- a/tools/sdk/include/bluedroid/btc_dm.h +++ b/tools/sdk/include/bluedroid/btc_dm.h @@ -29,6 +29,45 @@ typedef union { tBTA_DM_SEC sec; } btc_dm_sec_args_t; +typedef struct +{ + bool is_penc_key_rcvd; + tBTM_LE_PENC_KEYS penc_key; /* received peer encryption key */ + bool is_pcsrk_key_rcvd; + tBTM_LE_PCSRK_KEYS pcsrk_key; /* received peer device SRK */ + bool is_pid_key_rcvd; + tBTM_LE_PID_KEYS pid_key; /* peer device ID key */ + bool is_lenc_key_rcvd; + tBTM_LE_LENC_KEYS lenc_key; /* local encryption reproduction keys LTK = = d1(ER,DIV,0)*/ + bool is_lcsrk_key_rcvd; + tBTM_LE_LCSRK_KEYS lcsrk_key; /* local device CSRK = d1(ER,DIV,1)*/ + bool is_lidk_key_rcvd; /* local identity key received */ +} btc_dm_ble_cb_t; + +typedef struct +{ + bt_bdaddr_t static_bdaddr; + BD_ADDR bd_addr; + btc_dm_ble_cb_t ble; +} btc_dm_pairing_cb_t; + +typedef struct +{ + uint8_t ir[BT_OCTET16_LEN]; + uint8_t irk[BT_OCTET16_LEN]; + uint8_t dhk[BT_OCTET16_LEN]; +} btc_dm_local_key_id_t; + +typedef struct +{ + bool is_er_rcvd; + uint8_t er[BT_OCTET16_LEN]; + bool is_id_keys_rcvd; + btc_dm_local_key_id_t id_keys; /* ID kyes */ +} btc_dm_local_key_cb_t; + + + // void btc_dm_call_handler(btc_msg_t *msg); void btc_dm_sec_evt(tBTA_DM_SEC_EVT event, tBTA_DM_SEC *data); void btc_dm_sec_cb_handler(btc_msg_t *msg); @@ -37,4 +76,11 @@ void btc_dm_sec_arg_deep_copy(btc_msg_t *msg, void *dst, void *src); bt_status_t btc_dm_enable_service(tBTA_SERVICE_ID service_id); bt_status_t btc_dm_disable_service(tBTA_SERVICE_ID service_id); +#if (SMP_INCLUDED == TRUE) +void btc_dm_load_ble_local_keys(void); + +void btc_dm_get_ble_local_keys(tBTA_DM_BLE_LOCAL_KEY_MASK *p_key_mask, BT_OCTET16 er, + tBTA_BLE_LOCAL_ID_KEYS *p_id_keys); +#endif + #endif /* __BTC_DM_H__ */ diff --git a/tools/sdk/include/bluedroid/btc_gap_ble.h b/tools/sdk/include/bluedroid/btc_gap_ble.h index b6da5360..8074c1b9 100644 --- a/tools/sdk/include/bluedroid/btc_gap_ble.h +++ b/tools/sdk/include/bluedroid/btc_gap_ble.h @@ -31,9 +31,12 @@ typedef enum { BTC_GAP_BLE_ACT_SET_PKT_DATA_LEN, BTC_GAP_BLE_ACT_SET_RAND_ADDRESS, BTC_GAP_BLE_ACT_CONFIG_LOCAL_PRIVACY, + BTC_GAP_BLE_ACT_UPDATE_WHITE_LIST, + BTC_GAP_BLE_ACT_SET_CONN_PARAMS, BTC_GAP_BLE_ACT_SET_DEV_NAME, BTC_GAP_BLE_ACT_CFG_ADV_DATA_RAW, BTC_GAP_BLE_ACT_CFG_SCAN_RSP_DATA_RAW, + BTC_GAP_BLE_ACT_READ_RSSI, BTC_GAP_BLE_SET_ENCRYPTION_EVT, BTC_GAP_BLE_SET_SECURITY_PARAM_EVT, BTC_GAP_BLE_SECURITY_RSP_EVT, @@ -41,8 +44,6 @@ typedef enum { BTC_GAP_BLE_CONFIRM_REPLY_EVT, BTC_GAP_BLE_DISCONNECT_EVT, BTC_GAP_BLE_REMOVE_BOND_DEV_EVT, - BTC_GAP_BLE_CLEAR_BOND_DEV_EVT, - BTC_GAP_BLE_GET_BOND_DEV_EVT, } btc_gap_ble_act_t; /* btc_ble_gap_args_t */ @@ -81,7 +82,25 @@ typedef union { //BTC_GAP_BLE_ACT_CONFIG_LOCAL_PRIVACY, struct cfg_local_privacy_args { bool privacy_enable; - } cfg_local_privacy; + } cfg_local_privacy; + //BTC_GAP_BLE_ACT_UPDATE_WHITE_LIST + struct update_white_list_args { + bool add_remove; + esp_bd_addr_t remote_bda; + }update_white_list; + //BTC_GAP_BLE_ACT_SET_CONN_PARAMS + struct set_conn_params_args { + esp_bd_addr_t bd_addr; + uint16_t min_conn_int; + uint16_t max_conn_int; + uint16_t slave_latency; + uint16_t supervision_tout; + }set_conn_params; + //BTC_GAP_BLE_ACT_SET_DEV_NAME, + struct set_dev_name_args { +#define ESP_GAP_DEVICE_NAME_MAX (32) + char device_name[ESP_GAP_DEVICE_NAME_MAX + 1]; + } set_dev_name; //BTC_GAP_BLE_ACT_CFG_ADV_DATA_RAW, struct config_adv_data_raw_args { uint8_t *raw_adv; @@ -127,11 +146,15 @@ typedef union { struct remove_bond_device_args { esp_bd_addr_t bd_addr; } remove_bond_device; + //BTC_GAP_BLE_ACT_READ_RSSI + struct read_rssi_args { + esp_bd_addr_t remote_addr; + } read_rssi; } btc_ble_gap_args_t; void btc_gap_ble_call_handler(btc_msg_t *msg); void btc_gap_ble_cb_handler(btc_msg_t *msg); - +void btc_get_whitelist_size(uint16_t *length); void btc_gap_ble_arg_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src); void btc_gap_ble_arg_deep_free(btc_msg_t *msg); void btc_gap_ble_cb_deep_free(btc_msg_t *msg); diff --git a/tools/sdk/include/bluedroid/btc_gattc.h b/tools/sdk/include/bluedroid/btc_gattc.h index d1e0e968..5087e5d2 100644 --- a/tools/sdk/include/bluedroid/btc_gattc.h +++ b/tools/sdk/include/bluedroid/btc_gattc.h @@ -27,13 +27,8 @@ typedef enum { BTC_GATTC_ACT_CLOSE, BTC_GATTC_ACT_CFG_MTU, BTC_GATTC_ACT_SEARCH_SERVICE, - BTC_GATTC_ACT_GET_FIRST_CHAR, - BTC_GATTC_ACT_GET_NEXT_CHAR, - BTC_GATTC_ACT_GET_FIRST_DESCR, - BTC_GATTC_ACT_GET_NEXT_DESCR, - BTC_GATTC_ACT_GET_FIRST_INCL_SERVICE, - BTC_GATTC_ACT_GET_NEXT_INCL_SERVICE, BTC_GATTC_ACT_READ_CHAR, + BTC_GATTC_ACT_READ_MULTIPLE_CHAR, BTC_GATTC_ACT_READ_CHAR_DESCR, BTC_GATTC_ACT_WRITE_CHAR, BTC_GATTC_ACT_WRITE_CHAR_DESCR, @@ -75,82 +70,67 @@ typedef union { bool filter_uuid_enable; esp_bt_uuid_t filter_uuid; } search_srvc; - //BTC_GATTC_ACT_GET_FIRST_CHAR, - struct get_first_char_arg { + //BTC_GATTC_ACT_GET_CHAR, + struct get_char_arg { uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - } get_first_char; - //BTC_GATTC_ACT_GET_NEXT_CHAR, - struct get_next_char_arg { + uint16_t handle; + } get_char; + //BTC_GATTC_ACT_GET_DESCR, + struct get_descr_arg { uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; - } get_next_char; - //BTC_GATTC_ACT_GET_FIRST_DESCR, - struct get_first_descr_arg { - uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; - } get_first_descr; - //BTC_GATTC_ACT_GET_NEXT_DESCR, - struct get_next_descr_arg { - uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; - esp_gatt_id_t descr_id; - } get_next_descr; + uint16_t handle; + } get_descr; //BTC_GATTC_ACT_GET_FIRST_INCL_SERVICE, struct get_first_incl_srvc_arg { uint16_t conn_id; - esp_gatt_srvc_id_t service_id; + uint16_t handle; } get_first_incl_srvc; //BTC_GATTC_ACT_GET_NEXT_INCL_SERVICE, struct get_next_incl_srvc_arg { uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - esp_gatt_srvc_id_t start_service_id; + uint16_t handle; } get_next_incl_srvc; //BTC_GATTC_ACT_READ_CHAR, struct read_char_arg { uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; + uint16_t handle; esp_gatt_auth_req_t auth_req; } read_char; + //BTC_GATTC_ACT_READ_MULTIPLE_CHAR + struct read_multiple_arg { + uint16_t conn_id; + uint8_t num_attr; + uint16_t handles[ESP_GATT_MAX_READ_MULTI_HANDLES]; + esp_gatt_auth_req_t auth_req; + } read_multiple; //BTC_GATTC_ACT_READ_CHAR_DESCR, struct read_descr_arg { uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; - esp_gatt_id_t descr_id; + uint16_t handle; esp_gatt_auth_req_t auth_req; } read_descr; //BTC_GATTC_ACT_WRITE_CHAR, struct write_char_arg { uint16_t conn_id; uint16_t value_len; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; + uint16_t handle; uint8_t *value; - esp_gatt_write_type_t write_type; + esp_gatt_write_type_t write_type; esp_gatt_auth_req_t auth_req; } write_char; //BTC_GATTC_ACT_WRITE_CHAR_DESCR, struct write_descr_arg { uint16_t conn_id; uint16_t value_len; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; - esp_gatt_id_t descr_id; + uint16_t handle; uint8_t *value; - esp_gatt_write_type_t write_type; + esp_gatt_write_type_t write_type; esp_gatt_auth_req_t auth_req; } write_descr; //BTC_GATTC_ACT_PREPARE_WRITE, struct prep_write_arg { uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; + uint16_t handle; uint16_t offset; uint16_t value_len; uint8_t *value; @@ -159,9 +139,7 @@ typedef union { //BTC_GATTC_ACT_PREPARE_WRITE_CHAR_DESCR, struct prep_write_descr_arg { uint16_t conn_id; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; - esp_gatt_id_t descr_id; + uint16_t handle; uint16_t offset; uint16_t value_len; uint8_t *value; @@ -176,15 +154,13 @@ typedef union { struct reg_for_notify_arg { esp_gatt_if_t gattc_if; esp_bd_addr_t remote_bda; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; + uint16_t handle; } reg_for_notify; //BTC_GATTC_ACT_UNREG_FOR_NOTIFY struct unreg_for_notify_arg { esp_gatt_if_t gattc_if; esp_bd_addr_t remote_bda; - esp_gatt_srvc_id_t service_id; - esp_gatt_id_t char_id; + uint16_t handle; } unreg_for_notify; //BTC_GATTC_ACT_CACHE_REFRESH, struct cache_refresh_arg { @@ -195,5 +171,56 @@ typedef union { void btc_gattc_call_handler(btc_msg_t *msg); void btc_gattc_cb_handler(btc_msg_t *msg); void btc_gattc_arg_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src); +esp_gatt_status_t btc_ble_gattc_get_service(uint16_t conn_id, esp_bt_uuid_t *svc_uuid, + esp_gattc_service_elem_t *result, + uint16_t *count, uint16_t offset); +esp_gatt_status_t btc_ble_gattc_get_all_char(uint16_t conn_id, + uint16_t start_handle, + uint16_t end_handle, + esp_gattc_char_elem_t *result, + uint16_t *count, uint16_t offset); +esp_gatt_status_t btc_ble_gattc_get_all_descr(uint16_t conn_id, + uint16_t char_handle, + esp_gattc_descr_elem_t *result, + uint16_t *count, uint16_t offset); +esp_gatt_status_t btc_ble_gattc_get_char_by_uuid(uint16_t conn_id, + uint16_t start_handle, + uint16_t end_handle, + esp_bt_uuid_t char_uuid, + esp_gattc_char_elem_t *result, + uint16_t *count); +esp_gatt_status_t btc_ble_gattc_get_descr_by_uuid(uint16_t conn_id, + uint16_t start_handle, + uint16_t end_handle, + esp_bt_uuid_t char_uuid, + esp_bt_uuid_t descr_uuid, + esp_gattc_descr_elem_t *result, + uint16_t *count); + +esp_gatt_status_t btc_ble_gattc_get_descr_by_char_handle(uint16_t conn_id, + uint16_t char_handle, + esp_bt_uuid_t descr_uuid, + esp_gattc_descr_elem_t *result, + uint16_t *count); + +esp_gatt_status_t btc_ble_gattc_get_include_service(uint16_t conn_id, + uint16_t start_handle, + uint16_t end_handle, + esp_bt_uuid_t *incl_uuid, + esp_gattc_incl_svc_elem_t *result, + uint16_t *count); + +esp_gatt_status_t btc_ble_gattc_get_attr_count(uint16_t conn_id, + esp_gatt_db_attr_type_t type, + uint16_t start_handle, + uint16_t end_handle, + uint16_t char_handle, + uint16_t *count); + +esp_gatt_status_t btc_ble_gattc_get_db(uint16_t conn_id, uint16_t start_handle, uint16_t end_handle, + esp_gattc_db_elem_t *db, uint16_t *count); + + + #endif /* __BTC_GATTC_H__ */ diff --git a/tools/sdk/include/bluedroid/btc_storage.h b/tools/sdk/include/bluedroid/btc_storage.h index c2fb6ccb..9e69b413 100644 --- a/tools/sdk/include/bluedroid/btc_storage.h +++ b/tools/sdk/include/bluedroid/btc_storage.h @@ -19,6 +19,12 @@ #include "bt_defs.h" #include "bt_types.h" + +#define BTC_STORAGE_DEV_CLASS_STR "DevClass" +#define BTC_STORAGE_LINK_KEY_STR "LinkKey" /* same as the ble */ +#define BTC_STORAGE_LINK_KEY_TYPE_STR "LinkKeyType" +#define BTC_STORAGE_PIN_LENGTH_STR "PinLength" + /******************************************************************************* ** ** Function btc_storage_add_bonded_device diff --git a/tools/sdk/include/bluedroid/btm_api.h b/tools/sdk/include/bluedroid/btm_api.h index d4ee7b47..e477eae1 100644 --- a/tools/sdk/include/bluedroid/btm_api.h +++ b/tools/sdk/include/bluedroid/btm_api.h @@ -2833,6 +2833,11 @@ tBTM_STATUS BTM_ReadRSSI (BD_ADDR remote_bda, tBTM_CMPL_CB *p_cb); tBTM_STATUS BTM_ReadTxPower (BD_ADDR remote_bda, tBT_TRANSPORT transport, tBTM_CMPL_CB *p_cb); +tBTM_STATUS BTM_BleReadAdvTxPower(tBTM_CMPL_CB *p_cb); + +void BTM_BleGetWhiteListSize(uint16_t *length); + + /******************************************************************************* ** ** Function BTM_ReadLinkQuality diff --git a/tools/sdk/include/bluedroid/btm_int.h b/tools/sdk/include/bluedroid/btm_int.h index 42468d95..1b4cd725 100644 --- a/tools/sdk/include/bluedroid/btm_int.h +++ b/tools/sdk/include/bluedroid/btm_int.h @@ -416,6 +416,15 @@ void btm_sco_chk_pend_rolechange (UINT16 hci_handle); ** Define structure for Security Service Record. ** A record exists for each service registered with the Security Manager */ +#define BTM_SEC_OUT_FLAGS (BTM_SEC_OUT_AUTHENTICATE | BTM_SEC_OUT_ENCRYPT | BTM_SEC_OUT_AUTHORIZE) +#define BTM_SEC_IN_FLAGS (BTM_SEC_IN_AUTHENTICATE | BTM_SEC_IN_ENCRYPT | BTM_SEC_IN_AUTHORIZE) + +#define BTM_SEC_OUT_LEVEL4_FLAGS (BTM_SEC_OUT_AUTHENTICATE | BTM_SEC_OUT_ENCRYPT | \ + BTM_SEC_OUT_MITM | BTM_SEC_MODE4_LEVEL4) + +#define BTM_SEC_IN_LEVEL4_FLAGS (BTM_SEC_IN_AUTHENTICATE | BTM_SEC_IN_ENCRYPT | \ + BTM_SEC_IN_MITM | BTM_SEC_MODE4_LEVEL4) + typedef struct { UINT32 mx_proto_id; /* Service runs over this multiplexer protocol */ UINT32 orig_mx_chan_id; /* Channel on the multiplexer protocol */ @@ -878,6 +887,15 @@ typedef struct{ }tBTM_CallbackFunc; extern tBTM_CallbackFunc conn_param_update_cb; +/* security action for L2CAP COC channels */ +#define BTM_SEC_OK 1 +#define BTM_SEC_ENCRYPT 2 /* encrypt the link with current key */ +#define BTM_SEC_ENCRYPT_NO_MITM 3 /* unauthenticated encryption or better */ +#define BTM_SEC_ENCRYPT_MITM 4 /* authenticated encryption */ +#define BTM_SEC_ENC_PENDING 5 /* wait for link encryption pending */ + +typedef UINT8 tBTM_SEC_ACTION; + /* #ifdef __cplusplus extern "C" @@ -1082,6 +1100,10 @@ BOOLEAN btm_sec_is_a_bonded_dev (BD_ADDR bda); void btm_consolidate_dev(tBTM_SEC_DEV_REC *p_target_rec); BOOLEAN btm_sec_is_le_capable_dev (BD_ADDR bda); BOOLEAN btm_ble_init_pseudo_addr (tBTM_SEC_DEV_REC *p_dev_rec, BD_ADDR new_pseudo_addr); +extern BOOLEAN btm_ble_start_sec_check(BD_ADDR bd_addr, UINT16 psm, BOOLEAN is_originator, + tBTM_SEC_CALLBACK *p_callback, void *p_ref_data); +extern tBTM_SEC_SERV_REC *btm_sec_find_first_serv (CONNECTION_TYPE conn_type, UINT16 psm); + #endif /* BLE_INCLUDED */ tINQ_DB_ENT *btm_inq_db_new (BD_ADDR p_bda); diff --git a/tools/sdk/include/bluedroid/esp_bt_defs.h b/tools/sdk/include/bluedroid/esp_bt_defs.h index 513d37ec..25a2e217 100644 --- a/tools/sdk/include/bluedroid/esp_bt_defs.h +++ b/tools/sdk/include/bluedroid/esp_bt_defs.h @@ -66,8 +66,13 @@ typedef uint8_t esp_link_key[ESP_BT_OCTET16_LEN]; /* Link Key */ /// Default GATT interface id #define ESP_DEFAULT_GATT_IF 0xff -/// Default BLE connection param, if the value doesn't be overwritten -#define ESP_BLE_CONN_PARAM_UNDEF 0xffff /* use this value when a specific value not to be overwritten */ +#define ESP_BLE_CONN_INT_MIN 0x0006 /*!< relate to BTM_BLE_CONN_INT_MIN in btm_ble_api.h */ +#define ESP_BLE_CONN_INT_MAX 0x0C80 /*!< relate to BTM_BLE_CONN_INT_MAX in btm_ble_api.h */ +#define ESP_BLE_CONN_LATENCY_MAX 500 /*!< relate to ESP_BLE_CONN_LATENCY_MAX in btm_ble_api.h */ +#define ESP_BLE_CONN_SUP_TOUT_MIN 0x000A /*!< relate to BTM_BLE_CONN_SUP_TOUT_MIN in btm_ble_api.h */ +#define ESP_BLE_CONN_SUP_TOUT_MAX 0x0C80 /*!< relate to ESP_BLE_CONN_SUP_TOUT_MAX in btm_ble_api.h */ +#define ESP_BLE_CONN_PARAM_UNDEF 0xffff /* use this value when a specific value not to be overwritten */ /* relate to ESP_BLE_CONN_PARAM_UNDEF in btm_ble_api.h */ +#define ESP_BLE_SCAN_PARAM_UNDEF 0xffffffff /* relate to ESP_BLE_SCAN_PARAM_UNDEF in btm_ble_api.h */ /// Check the param is valid or not #define ESP_BLE_IS_VALID_PARAM(x, min, max) (((x) >= (min) && (x) <= (max)) || ((x) == ESP_BLE_CONN_PARAM_UNDEF)) diff --git a/tools/sdk/include/bluedroid/esp_gap_ble_api.h b/tools/sdk/include/bluedroid/esp_gap_ble_api.h index a7cafcd3..62d5c9b0 100644 --- a/tools/sdk/include/bluedroid/esp_gap_ble_api.h +++ b/tools/sdk/include/bluedroid/esp_gap_ble_api.h @@ -68,7 +68,6 @@ typedef uint8_t esp_ble_auth_req_t; /*!< combination of the above bit #define ESP_IO_CAP_KBDISP 4 /*!< Keyboard display */ /* relate to BTM_IO_CAP_KBDISP in btm_api.h */ typedef uint8_t esp_ble_io_cap_t; /*!< combination of the io capability */ - /// GAP BLE callback event type typedef enum { ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT = 0, /*!< When advertising data set complete, the event comes */ @@ -97,6 +96,7 @@ typedef enum { 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 */ ESP_GAP_BLE_GET_BOND_DEV_COMPLETE_EVT, /*!< When get the bond device list complete, the event comes */ + ESP_GAP_BLE_READ_RSSI_COMPLETE_EVT, /*!< When read the rssi complete, the event comes */ ESP_GAP_BLE_EVT_MAX, } esp_gap_ble_cb_event_t; @@ -569,7 +569,7 @@ typedef union { */ struct ble_local_privacy_cmpl_evt_param { esp_bt_status_t status; /*!< Indicate the set local privacy operation success status */ - } local_privacy_cmpl; /*!< Event parameter of ESP_GAP_BLE_SET_LOCAL_PRIVACY_COMPLETE_EVT */ + } local_privacy_cmpl; /*!< Event parameter of ESP_GAP_BLE_SET_LOCAL_PRIVACY_COMPLETE_EVT */ /** * @brief ESP_GAP_BLE_REMOVE_BOND_DEV_COMPLETE_EVT */ @@ -591,6 +591,15 @@ typedef union { uint8_t dev_num; /*!< Indicate the get number device in the bond list */ esp_ble_bond_dev_t *bond_dev; /*!< the pointer to the bond device Structure */ }get_bond_dev_cmpl; /*!< Event parameter of ESP_GAP_BLE_GET_BOND_DEV_COMPLETE_EVT */ + /** + * @brief ESP_GAP_BLE_READ_RSSI_COMPLETE_EVT + */ + struct ble_read_rssi_cmpl_evt_param { + esp_bt_status_t status; /*!< Indicate the read adv tx power operation success status */ + int8_t rssi; /*!< The ble remote device rssi value, the range is from -127 to 20, the unit is dbm, + if the RSSI cannot be read, the RSSI metric shall be set to 127. */ + esp_bd_addr_t remote_addr; /*!< The remote device address */ + } read_rssi_cmpl; /*!< Event parameter of ESP_GAP_BLE_READ_RSSI_COMPLETE_EVT */ } esp_ble_gap_cb_param_t; /** @@ -742,6 +751,48 @@ esp_err_t esp_ble_gap_set_rand_addr(esp_bd_addr_t rand_addr); */ esp_err_t esp_ble_gap_config_local_privacy (bool privacy_enable); +/** +* @brief Add or remove device from white list +* +* @param[in] add_remove: the value is true if added the ble device to the white list, and false remove to the white list. +* @param[in] remote_bda: the remote device address add/remove from the white list. +* @return +* - ESP_OK : success +* - other : failed +* +*/ +esp_err_t esp_ble_gap_update_whitelist(bool add_remove, esp_bd_addr_t remote_bda); + +/** +* @brief Get the whitelist size in the controller +* +* @param[out] length: the white list length. +* @return +* - ESP_OK : success +* - other : failed +* +*/ +esp_err_t esp_ble_gap_get_whitelist_size(uint16_t *length); + +/** +* @brief This function is called to set the preferred connection +* parameters when default connection parameter is not desired before connecting. +* This API can only be used in the master role. +* +* @param[in] bd_addr: BD address of the peripheral +* @param[in] min_conn_int: minimum preferred connection interval +* @param[in] max_conn_int: maximum preferred connection interval +* @param[in] slave_latency: preferred slave latency +* @param[in] supervision_tout: preferred supervision timeout +* +* @return +* - ESP_OK : success +* - other : failed +* +*/ +esp_err_t esp_ble_gap_set_prefer_conn_params(esp_bd_addr_t bd_addr, + uint16_t min_conn_int, uint16_t max_conn_int, + uint16_t slave_latency, uint16_t supervision_tout); /** * @brief Set device name to the local device @@ -796,7 +847,20 @@ esp_err_t esp_ble_gap_config_adv_data_raw(uint8_t *raw_data, uint32_t raw_data_l */ esp_err_t esp_ble_gap_config_scan_rsp_data_raw(uint8_t *raw_data, uint32_t raw_data_len); +/** + * @brief This function is called to read the RSSI of remote device. + * The address of link policy results are returned in the gap callback function with + * ESP_GAP_BLE_READ_RSSI_COMPLETE_EVT event. + * + * @param[in] remote_addr : The remote connection device address. + * + * @return + * - ESP_OK : success + * - other : failed + */ +esp_err_t esp_ble_gap_read_rssi(esp_bd_addr_t remote_addr); +#if (SMP_INCLUDED == TRUE) /** * @brief Set a GAP security parameter value. Overrides the default value. * @@ -879,24 +943,32 @@ esp_err_t esp_ble_confirm_reply(esp_bd_addr_t bd_addr, bool accept); esp_err_t esp_ble_remove_bond_device(esp_bd_addr_t bd_addr); /** -* @brief Removes all of the device from the security database list of -* peer device. It manages unpairing event while connected. +* @brief Get the device number from the security database list of peer device. +* It will return the device bonded number immediately. * -* @return - ESP_OK : success -* - other : failed +* @return - >= 0 : bonded devices number. +* - < 0 : failed * */ -esp_err_t esp_ble_clear_bond_device_list(void); +int esp_ble_get_bond_device_num(void); + /** * @brief Get the device from the security database list of peer device. -* It will return the device bonded information from the ESP_GAP_BLE_GET_BOND_DEV_COMPLETE_EVT event. +* It will return the device bonded information immediately. +* @param[inout] dev_num: Indicate the dev_list array(buffer) size as input. +* If dev_num is large enough, it means the actual number as output. +* Suggest that dev_num value equal to esp_ble_get_bond_device_num(). * -* @return - ESP_OK : success -* - other : failed +* @param[out] dev_list: an array(buffer) of `esp_ble_bond_dev_t` type. Use for storing the bonded devices address. +* The dev_list should be allocated by who call this API. +* @return - ESP_OK : success +* - other : failed * */ -esp_err_t esp_ble_get_bond_device_list(void); +esp_err_t esp_ble_get_bond_device_list(int *dev_num, esp_ble_bond_dev_t *dev_list); + +#endif /* #if (SMP_INCLUDED == TRUE) */ /** * @brief This function is to disconnect the physical connection of the peer device diff --git a/tools/sdk/include/bluedroid/esp_gatt_defs.h b/tools/sdk/include/bluedroid/esp_gatt_defs.h index d0f73dd3..a98069ea 100644 --- a/tools/sdk/include/bluedroid/esp_gatt_defs.h +++ b/tools/sdk/include/bluedroid/esp_gatt_defs.h @@ -27,6 +27,7 @@ extern "C" { #define ESP_GATT_ILLEGAL_HANDLE 0 /// GATT attribute max handle #define ESP_GATT_ATTR_HANDLE_MAX 100 +#define ESP_GATT_MAX_READ_MULTI_HANDLES 10 /* Max attributes to read in one request */ /**@{ @@ -294,12 +295,12 @@ typedef uint8_t esp_gatt_char_prop_t; */ typedef struct { - uint16_t uuid_length; /*!< UUID length */ - uint8_t *uuid_p; /*!< UUID value */ - uint16_t perm; /*!< Attribute permission */ - uint16_t max_length; /*!< Maximum length of the element*/ - uint16_t length; /*!< Current length of the element*/ - uint8_t *value; /*!< Element value array*/ + uint16_t uuid_length; /*!< UUID length */ + uint8_t *uuid_p; /*!< UUID value */ + uint16_t perm; /*!< Attribute permission */ + uint16_t max_length; /*!< Maximum length of the element*/ + uint16_t length; /*!< Current length of the element*/ + uint8_t *value; /*!< Element value array*/ } esp_attr_desc_t; @@ -313,8 +314,8 @@ typedef struct /** * @brief if auto_rsp set to ESP_GATT_RSP_BY_APP, means the response of Write/Read operation will by replied by application. if auto_rsp set to ESP_GATT_AUTO_RSP, means the response of Write/Read operation will be replied by GATT stack automatically. - */ - uint8_t auto_rsp; + */ + uint8_t auto_rsp; } esp_attr_control_t; @@ -323,8 +324,8 @@ typedef struct */ typedef struct { - esp_attr_control_t attr_control; /*!< The attribute control type*/ - esp_attr_desc_t att_desc; /*!< The attribute type*/ + esp_attr_control_t attr_control; /*!< The attribute control type */ + esp_attr_desc_t att_desc; /*!< The attribute type */ } esp_gatts_attr_db_t; @@ -333,9 +334,9 @@ typedef struct */ typedef struct { - uint16_t attr_max_len; /*!< attribute max value length */ - uint16_t attr_len; /*!< attribute current value length */ - uint8_t *attr_value; /*!< the pointer to attribute value */ + uint16_t attr_max_len; /*!< attribute max value length */ + uint16_t attr_len; /*!< attribute current value length */ + uint8_t *attr_value; /*!< the pointer to attribute value */ } esp_attr_value_t; @@ -344,22 +345,19 @@ 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 */ -} esp_gatts_incl_svc_desc_t; /*!< Gatt include service entry element */ + 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 { - 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 typedef struct { @@ -388,6 +386,75 @@ typedef enum { typedef uint8_t esp_gatt_if_t; /*!< Gatt interface type, different application on GATT client use different gatt_if */ +/** + * @brief the type of attribute element + */ +typedef enum { + ESP_GATT_DB_PRIMARY_SERVICE, /*!< Gattc primary service attribute type in the cache */ + ESP_GATT_DB_SECONDARY_SERVICE, /*!< Gattc secondary service attribute type in the cache */ + ESP_GATT_DB_CHARACTERISTIC, /*!< Gattc characteristic attribute type in the cache */ + ESP_GATT_DB_DESCRIPTOR, /*!< Gattc characteristic descriptor attribute type in the cache */ + ESP_GATT_DB_INCLUDED_SERVICE, /*!< Gattc include service attribute type in the cache */ + ESP_GATT_DB_ALL, /*!< Gattc all the attribute (primary service & secondary service & include service & char & descriptor) type in the cache */ +} esp_gatt_db_attr_type_t; /*!< Gattc attribute type element */ + +/** + * @brief read multiple attribute + */ +typedef struct { + uint8_t num_attr; /*!< The number of the attribute */ + uint16_t handles[ESP_GATT_MAX_READ_MULTI_HANDLES]; /*!< The handles list */ +} esp_gattc_multi_t; /*!< The gattc multiple read element */ + +/** + * @brief data base attribute element + */ +typedef struct { + esp_gatt_db_attr_type_t type; /*!< The attribute type */ + uint16_t attribute_handle; /*!< The attribute handle, it's valid for all of the type */ + uint16_t start_handle; /*!< The service start handle, it's valid only when the type = ESP_GATT_DB_PRIMARY_SERVICE or ESP_GATT_DB_SECONDARY_SERVICE */ + uint16_t end_handle; /*!< The service end handle, it's valid only when the type = ESP_GATT_DB_PRIMARY_SERVICE or ESP_GATT_DB_SECONDARY_SERVICE */ + esp_gatt_char_prop_t properties; /*!< The characteristic properties, it's valid only when the type = ESP_GATT_DB_CHARACTERISTIC */ + esp_bt_uuid_t uuid; /*!< The attribute uuid, it's valid for all of the type */ +} esp_gattc_db_elem_t; /*!< The gattc service data base element in the cache */ + +/** + * @brief service element + */ +typedef struct { + bool is_primary; /*!< The service flag, ture 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 */ +} esp_gattc_service_elem_t; /*!< The gattc service element */ + +/** + * @brief characteristic element + */ +typedef struct { + uint16_t char_handle; /*!< The characteristic handle */ + esp_gatt_char_prop_t properties; /*!< The characteristic properties */ + esp_bt_uuid_t uuid; /*!< The characteristic uuid */ +} esp_gattc_char_elem_t; /*!< The gattc characteristic element */ + +/** + * @brief descriptor element + */ +typedef struct { + uint16_t handle; /*!< The characteristic descriptor handle */ + esp_bt_uuid_t uuid; /*!< The characteristic descriptor uuid */ +} esp_gattc_descr_elem_t; /*!< The gattc descriptor type element */ + +/** + * @brief include service element + */ +typedef struct { + uint16_t handle; /*!< The include service current attribute handle */ + uint16_t incl_srvc_s_handle; /*!< The start hanlde 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 */ + + #ifdef __cplusplus } #endif diff --git a/tools/sdk/include/bluedroid/esp_gattc_api.h b/tools/sdk/include/bluedroid/esp_gattc_api.h index b950d438..ba5cfffa 100644 --- a/tools/sdk/include/bluedroid/esp_gattc_api.h +++ b/tools/sdk/include/bluedroid/esp_gattc_api.h @@ -59,9 +59,6 @@ typedef enum { ESP_GATTC_SCAN_FLT_PARAM_EVT = 32, /*!< When Scan filter parameters are set, the event comes */ ESP_GATTC_SCAN_FLT_STATUS_EVT = 33, /*!< When Scan filter status is reported, the event comes */ ESP_GATTC_ADV_VSC_EVT = 34, /*!< When advertising vendor spec content event is reported, the event comes */ - ESP_GATTC_GET_CHAR_EVT = 35, /*!< When characteristic is got from GATT server, the event comes */ - ESP_GATTC_GET_DESCR_EVT = 36, /*!< When characteristic descriptor is got from GATT server, the event comes */ - ESP_GATTC_GET_INCL_SRVC_EVT = 37, /*!< When included service is got from GATT server, the event comes */ ESP_GATTC_REG_FOR_NOTIFY_EVT = 38, /*!< When register for notification of a service completes, the event comes */ ESP_GATTC_UNREG_FOR_NOTIFY_EVT = 39, /*!< When unregister for notification of a service completes, the event comes */ ESP_GATTC_CONNECT_EVT = 40, /*!< When the ble physical connection is set up, the event comes */ @@ -74,57 +71,59 @@ typedef enum { */ typedef union { /** - * @brief ESP_GATTC_REG_EVT - */ - struct gattc_reg_evt_param { - esp_gatt_status_t status; /*!< Operation status */ - uint16_t app_id; /*!< Application id which input in register API */ - } reg; /*!< Gatt client callback param of ESP_GATTC_REG_EVT */ + * @brief ESP_GATTC_REG_EVT + */ + struct gattc_reg_evt_param { + esp_gatt_status_t status; /*!< Operation status */ + uint16_t app_id; /*!< Application id which input in register API */ + } reg; /*!< Gatt client callback param of ESP_GATTC_REG_EVT */ /** * @brief ESP_GATTC_OPEN_EVT */ struct gattc_open_evt_param { - esp_gatt_status_t status; /*!< Operation status */ - uint16_t conn_id; /*!< Connection id */ - esp_bd_addr_t remote_bda; /*!< Remote bluetooth device address */ - uint16_t mtu; /*!< MTU size */ - } open; /*!< Gatt client callback param of ESP_GATTC_OPEN_EVT */ + esp_gatt_status_t status; /*!< Operation status */ + uint16_t conn_id; /*!< Connection id */ + esp_bd_addr_t remote_bda; /*!< Remote bluetooth device address */ + uint16_t mtu; /*!< MTU size */ + } open; /*!< Gatt client callback param of ESP_GATTC_OPEN_EVT */ /** * @brief ESP_GATTC_CLOSE_EVT */ struct gattc_close_evt_param { - esp_gatt_status_t status; /*!< Operation status */ - uint16_t conn_id; /*!< Connection id */ - esp_bd_addr_t remote_bda; /*!< Remote bluetooth device address */ - esp_gatt_conn_reason_t reason; /*!< The reason of gatt connection close */ - } close; /*!< Gatt client callback param of ESP_GATTC_CLOSE_EVT */ + esp_gatt_status_t status; /*!< Operation status */ + uint16_t conn_id; /*!< Connection id */ + esp_bd_addr_t remote_bda; /*!< Remote bluetooth device address */ + esp_gatt_conn_reason_t reason; /*!< The reason of gatt connection close */ + } close; /*!< Gatt client callback param of ESP_GATTC_CLOSE_EVT */ /** * @brief ESP_GATTC_CFG_MTU_EVT */ struct gattc_cfg_mtu_evt_param { - esp_gatt_status_t status; /*!< Operation status */ - uint16_t conn_id; /*!< Connection id */ - uint16_t mtu; /*!< MTU size */ - } cfg_mtu; /*!< Gatt client callback param of ESP_GATTC_CFG_MTU_EVT */ + esp_gatt_status_t status; /*!< Operation status */ + uint16_t conn_id; /*!< Connection id */ + uint16_t mtu; /*!< MTU size */ + } cfg_mtu; /*!< Gatt client callback param of ESP_GATTC_CFG_MTU_EVT */ /** * @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 */ + } search_cmpl; /*!< Gatt client callback param of ESP_GATTC_SEARCH_CMPL_EVT */ /** * @brief ESP_GATTC_SEARCH_RES_EVT */ struct gattc_search_res_evt_param { - uint16_t conn_id; /*!< Connection id */ - esp_gatt_srvc_id_t srvc_id; /*!< Service id, include service uuid and other information */ - } search_res; /*!< Gatt client callback param of ESP_GATTC_SEARCH_RES_EVT */ + uint16_t conn_id; /*!< Connection id */ + uint16_t start_handle; /*!< Service start handle */ + uint16_t end_handle; /*!< Service end handle */ + esp_gatt_id_t srvc_id; /*!< Service id, include service uuid and other information */ + } search_res; /*!< Gatt client callback param of ESP_GATTC_SEARCH_RES_EVT */ /** * @brief ESP_GATTC_READ_CHAR_EVT, ESP_GATTC_READ_DESCR_EVT @@ -133,17 +132,8 @@ typedef union { esp_gatt_status_t status; /*!< Operation status */ uint16_t conn_id; /*!< Connection id */ - esp_gatt_srvc_id_t srvc_id; /*!< Service id, include service uuid and other information */ - esp_gatt_id_t char_id; /*!< Characteristic id, include characteristic uuid and other information */ - esp_gatt_id_t descr_id; /*!< Descriptor id, include descriptor uuid and other information */ + uint16_t handle; /*!< Characteristic handle */ uint8_t *value; /*!< Characteristic value */ - uint16_t value_type; /*!< Characteristic value type, there is two value for this type: - ESP_GATTC_READ_VALUE_TYPE_VALUE(0x0000) and - ESP_GATTC_READ_VALUE_TYPE_AGG_FORMAT(0x2905). - If the value is ESP_GATTC_READ_VALUE_TYPE_VALUE means it is a generally - value type, and if is the type of ESP_GATTC_READ_VALUE_TYPE_AGG_FORMAT, - the unit of the value will indicate in the Characteristic - aggregate format descriptor */ uint16_t value_len; /*!< Characteristic value length */ } read; /*!< Gatt client callback param of ESP_GATTC_READ_CHAR_EVT */ @@ -151,99 +141,60 @@ typedef union { * @brief ESP_GATTC_WRITE_CHAR_EVT, ESP_GATTC_PREP_WRITE_EVT, ESP_GATTC_WRITE_DESCR_EVT */ struct gattc_write_evt_param { - esp_gatt_status_t status; /*!< Operation status */ - uint16_t conn_id; /*!< Connection id */ - esp_gatt_srvc_id_t srvc_id; /*!< Service id, include service uuid and other information */ - esp_gatt_id_t char_id; /*!< Characteristic id, include characteristic uuid and other information */ - esp_gatt_id_t descr_id; /*!< Descriptor id, include descriptor uuid and other information */ - } write; /*!< Gatt client callback param of ESP_GATTC_WRITE_DESCR_EVT */ + esp_gatt_status_t status; /*!< Operation status */ + uint16_t conn_id; /*!< Connection id */ + uint16_t handle; /*!< The Characteristic or descriptor handle */ + } write; /*!< Gatt client callback param of ESP_GATTC_WRITE_DESCR_EVT */ /** * @brief ESP_GATTC_EXEC_EVT */ struct gattc_exec_cmpl_evt_param { - esp_gatt_status_t status; /*!< Operation status */ - uint16_t conn_id; /*!< Connection id */ - } exec_cmpl; /*!< Gatt client callback param of ESP_GATTC_EXEC_EVT */ + esp_gatt_status_t status; /*!< Operation status */ + uint16_t conn_id; /*!< Connection id */ + } exec_cmpl; /*!< Gatt client callback param of ESP_GATTC_EXEC_EVT */ /** * @brief ESP_GATTC_NOTIFY_EVT */ struct gattc_notify_evt_param { - uint16_t conn_id; /*!< Connection id */ - esp_bd_addr_t remote_bda; /*!< Remote bluetooth device address */ - esp_gatt_srvc_id_t srvc_id; /*!< Service id, include service uuid and other information */ - esp_gatt_id_t char_id; /*!< Characteristic id, include characteristic uuid and other information */ - esp_gatt_id_t descr_id; /*!< Descriptor id, include descriptor uuid and other information */ - uint16_t value_len; /*!< Notify attribute value */ - uint8_t *value; /*!< Notify attribute value */ - bool is_notify; /*!< True means notify, false means indicate */ - } notify; /*!< Gatt client callback param of ESP_GATTC_NOTIFY_EVT */ + uint16_t conn_id; /*!< Connection id */ + esp_bd_addr_t remote_bda; /*!< Remote bluetooth device address */ + uint16_t handle; /*!< The Characteristic or descriptor handle */ + uint16_t value_len; /*!< Notify attribute value */ + uint8_t *value; /*!< Notify attribute value */ + bool is_notify; /*!< True means notify, false means indicate */ + } notify; /*!< Gatt client callback param of ESP_GATTC_NOTIFY_EVT */ /** * @brief ESP_GATTC_SRVC_CHG_EVT */ struct gattc_srvc_chg_evt_param { - esp_bd_addr_t remote_bda; /*!< Remote bluetooth device address */ - } srvc_chg; /*!< Gatt client callback param of ESP_GATTC_SRVC_CHG_EVT */ + esp_bd_addr_t remote_bda; /*!< Remote bluetooth device address */ + } srvc_chg; /*!< Gatt client callback param of ESP_GATTC_SRVC_CHG_EVT */ /** * @brief ESP_GATTC_CONGEST_EVT */ struct gattc_congest_evt_param { - uint16_t conn_id; /*!< Connection id */ - bool congested; /*!< Congested or not */ - } congest; /*!< Gatt client callback param of ESP_GATTC_CONGEST_EVT */ - - /** - * @brief ESP_GATTC_GET_CHAR_EVT - */ - struct gattc_get_char_evt_param { - esp_gatt_status_t status; /*!< Operation status */ - uint16_t conn_id; /*!< Connection id */ - esp_gatt_srvc_id_t srvc_id; /*!< Service id, include service uuid and other information */ - esp_gatt_id_t char_id; /*!< Characteristic id, include characteristic uuid and other information */ - esp_gatt_char_prop_t char_prop; /*!< Characteristic property */ - } get_char; /*!< Gatt client callback param of ESP_GATTC_GET_CHAR_EVT */ - - /** - * @brief ESP_GATTC_GET_DESCR_EVT - */ - struct gattc_get_descr_evt_param { - esp_gatt_status_t status; /*!< Operation status */ - uint16_t conn_id; /*!< Connection id */ - esp_gatt_srvc_id_t srvc_id; /*!< Service id, include service uuid and other information */ - esp_gatt_id_t char_id; /*!< Characteristic id, include characteristic uuid and other information */ - esp_gatt_id_t descr_id; /*!< Descriptor id, include descriptor uuid and other information */ - } get_descr; /*!< Gatt client callback param of ESP_GATTC_GET_DESCR_EVT */ - - /** - * @brief ESP_GATTC_GET_INCL_SRVC_EVT - */ - struct gattc_get_incl_srvc_evt_param { - esp_gatt_status_t status; /*!< Operation status */ - uint16_t conn_id; /*!< Connection id */ - esp_gatt_srvc_id_t srvc_id; /*!< Service id, include service uuid and other information */ - esp_gatt_srvc_id_t incl_srvc_id;/*!< Included service id, include service uuid and other information */ - } get_incl_srvc; /*!< Gatt client callback param of ESP_GATTC_GET_INCL_SRVC_EVT */ - + uint16_t conn_id; /*!< Connection id */ + bool congested; /*!< Congested or not */ + } congest; /*!< Gatt client callback param of ESP_GATTC_CONGEST_EVT */ /** * @brief ESP_GATTC_REG_FOR_NOTIFY_EVT */ struct gattc_reg_for_notify_evt_param { - esp_gatt_status_t status; /*!< Operation status */ - esp_gatt_srvc_id_t srvc_id; /*!< Service id, include service uuid and other information */ - esp_gatt_id_t char_id; /*!< Characteristic id, include characteristic uuid and other information */ - } reg_for_notify; /*!< Gatt client callback param of ESP_GATTC_REG_FOR_NOTIFY_EVT */ + esp_gatt_status_t status; /*!< Operation status */ + uint16_t handle; /*!< The characteristic or descriptor handle */ + } reg_for_notify; /*!< Gatt client callback param of ESP_GATTC_REG_FOR_NOTIFY_EVT */ - /** + /** * @brief ESP_GATTC_UNREG_FOR_NOTIFY_EVT */ struct gattc_unreg_for_notify_evt_param { - esp_gatt_status_t status; /*!< Operation status */ - esp_gatt_srvc_id_t srvc_id; /*!< Service id, include service uuid and other information */ - esp_gatt_id_t char_id; /*!< Characteristic id, include characteristic uuid and other information */ - } unreg_for_notify; /*!< Gatt client callback param of ESP_GATTC_UNREG_FOR_NOTIFY_EVT */ + esp_gatt_status_t status; /*!< Operation status */ + uint16_t handle; /*!< The characteristic or descriptor handle */ + } unreg_for_notify; /*!< Gatt client callback param of ESP_GATTC_UNREG_FOR_NOTIFY_EVT */ /** * @brief ESP_GATTC_CONNECT_EVT @@ -263,7 +214,7 @@ typedef union { esp_bd_addr_t remote_bda; /*!< Remote bluetooth device address */ } disconnect; /*!< Gatt client callback param of ESP_GATTC_DISCONNECT_EVT */ -} esp_ble_gattc_cb_param_t; /*!< GATT client callback parameter union type */ +} esp_ble_gattc_cb_param_t; /*!< GATT client callback parameter union type */ /** * @brief GATT Client callback function type @@ -383,76 +334,233 @@ esp_err_t esp_ble_gattc_send_mtu_req (esp_gatt_if_t gattc_if, uint16_t conn_id); */ esp_err_t esp_ble_gattc_search_service(esp_gatt_if_t gattc_if, uint16_t conn_id, esp_bt_uuid_t *filter_uuid); - /** - * @brief This function is called to find the first characteristic of the - * service on the given server. + * @brief Find all the service with the given service uuid in the gattc cache, if the svc_uuid is NULL, find all the service. + * Note: It just get service from local cache, won't get from remote devices. If want to get it from remote device, need + * to used the esp_ble_gattc_search_service. * * @param[in] gattc_if: Gatt client access interface. * @param[in] conn_id: connection ID which identify the server. - * @param[in] srvc_id: service ID - * @param[in] start_char_id: the start characteristic ID - * @return - * - ESP_OK: success - * - other: failed - * - */ -esp_err_t esp_ble_gattc_get_characteristic(esp_gatt_if_t gattc_if, - uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *start_char_id); - -/** - * @brief This function is called to find the descriptor of the - * service on the given server. - * - * @param[in] gattc_if: Gatt client access interface. - * @param[in] conn_id: connection ID which identify the server. - * @param[in] srvc_id: the service ID of which the characteristic is belonged to. - * @param[in] char_id: Characteristic ID, if NULL find the first available - * characteristic. - * @param[in] start_descr_id: the start descriptor id + * @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[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. * * @return * - ESP_OK: success * - other: failed * */ -esp_err_t esp_ble_gattc_get_descriptor(esp_gatt_if_t gattc_if, - uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id, - esp_gatt_id_t *start_descr_id); - +esp_gatt_status_t esp_ble_gattc_get_service(esp_gatt_if_t gattc_if, uint16_t conn_id, esp_bt_uuid_t *svc_uuid, + esp_gattc_service_elem_t *result, uint16_t *count, uint16_t offset); /** - * @brief This function is called to find the first characteristic of the - * service on the given server. + * @brief Find all the characteristic with the given service in the gattc cache + * Note: It just get characteristic from local cache, won't get from remote devices. * * @param[in] gattc_if: Gatt client access interface. * @param[in] conn_id: connection ID which identify the server. - * @param[in] srvc_id: the service ID of which the characteristic is belonged to. - * @param[in] start_incl_srvc_id: the start include service id + * @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[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. * * @return * - ESP_OK: success * - other: failed * */ -esp_err_t esp_ble_gattc_get_included_service(esp_gatt_if_t gattc_if, - uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_srvc_id_t *start_incl_srvc_id); +esp_gatt_status_t esp_ble_gattc_get_all_char(esp_gatt_if_t gattc_if, + uint16_t conn_id, + uint16_t start_handle, + uint16_t end_handle, + esp_gattc_char_elem_t *result, + uint16_t *count, uint16_t offset); +/** + * @brief Find all the descriptor with the given characteristic in the gattc cache + * Note: It just get descriptor from local cache, won't get from remote devices. + * + * @param[in] gattc_if: Gatt client access interface. + * @param[in] conn_id: connection ID which identify the server. + * @param[in] char_handle: the given characteristic handle + * @param[out] result: The pointer to the descriptor in the characteristic. + * @param[inout] count: input the number of descriptor want to find, + * it will output the number of descriptor has been found in the gattc cache with the given characteristic. + * @param[in] offset: Offset of the descriptor position to get. + * + * @return + * - ESP_OK: success + * - other: failed + * + */ +esp_gatt_status_t esp_ble_gattc_get_all_descr(esp_gatt_if_t gattc_if, + uint16_t conn_id, + uint16_t char_handle, + esp_gattc_descr_elem_t *result, + uint16_t *count, uint16_t offset); + + +/** + * @brief Find the characteristic with the given characteristic uuid in the gattc cache + * Note: It just get characteristic from local cache, won't get from remote devices. + * + * @param[in] gattc_if: Gatt client access interface. + * @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[in] char_uuid: the characteristic uuid + * @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. + * + * @return + * - ESP_OK: success + * - other: failed + * + */ +esp_gatt_status_t esp_ble_gattc_get_char_by_uuid(esp_gatt_if_t gattc_if, + uint16_t conn_id, + uint16_t start_handle, + uint16_t end_handle, + esp_bt_uuid_t char_uuid, + esp_gattc_char_elem_t *result, + uint16_t *count); + +/** + * @brief Find the descriptor with the given characteristic uuid in the gattc cache + * Note: It just get descriptor from local cache, won't get from remote devices. + * + * @param[in] gattc_if: Gatt client access interface. + * @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[in] char_uuid: the characteristic uuid. + * @param[in] descr_uuid: the descriptor uuid. + * @param[out] result: The pointer to the descriptor in the given characteristic. + * @param[inout] count: input the number of descriptor want to find, + * it will output the number of descriptor has been found in the gattc cache with the given characteristic. + * + * @return + * - ESP_OK: success + * - other: failed + * + */ +esp_gatt_status_t esp_ble_gattc_get_descr_by_uuid(esp_gatt_if_t gattc_if, + uint16_t conn_id, + uint16_t start_handle, + uint16_t end_handle, + esp_bt_uuid_t char_uuid, + esp_bt_uuid_t descr_uuid, + esp_gattc_descr_elem_t *result, + uint16_t *count); + +/** + * @brief Find the descriptor with the given characteristic handle in the gattc cache + * Note: It just get descriptor from local cache, won't get from remote devices. + * + * @param[in] gattc_if: Gatt client access interface. + * @param[in] conn_id: connection ID which identify the server. + * @param[in] char_handle: the characteristic handle. + * @param[in] descr_uuid: the descriptor uuid. + * @param[out] result: The pointer to the descriptor in the given characteristic. + * @param[inout] count: input the number of descriptor want to find, + * it will output the number of descriptor has been found in the gattc cache with the given characteristic. + * + * @return + * - ESP_OK: success + * - other: failed + * + */ +esp_gatt_status_t esp_ble_gattc_get_descr_by_char_handle(esp_gatt_if_t gattc_if, + uint16_t conn_id, + uint16_t char_handle, + esp_bt_uuid_t descr_uuid, + esp_gattc_descr_elem_t *result, + uint16_t *count); + +/** + * @brief Find the include service with the given service handle in the gattc cache + * Note: It just get include service from local cache, won't get from remote devices. + * + * @param[in] gattc_if: Gatt client access interface. + * @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[in] incl_uuid: the include service uuid + * @param[out] result: The pointer to the include service in the given service. + * @param[inout] count: input the number of include service want to find, + * it will output the number of include service has been found in the gattc cache with the given service. + * + * @return + * - ESP_OK: success + * - other: failed + * + */ +esp_gatt_status_t esp_ble_gattc_get_include_service(esp_gatt_if_t gattc_if, + uint16_t conn_id, + uint16_t start_handle, + uint16_t end_handle, + esp_bt_uuid_t *incl_uuid, + esp_gattc_incl_svc_elem_t *result, + uint16_t *count); + + +/** + * @brief Find the attribute count with the given service or characteristic in the gattc cache + * + * @param[in] gattc_if: Gatt client access interface. + * @param[in] conn_id: connection ID which identify the server. + * @param[in] type: the attribute type. + * @param[in] start_handle: the attribute start handle, if the type is ESP_GATT_DB_DESCRIPTOR, this parameter should be ignore + * @param[in] end_handle: the attribute end handle, if the type is ESP_GATT_DB_DESCRIPTOR, this parameter should be ignore + * @param[in] char_handle: the characteristic handle, this parameter valid when the type is ESP_GATT_DB_DESCRIPTOR. If the type + * isn't ESP_GATT_DB_DESCRIPTOR, this parameter should be ignore. + * @param[out] count: output the number of attribute has been found in the gattc cache with the given attribute type. + * + * @return + * - ESP_OK: success + * - other: failed + * + */ +esp_gatt_status_t esp_ble_gattc_get_attr_count(esp_gatt_if_t gattc_if, + uint16_t conn_id, + esp_gatt_db_attr_type_t type, + uint16_t start_handle, + uint16_t end_handle, + uint16_t char_handle, + uint16_t *count); + +/** + * @brief This function is called to get the GATT database. + * Note: It just get attribute data base from local cache, won't get from remote devices. + * + * @param[in] gattc_if: Gatt client access interface. + * @param[in] start_handle: the attribute start handle + * @param[in] end_handle: the attribute end handle + * @param[in] conn_id: connection ID which identify the server. + * @param[in] db: output parameter which will contain the GATT database copy. + * Caller is responsible for freeing it. + * @param[in] count: number of elements in database. + * + * @return + * - ESP_OK: success + * - other: failed + * + */ +esp_gatt_status_t esp_ble_gattc_get_db(esp_gatt_if_t gattc_if, uint16_t conn_id, uint16_t start_handle, uint16_t end_handle, + esp_gattc_db_elem_t *db, uint16_t *count); /** * @brief This function is called to read a service's characteristics of - * the given characteristic ID + * the given characteristic handle * * @param[in] gattc_if: Gatt client access interface. * @param[in] conn_id : connection ID. - * @param[in] srvc_id : service ID. - * @param[in] char_id : characteristic ID to read. + * @param[in] handle : characteritic handle to read. * @param[in] auth_req : authenticate request type * * @return @@ -460,11 +568,28 @@ esp_err_t esp_ble_gattc_get_included_service(esp_gatt_if_t gattc_if, * - other: failed * */ -esp_err_t esp_ble_gattc_read_char (esp_gatt_if_t gattc_if, - uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id, - esp_gatt_auth_req_t auth_req); +esp_err_t esp_ble_gattc_read_char (esp_gatt_if_t gattc_if, + uint16_t conn_id, + uint16_t handle, + esp_gatt_auth_req_t auth_req); + +/** + * @brief This function is called to read multiple characteristic or + * characteristic descriptors. + * + * @param[in] gattc_if: Gatt client access interface. + * @param[in] conn_id : connection ID. + * @param[in] read_multi : pointer to the read multiple parameter. + * @param[in] auth_req : authenticate request type + * + * @return + * - ESP_OK: success + * - other: failed + * + */ +esp_err_t esp_ble_gattc_read_multiple(esp_gatt_if_t gattc_if, + uint16_t conn_id, esp_gattc_multi_t *read_multi, + esp_gatt_auth_req_t auth_req); /** @@ -472,9 +597,7 @@ esp_err_t esp_ble_gattc_read_char (esp_gatt_if_t gattc_if, * * @param[in] gattc_if: Gatt client access interface. * @param[in] conn_id : connection ID. - * @param[in] srvc_id : service ID. - * @param[in] char_id : characteristic ID to read. - * @param[in] descr_id : characteristic descriptor ID to read. + * @param[in] handle : descriptor handle to read. * @param[in] auth_req : authenticate request type * * @return @@ -483,11 +606,9 @@ esp_err_t esp_ble_gattc_read_char (esp_gatt_if_t gattc_if, * */ esp_err_t esp_ble_gattc_read_char_descr (esp_gatt_if_t gattc_if, - uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id, - esp_gatt_id_t *descr_id, - esp_gatt_auth_req_t auth_req); + uint16_t conn_id, + uint16_t handle, + esp_gatt_auth_req_t auth_req); /** @@ -495,8 +616,7 @@ esp_err_t esp_ble_gattc_read_char_descr (esp_gatt_if_t gattc_if, * * @param[in] gattc_if: Gatt client access interface. * @param[in] conn_id : connection ID. - * @param[in] srvc_id : service ID. - * @param[in] char_id : characteristic ID to write. + * @param[in] handle : characteristic handle to write. * @param[in] value_len: length of the value to be written. * @param[in] value : the value to be written. * @param[in] write_type : the type of attribute write operation. @@ -509,11 +629,10 @@ esp_err_t esp_ble_gattc_read_char_descr (esp_gatt_if_t gattc_if, */ esp_err_t esp_ble_gattc_write_char( esp_gatt_if_t gattc_if, uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id, + uint16_t handle, uint16_t value_len, uint8_t *value, - esp_gatt_write_type_t write_type, + esp_gatt_write_type_t write_type, esp_gatt_auth_req_t auth_req); @@ -522,9 +641,7 @@ esp_err_t esp_ble_gattc_write_char( esp_gatt_if_t gattc_if, * * @param[in] gattc_if: Gatt client access interface. * @param[in] conn_id : connection ID - * @param[in] srvc_id : service ID. - * @param[in] char_id : characteristic ID. - * @param[in] descr_id : characteristic descriptor ID to write. + * @param[in] handle : descriptor hadle to write. * @param[in] value_len: length of the value to be written. * @param[in] value : the value to be written. * @param[in] write_type : the type of attribute write operation. @@ -537,9 +654,7 @@ esp_err_t esp_ble_gattc_write_char( esp_gatt_if_t gattc_if, */ esp_err_t esp_ble_gattc_write_char_descr (esp_gatt_if_t gattc_if, uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id, - esp_gatt_id_t *descr_id, + uint16_t handle, uint16_t value_len, uint8_t *value, esp_gatt_write_type_t write_type, @@ -551,8 +666,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] srvc_id : service ID. - * @param[in] char_id : GATT characteristic ID of the service. + * @param[in] handle : charateristic 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. @@ -563,10 +677,9 @@ esp_err_t esp_ble_gattc_write_char_descr (esp_gatt_if_t gattc_if, * - other: failed * */ -esp_err_t esp_ble_gattc_prepare_write(esp_gatt_if_t gattc_if, +esp_err_t esp_ble_gattc_prepare_write(esp_gatt_if_t gattc_if, uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id, + uint16_t handle, uint16_t offset, uint16_t value_len, uint8_t *value, @@ -578,9 +691,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] srvc_id : service ID. - * @param[in] char_id : GATT characteristic ID of the service. - * @param[in] descr_id : characteristic descriptor ID to write. + * @param[in] handle : characteristic descriptor hanlde 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. @@ -593,9 +704,7 @@ esp_err_t esp_ble_gattc_prepare_write(esp_gatt_if_t gattc_if, */ esp_err_t esp_ble_gattc_prepare_write_char_descr(esp_gatt_if_t gattc_if, uint16_t conn_id, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id, - esp_gatt_id_t *descr_id, + uint16_t handle, uint16_t offset, uint16_t value_len, uint8_t *value, @@ -622,8 +731,7 @@ esp_err_t esp_ble_gattc_execute_write (esp_gatt_if_t gattc_if, uint16_t conn_id, * * @param[in] gattc_if: Gatt client access interface. * @param[in] server_bda : target GATT server. - * @param[in] srvc_id : pointer to GATT service ID. - * @param[in] char_id : pointer to GATT characteristic ID. + * @param[in] handle : GATT characteristic handle. * * @return * - ESP_OK: registration succeeds @@ -631,9 +739,8 @@ esp_err_t esp_ble_gattc_execute_write (esp_gatt_if_t gattc_if, uint16_t conn_id, * */ esp_err_t esp_ble_gattc_register_for_notify (esp_gatt_if_t gattc_if, - esp_bd_addr_t server_bda, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id); + esp_bd_addr_t server_bda, + uint16_t handle); /** @@ -641,8 +748,7 @@ esp_err_t esp_ble_gattc_register_for_notify (esp_gatt_if_t gattc_if, * * @param[in] gattc_if: Gatt client access interface. * @param[in] server_bda : target GATT server. - * @param[in] srvc_id : pointer to GATT service ID. - * @param[in] char_id : pointer to GATT characteristic ID. + * @param[in] handle : GATT characteristic handle. * * @return * - ESP_OK: unregister succeeds @@ -650,9 +756,8 @@ esp_err_t esp_ble_gattc_register_for_notify (esp_gatt_if_t gattc_if, * */ esp_err_t esp_ble_gattc_unregister_for_notify (esp_gatt_if_t gattc_if, - esp_bd_addr_t server_bda, - esp_gatt_srvc_id_t *srvc_id, - esp_gatt_id_t *char_id); + esp_bd_addr_t server_bda, + uint16_t handle); /** diff --git a/tools/sdk/include/bluedroid/hci_layer.h b/tools/sdk/include/bluedroid/hci_layer.h index 76f93638..5e9b8c69 100644 --- a/tools/sdk/include/bluedroid/hci_layer.h +++ b/tools/sdk/include/bluedroid/hci_layer.h @@ -21,7 +21,6 @@ #include "bt_types.h" #include "allocator.h" -#include "fixed_queue.h" #include "osi.h" #include "future.h" ///// LEGACY DEFINITIONS ///// diff --git a/tools/sdk/include/bluedroid/l2c_api.h b/tools/sdk/include/bluedroid/l2c_api.h index e6e7e44f..e2faae41 100644 --- a/tools/sdk/include/bluedroid/l2c_api.h +++ b/tools/sdk/include/bluedroid/l2c_api.h @@ -124,6 +124,8 @@ typedef UINT8 tL2CAP_CHNL_DATA_RATE; */ #define L2C_INVALID_PSM(psm) (((psm) & 0x0101) != 0x0001) #define L2C_IS_VALID_PSM(psm) (((psm) & 0x0101) == 0x0001) +#define L2C_IS_VALID_LE_PSM(psm) (((psm) > 0x0000) && ((psm) < 0x0100)) + /***************************************************************************** ** Type Definitions @@ -164,6 +166,17 @@ typedef struct { UINT16 flags; /* bit 0: 0-no continuation, 1-continuation */ } tL2CAP_CFG_INFO; +/* Define a structure to hold the configuration parameter for LE L2CAP connection +** oriented channels. +*/ +typedef struct +{ + UINT16 mtu; + UINT16 mps; + UINT16 credits; +} tL2CAP_LE_CFG_INFO; + + /* L2CAP channel configured field bitmap */ #define L2CAP_CH_CFG_MASK_MTU 0x0001 #define L2CAP_CH_CFG_MASK_QOS 0x0002 @@ -486,6 +499,72 @@ extern BOOLEAN L2CA_DisconnectReq (UINT16 cid); extern BOOLEAN L2CA_DisconnectRsp (UINT16 cid); #endif ///CLASSIC_BT_INCLUDED == TRUE +/******************************************************************************* +** +** Function L2CA_RegisterLECoc +** +** Description Other layers call this function to register for L2CAP +** Connection Oriented Channel. +** +** Returns PSM to use or zero if error. Typically, the PSM returned +** is the same as was passed in, but for an outgoing-only +** connection to a dynamic PSM, a "virtual" PSM is returned +** and should be used in the calls to L2CA_ConnectLECocReq() +** and BTM_SetSecurityLevel(). +** +*******************************************************************************/ +extern UINT16 L2CA_RegisterLECoc (UINT16 psm, tL2CAP_APPL_INFO *p_cb_info); + +/******************************************************************************* +** +** Function L2CA_DeregisterLECoc +** +** Description Other layers call this function to deregister for L2CAP +** Connection Oriented Channel. +** +** Returns void +** +*******************************************************************************/ +extern void L2CA_DeregisterLECoc (UINT16 psm); + +/******************************************************************************* +** +** Function L2CA_ConnectLECocReq +** +** Description Higher layers call this function to create an L2CAP LE COC. +** Note that the connection is not established at this time, but +** connection establishment gets started. The callback function +** will be invoked when connection establishes or fails. +** +** Returns the CID of the connection, or 0 if it failed to start +** +*******************************************************************************/ +extern UINT16 L2CA_ConnectLECocReq (UINT16 psm, BD_ADDR p_bd_addr, tL2CAP_LE_CFG_INFO *p_cfg); + +/******************************************************************************* +** +** Function L2CA_ConnectLECocRsp +** +** Description Higher layers call this function to accept an incoming +** L2CAP LE COC connection, for which they had gotten an connect +** indication callback. +** +** Returns TRUE for success, FALSE for failure +** +*******************************************************************************/ +extern BOOLEAN L2CA_ConnectLECocRsp (BD_ADDR p_bd_addr, UINT8 id, UINT16 lcid, UINT16 result, + UINT16 status, tL2CAP_LE_CFG_INFO *p_cfg); + +/******************************************************************************* +** +** Function L2CA_GetPeerLECocConfig +** +** Description Get peers configuration for LE Connection Oriented Channel. +** +** Return value: TRUE if peer is connected +** +*******************************************************************************/ +extern BOOLEAN L2CA_GetPeerLECocConfig (UINT16 lcid, tL2CAP_LE_CFG_INFO* peer_cfg); /******************************************************************************* ** diff --git a/tools/sdk/include/bluedroid/l2c_int.h b/tools/sdk/include/bluedroid/l2c_int.h index ef31d109..44ef74b2 100644 --- a/tools/sdk/include/bluedroid/l2c_int.h +++ b/tools/sdk/include/bluedroid/l2c_int.h @@ -34,6 +34,17 @@ #define L2CAP_MIN_MTU 48 /* Minimum acceptable MTU is 48 bytes */ +/* LE credit based L2CAP connection parameters */ +#define L2CAP_LE_MIN_MTU 23 +#define L2CAP_LE_MIN_MPS 23 +#define L2CAP_LE_MAX_MPS 65533 +#define L2CAP_LE_MIN_CREDIT 0 +#define L2CAP_LE_MAX_CREDIT 65535 +#define L2CAP_LE_DEFAULT_MTU 512 +#define L2CAP_LE_DEFAULT_MPS 23 +#define L2CAP_LE_DEFAULT_CREDIT 1 + + /* Timeouts. Since L2CAP works off a 1-second list, all are in seconds. */ #define L2CAP_LINK_ROLE_SWITCH_TOUT 10 /* 10 seconds */ @@ -240,6 +251,17 @@ typedef struct { tL2CAP_APPL_INFO api; } tL2C_RCB; +typedef void (tL2CAP_SEC_CBACK) (BD_ADDR bd_addr, tBT_TRANSPORT trasnport, + void *p_ref_data, tBTM_STATUS result); + +typedef struct +{ + UINT16 psm; + tBT_TRANSPORT transport; + BOOLEAN is_originator; + tL2CAP_SEC_CBACK *p_callback; + void *p_ref_data; +}tL2CAP_SEC_DATA; #ifndef L2CAP_CBB_DEFAULT_DATA_RATE_BUFF_QUOTA #define L2CAP_CBB_DEFAULT_DATA_RATE_BUFF_QUOTA 100 @@ -252,6 +274,8 @@ typedef struct { typedef struct t_l2c_ccb { BOOLEAN in_use; /* TRUE when in use, FALSE when not */ tL2C_CHNL_STATE chnl_state; /* Channel state */ + tL2CAP_LE_CFG_INFO local_conn_cfg; /* Our config for ble conn oriented channel */ + tL2CAP_LE_CFG_INFO peer_conn_cfg; /* Peer device config ble conn oriented channel */ struct t_l2c_ccb *p_next_ccb; /* Next CCB in the chain */ struct t_l2c_ccb *p_prev_ccb; /* Previous CCB in the chain */ @@ -400,7 +424,8 @@ typedef struct t_l2c_linkcb { #if (BLE_INCLUDED == TRUE) tBLE_ADDR_TYPE ble_addr_type; UINT16 tx_data_len; /* tx data length used in data length extension */ - + fixed_queue_t *le_sec_pending_q; /* LE coc channels waiting for security check completion */ + UINT8 sec_act; #define L2C_BLE_CONN_UPDATE_DISABLE 0x1 /* disable update connection parameters */ #define L2C_BLE_NEW_CONN_PARAM 0x2 /* new connection parameter to be set */ #define L2C_BLE_UPDATE_PENDING 0x4 /* waiting for connection update finished */ @@ -488,6 +513,7 @@ typedef struct { UINT16 ble_round_robin_quota; /* Round-robin link quota */ UINT16 ble_round_robin_unacked; /* Round-robin unacked */ BOOLEAN ble_check_round_robin; /* Do a round robin check */ + tL2C_RCB ble_rcb_pool[BLE_MAX_L2CAP_CLIENTS]; /* Registration info pool */ #endif tL2CA_ECHO_DATA_CB *p_echo_data_cb; /* Echo data callback */ @@ -632,6 +658,12 @@ BOOLEAN l2c_ucd_process_event(tL2C_CCB *p_ccb, UINT16 event, void *p_data); #if (BLE_INCLUDED == TRUE) extern void l2cu_send_peer_ble_par_req (tL2C_LCB *p_lcb, UINT16 min_int, UINT16 max_int, UINT16 latency, UINT16 timeout); extern void l2cu_send_peer_ble_par_rsp (tL2C_LCB *p_lcb, UINT16 reason, UINT8 rem_id); +extern void l2cu_reject_ble_connection (tL2C_LCB *p_lcb, UINT8 rem_id, UINT16 result); +extern void l2cu_send_peer_ble_credit_based_conn_res (tL2C_CCB *p_ccb, UINT16 result); +extern void l2cu_send_peer_ble_credit_based_conn_req (tL2C_CCB *p_ccb); +extern void l2cu_send_peer_ble_flow_control_credit(tL2C_CCB *p_ccb, UINT16 credit_value); +extern void l2cu_send_peer_ble_credit_based_disconn_req(tL2C_CCB *p_ccb); + #endif extern BOOLEAN l2cu_initialize_fixed_ccb (tL2C_LCB *p_lcb, UINT16 fixed_cid, tL2CAP_FCR_OPTS *p_fcr); @@ -649,6 +681,9 @@ extern void l2cu_send_feature_req (tL2C_CCB *p_ccb); extern tL2C_RCB *l2cu_allocate_rcb (UINT16 psm); extern tL2C_RCB *l2cu_find_rcb_by_psm (UINT16 psm); extern void l2cu_release_rcb (tL2C_RCB *p_rcb); +extern tL2C_RCB *l2cu_allocate_ble_rcb (UINT16 psm); +extern tL2C_RCB *l2cu_find_ble_rcb_by_psm (UINT16 psm); + extern UINT8 l2cu_process_peer_cfg_req (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg); extern void l2cu_process_peer_cfg_rsp (tL2C_CCB *p_ccb, tL2CAP_CFG_INFO *p_cfg); @@ -748,6 +783,13 @@ extern void l2cble_process_conn_update_evt (UINT16 handle, UINT8 status, UINT16 UINT16 conn_latency, UINT16 conn_timeout); extern void l2cble_get_conn_param_format_err_from_contoller(UINT8 status, UINT16 handle); +extern void l2cble_credit_based_conn_req (tL2C_CCB *p_ccb); +extern void l2cble_credit_based_conn_res (tL2C_CCB *p_ccb, UINT16 result); +extern void l2cble_send_peer_disc_req(tL2C_CCB *p_ccb); +extern void l2cble_send_flow_control_credit(tL2C_CCB *p_ccb, UINT16 credit_value); +extern BOOLEAN l2ble_sec_access_req(BD_ADDR bd_addr, UINT16 psm, BOOLEAN is_originator, tL2CAP_SEC_CBACK *p_callback, void *p_ref_data); + + #if (defined BLE_LLT_INCLUDED) && (BLE_LLT_INCLUDED == TRUE) extern void l2cble_process_rc_param_request_evt(UINT16 handle, UINT16 int_min, UINT16 int_max, UINT16 latency, UINT16 timeout); diff --git a/tools/sdk/include/bluedroid/l2cdefs.h b/tools/sdk/include/bluedroid/l2cdefs.h index db5013a1..56ddfb0d 100644 --- a/tools/sdk/include/bluedroid/l2cdefs.h +++ b/tools/sdk/include/bluedroid/l2cdefs.h @@ -41,6 +41,10 @@ #define L2CAP_CMD_BLE_UPDATE_REQ 0x12 #define L2CAP_CMD_BLE_UPDATE_RSP 0x13 +#define L2CAP_CMD_BLE_CREDIT_BASED_CONN_REQ 0x14 +#define L2CAP_CMD_BLE_CREDIT_BASED_CONN_RES 0x15 +#define L2CAP_CMD_BLE_FLOW_CTRL_CREDIT 0x16 + /* Define some packet and header lengths @@ -70,6 +74,11 @@ #define L2CAP_CMD_BLE_UPD_REQ_LEN 8 /* Min and max interval, latency, tout */ #define L2CAP_CMD_BLE_UPD_RSP_LEN 2 /* Result */ +#define L2CAP_CMD_BLE_CREDIT_BASED_CONN_REQ_LEN 10 /* LE_PSM, SCID, MTU, MPS, Init Credit */ +#define L2CAP_CMD_BLE_CREDIT_BASED_CONN_RES_LEN 10 /* DCID, MTU, MPS, Init credit, Result */ +#define L2CAP_CMD_BLE_FLOW_CTRL_CREDIT_LEN 4 /* CID, Credit */ + + /* Define the packet boundary flags */ diff --git a/tools/sdk/include/bt/bt.h b/tools/sdk/include/bt/bt.h index e2d7d842..99769604 100644 --- a/tools/sdk/include/bt/bt.h +++ b/tools/sdk/include/bt/bt.h @@ -78,6 +78,7 @@ typedef enum { ESP_BT_CONTROLLER_STATUS_IDLE = 0, ESP_BT_CONTROLLER_STATUS_INITED, ESP_BT_CONTROLLER_STATUS_ENABLED, + ESP_BT_CONTROLLER_STATUS_SHUTDOWN, ESP_BT_CONTROLLER_STATUS_NUM, } esp_bt_controller_status_t; @@ -102,11 +103,10 @@ typedef enum { ESP_BLE_PWR_TYPE_CONN_HDL6 = 6, /*!< For connection handle 6 */ ESP_BLE_PWR_TYPE_CONN_HDL7 = 7, /*!< For connection handle 7 */ ESP_BLE_PWR_TYPE_CONN_HDL8 = 8, /*!< For connection handle 8 */ - ESP_BLE_PWR_TYPE_CONN_HDL9 = 9, /*!< For connection handle 9 */ - ESP_BLE_PWR_TYPE_ADV = 10, /*!< For advertising */ - ESP_BLE_PWR_TYPE_SCAN = 11, /*!< For scan */ - ESP_BLE_PWR_TYPE_DEFAULT = 12, /*!< For default, if not set other, it will use default value */ - ESP_BLE_PWR_TYPE_NUM = 13, /*!< TYPE numbers */ + ESP_BLE_PWR_TYPE_ADV = 9, /*!< For advertising */ + ESP_BLE_PWR_TYPE_SCAN = 10, /*!< For scan */ + ESP_BLE_PWR_TYPE_DEFAULT = 11, /*!< For default, if not set other, it will use default value */ + ESP_BLE_PWR_TYPE_NUM = 12, /*!< TYPE numbers */ } esp_ble_power_type_t; /** @@ -159,20 +159,20 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg); esp_err_t esp_bt_controller_deinit(void); /** - * @brief Enable BT controller + * @brief Enable BT controller. + * Due to a known issue, you cannot call esp_bt_controller_enable() a second time + * to change the controller mode dynamically. To change controller mode, call + * esp_bt_controller_disable() and then call esp_bt_controller_enable() with the new mode. * @param mode : the mode(BLE/BT/BTDM) to enable. - * Now only support BTDM. * @return ESP_OK - success, other - failed */ esp_err_t esp_bt_controller_enable(esp_bt_mode_t mode); /** * @brief Disable BT controller - * @param mode : the mode(BLE/BT/BTDM) to disable. - * Now only support BTDM. * @return ESP_OK - success, other - failed */ -esp_err_t esp_bt_controller_disable(esp_bt_mode_t mode); +esp_err_t esp_bt_controller_disable(void); /** * @brief Get BT controller is initialised/de-initialised/enabled/disabled @@ -208,6 +208,36 @@ void esp_vhci_host_send_packet(uint8_t *data, uint16_t len); */ void esp_vhci_host_register_callback(const esp_vhci_host_callback_t *callback); +/** @brief esp_bt_controller_mem_release + * release the memory by mode, if never use the bluetooth mode + * it can release the .bbs, .data and other section to heap. + * The total size is about 70k bytes. + * + * If esp_bt_controller_enable(mode) has already been called, calling + * esp_bt_controller_mem_release(ESP_BT_MODE_BTDM) will automatically + * release all memory which is not needed for the currently enabled + * Bluetooth controller mode. + * + * For example, calling esp_bt_controller_enable(ESP_BT_MODE_BLE) then + * esp_bt_controller_mem_release(ESP_BT_MODE_BTDM) will enable BLE modes + * and release memory only used by BT Classic. Also, call esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT) + * is the same. + * + * Note that once BT controller memory is released, the process cannot be reversed. + * If your firmware will later upgrade the Bluetooth controller mode (BLE -> BT Classic or disabled -> enabled) + * then do not call this function. + * + * If user never use bluetooth controller, could call esp_bt_controller_mem_release(ESP_BT_MODE_BTDM) + * before esp_bt_controller_init or after esp_bt_controller_deinit. + * + * For example, user only use bluetooth to config SSID and PASSWORD of WIFI, after config, will never use bluetooth. + * Then, could call esp_bt_controller_mem_release(ESP_BT_MODE_BTDM) after esp_bt_controller_deinit. + * + * @param mode : the mode want to release memory + * @return ESP_OK - success, other - failed + */ +esp_err_t esp_bt_controller_mem_release(esp_bt_mode_t mode); + #ifdef __cplusplus } #endif diff --git a/tools/sdk/include/config/sdkconfig.h b/tools/sdk/include/config/sdkconfig.h index e3d97fab..797d7dfa 100644 --- a/tools/sdk/include/config/sdkconfig.h +++ b/tools/sdk/include/config/sdkconfig.h @@ -54,6 +54,7 @@ #define CONFIG_ULP_COPROC_RESERVE_MEM 512 #define CONFIG_ESPTOOLPY_BAUD 921600 #define CONFIG_INT_WDT_CHECK_CPU1 1 +#define CONFIG_FLASHMODE_DIO 1 #define CONFIG_ESPTOOLPY_AFTER_RESET 1 #define CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED 1 #define CONFIG_TOOLPREFIX "xtensa-esp32-elf-" @@ -95,7 +96,6 @@ #define CONFIG_LOG_DEFAULT_LEVEL 1 #define CONFIG_TIMER_QUEUE_LENGTH 10 #define CONFIG_MAKE_WARN_UNDEFINED_VARIABLES 1 -#define CONFIG_BOOTLOADER_SPI_WP_PIN 7 #define CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM 0 #define CONFIG_MBEDTLS_CCM_C 1 #define CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER 20 @@ -121,7 +121,6 @@ #define CONFIG_PARTITION_TABLE_SINGLE_APP 1 #define CONFIG_ESP32_WIFI_RX_BA_WIN 6 #define CONFIG_MBEDTLS_X509_CSR_PARSE_C 1 -#define CONFIG_FLASHMODE_QIO 1 #define CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA 1 #define CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE 2048 #define CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY 2000 diff --git a/tools/sdk/include/driver/driver/uart.h b/tools/sdk/include/driver/driver/uart.h index 229685b7..5cf3d08e 100644 --- a/tools/sdk/include/driver/driver/uart.h +++ b/tools/sdk/include/driver/driver/uart.h @@ -269,6 +269,20 @@ esp_err_t uart_set_line_inverse(uart_port_t uart_num, uint32_t inverse_mask); */ esp_err_t uart_set_hw_flow_ctrl(uart_port_t uart_num, uart_hw_flowcontrol_t flow_ctrl, uint8_t rx_thresh); +/** + * @brief Set software flow control. + * + * @param uart_num UART_NUM_0, UART_NUM_1 or UART_NUM_2 + * @param enable switch on or off + * @param rx_thresh_xon low water mark + * @param rx_thresh_xoff high water mark + * + * @return + * - ESP_OK Success + * - ESP_FAIL Parameter error + */ + esp_err_t uart_set_sw_flow_ctrl(uart_port_t uart_num, bool enable, uint8_t rx_thresh_xon, uint8_t rx_thresh_xoff); + /** * @brief Get hardware flow control mode * @@ -587,7 +601,7 @@ int uart_write_bytes_with_break(uart_port_t uart_num, const char* src, size_t si int uart_read_bytes(uart_port_t uart_num, uint8_t* buf, uint32_t length, TickType_t ticks_to_wait); /** - * @brief UART ring buffer flush + * @brief UART ring buffer flush. This will discard all data in the UART RX buffer. * * @param uart_num UART_NUM_0, UART_NUM_1 or UART_NUM_2 * diff --git a/tools/sdk/include/esp32/esp_dport_access.h b/tools/sdk/include/esp32/esp_dport_access.h index 49e15f69..3acf8068 100644 --- a/tools/sdk/include/esp32/esp_dport_access.h +++ b/tools/sdk/include/esp32/esp_dport_access.h @@ -27,6 +27,10 @@ void esp_dport_access_int_init(void); void esp_dport_access_int_pause(void); void esp_dport_access_int_resume(void); +//This routine does not stop the dport routines in any way that is recoverable. Please +//only call in case of panic(). +void esp_dport_access_int_abort(void); + #if defined(BOOTLOADER_BUILD) || defined(CONFIG_FREERTOS_UNICORE) || !defined(ESP_PLATFORM) #define DPORT_STALL_OTHER_CPU_START() #define DPORT_STALL_OTHER_CPU_END() diff --git a/tools/sdk/include/esp32/esp_now.h b/tools/sdk/include/esp32/esp_now.h new file mode 100644 index 00000000..497d7377 --- /dev/null +++ b/tools/sdk/include/esp32/esp_now.h @@ -0,0 +1,315 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef __ESP_NOW_H__ +#define __ESP_NOW_H__ + +#include +#include "esp_err.h" +#include "esp_wifi_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup WiFi_APIs WiFi Related APIs + * @brief WiFi APIs + */ + +/** @addtogroup WiFi_APIs + * @{ + */ + +/** \defgroup ESPNOW_APIs ESPNOW APIs + * @brief ESP32 ESPNOW APIs + * + */ + +/** @addtogroup ESPNOW_APIs + * @{ + */ + +#define ESP_ERR_ESPNOW_BASE (ESP_ERR_WIFI_BASE + 101) /*!< ESPNOW error number base. */ +#define ESP_ERR_ESPNOW_NOT_INIT (ESP_ERR_ESPNOW_BASE) /*!< ESPNOW is not initialized. */ +#define ESP_ERR_ESPNOW_ARG (ESP_ERR_ESPNOW_BASE + 1) /*!< Invalid argument */ +#define ESP_ERR_ESPNOW_NO_MEM (ESP_ERR_ESPNOW_BASE + 2) /*!< Out of memory */ +#define ESP_ERR_ESPNOW_FULL (ESP_ERR_ESPNOW_BASE + 3) /*!< ESPNOW peer list is full */ +#define ESP_ERR_ESPNOW_NOT_FOUND (ESP_ERR_ESPNOW_BASE + 4) /*!< ESPNOW peer is not found */ +#define ESP_ERR_ESPNOW_INTERNAL (ESP_ERR_ESPNOW_BASE + 5) /*!< Internal error */ +#define ESP_ERR_ESPNOW_EXIST (ESP_ERR_ESPNOW_BASE + 6) /*!< ESPNOW peer has existed */ + +#define ESP_NOW_ETH_ALEN 6 /*!< Length of ESPNOW peer MAC address */ +#define ESP_NOW_KEY_LEN 16 /*!< Length of ESPNOW peer local master key */ + +#define ESP_NOW_MAX_TOTAL_PEER_NUM 20 /*!< Maximum number of ESPNOW total peers */ +#define ESP_NOW_MAX_ENCRYPT_PEER_NUM 6 /*!< Maximum number of ESPNOW encrypted peers */ + +#define ESP_NOW_MAX_DATA_LEN 250 /*!< Maximum length of ESPNOW data which is sent very time */ + +/** + * @brief Status of sending ESPNOW data . + */ +typedef enum { + ESP_NOW_SEND_SUCCESS = 0, /**< Send ESPNOW data successfully */ + ESP_NOW_SEND_FAIL, /**< Send ESPNOW data fail */ +} esp_now_send_status_t; + +/** + * @brief ESPNOW peer information parameters. + */ +typedef struct esp_now_peer_info { + uint8_t peer_addr[ESP_NOW_ETH_ALEN]; /**< ESPNOW peer MAC address that is also the MAC address of station or softap */ + uint8_t lmk[ESP_NOW_KEY_LEN]; /**< ESPNOW peer local master key that is used to encrypt data */ + uint8_t channel; /**< Wi-Fi channel that peer uses to send/receive ESPNOW data. If the value is 0, + use the current channel which station or softap is on. Otherwise, it must be + set as the channel that station or softap is on. */ + wifi_interface_t ifidx; /**< Wi-Fi interface that peer uses to send/receive ESPNOW data */ + bool encrypt; /**< ESPNOW data that this peer sends/receives is encrypted or not */ + void *priv; /**< ESPNOW peer private data */ +} esp_now_peer_info_t; + +/** + * @brief Number of ESPNOW peers which exist currently. + */ +typedef struct esp_now_peer_num { + int total_num; /**< Total number of ESPNOW peers, maximum value is ESP_NOW_MAX_TOTAL_PEER_NUM */ + int encrypt_num; /**< Number of encrypted ESPNOW peers, maximum value is ESP_NOW_MAX_ENCRYPT_PEER_NUM */ +} esp_now_peer_num_t; + +/** + * @brief Callback function of receiving ESPNOW data + * @param mac_addr peer MAC address + * @param data received data + * @param data_len length of received data + */ +typedef void (*esp_now_recv_cb_t)(const uint8_t *mac_addr, const uint8_t *data, int data_len); + +/** + * @brief Callback function of sending ESPNOW data + * @param mac_addr peer MAC address + * @param status status of sending ESPNOW data (succeed or fail) + */ +typedef void (*esp_now_send_cb_t)(const uint8_t *mac_addr, esp_now_send_status_t status); + +/** + * @brief Initialize ESPNOW function + * + * @return + * - ESP_OK : succeed + * - ESP_ERR_ESPNOW_INTERNAL : Internal error + */ +esp_err_t esp_now_init(void); + +/** + * @brief De-initialize ESPNOW function + * + * @return + * - ESP_OK : succeed + */ +esp_err_t esp_now_deinit(void); + +/** + * @brief Get the version of ESPNOW + * + * @param version ESPNOW version + * + * @return + * - ESP_OK : succeed + * - ESP_ERR_ESPNOW_ARG : invalid argument + */ +esp_err_t esp_now_get_version(uint32_t *version); + +/** + * @brief Register callback function of receiving ESPNOW data + * + * @param cb callback function of receiving ESPNOW data + * + * @return + * - ESP_OK : succeed + * - ESP_ERR_ESPNOW_NOT_INIT : ESPNOW is not initialized + * - ESP_ERR_ESPNOW_INTERNAL : internal error + */ +esp_err_t esp_now_register_recv_cb(esp_now_recv_cb_t cb); + +/** + * @brief Unregister callback function of receiving ESPNOW data + * + * @return + * - ESP_OK : succeed + * - ESP_ERR_ESPNOW_NOT_INIT : ESPNOW is not initialized + */ +esp_err_t esp_now_unregister_recv_cb(void); + +/** + * @brief Register callback function of sending ESPNOW data + * + * @param cb callback function of sending ESPNOW data + * + * @return + * - ESP_OK : succeed + * - ESP_ERR_ESPNOW_NOT_INIT : ESPNOW is not initialized + * - ESP_ERR_ESPNOW_INTERNAL : internal error + */ +esp_err_t esp_now_register_send_cb(esp_now_send_cb_t cb); + +/** + * @brief Unregister callback function of sending ESPNOW data + * + * @return + * - ESP_OK : succeed + * - ESP_ERR_ESPNOW_NOT_INIT : ESPNOW is not initialized + */ +esp_err_t esp_now_unregister_send_cb(void); + +/** + * @brief Send ESPNOW data + * + * @attention 1. If peer_addr is not NULL, send data to the peer whose MAC address matches peer_addr + * @attention 2. If peer_addr is NULL, send data to all of the peers that are added to the peer list + * @attention 3. The maximum length of data must be less than ESP_NOW_MAX_DATA_LEN + * @attention 4. The buffer pointed to by data argument does not need to be valid after esp_now_send returns + * + * @param peer_addr peer MAC address + * @param data data to send + * @param len length of data + * + * @return + * - ESP_OK : succeed + * - ESP_ERR_ESPNOW_NOT_INIT : ESPNOW is not initialized + * - ESP_ERR_ESPNOW_ARG : invalid argument + * - ESP_ERR_ESPNOW_INTERNAL : internal error + * - ESP_ERR_ESPNOW_NO_MEM : out of memory + * - ESP_ERR_ESPNOW_NOT_FOUND : peer is not found + */ +esp_err_t esp_now_send(const uint8_t *peer_addr, const uint8_t *data, size_t len); + +/** + * @brief Add a peer to peer list + * + * @param peer peer information + * + * @return + * - ESP_OK : succeed + * - ESP_ERR_ESPNOW_NOT_INIT : ESPNOW is not initialized + * - ESP_ERR_ESPNOW_ARG : invalid argument + * - ESP_ERR_ESPNOW_FULL : peer list is full + * - ESP_ERR_ESPNOW_NO_MEM : out of memory + * - ESP_ERR_ESPNOW_EXIST : peer has existed + */ +esp_err_t esp_now_add_peer(const esp_now_peer_info_t *peer); + +/** + * @brief Delete a peer from peer list + * + * @param peer_addr peer MAC address + * + * @return + * - ESP_OK : succeed + * - ESP_ERR_ESPNOW_NOT_INIT : ESPNOW is not initialized + * - ESP_ERR_ESPNOW_ARG : invalid argument + * - ESP_ERR_ESPNOW_NOT_FOUND : peer is not found + */ +esp_err_t esp_now_del_peer(const uint8_t *peer_addr); + +/** + * @brief Modify a peer + * + * @param peer peer information + * + * @return + * - ESP_OK : succeed + * - ESP_ERR_ESPNOW_NOT_INIT : ESPNOW is not initialized + * - ESP_ERR_ESPNOW_ARG : invalid argument + * - ESP_ERR_ESPNOW_FULL : peer list is full + */ +esp_err_t esp_now_mod_peer(const esp_now_peer_info_t *peer); + +/** + * @brief Get a peer whose MAC address matches peer_addr from peer list + * + * @param peer_addr peer MAC address + * @param peer peer information + * + * @return + * - ESP_OK : succeed + * - ESP_ERR_ESPNOW_NOT_INIT : ESPNOW is not initialized + * - ESP_ERR_ESPNOW_ARG : invalid argument + * - ESP_ERR_ESPNOW_NOT_FOUND : peer is not found + */ +esp_err_t esp_now_get_peer(const uint8_t *peer_addr, esp_now_peer_info_t *peer); + +/** + * @brief Fetch a peer from peer list + * + * @param from_head fetch from head of list or not + * @param peer peer information + * + * @return + * - ESP_OK : succeed + * - ESP_ERR_ESPNOW_NOT_INIT : ESPNOW is not initialized + * - ESP_ERR_ESPNOW_ARG : invalid argument + * - ESP_ERR_ESPNOW_NOT_FOUND : peer is not found + */ +esp_err_t esp_now_fetch_peer(bool from_head, esp_now_peer_info_t *peer); + +/** + * @brief Peer exists or not + * + * @param peer_addr peer MAC address + * + * @return + * - true : peer exists + * - false : peer not exists + */ +bool esp_now_is_peer_exist(const uint8_t *peer_addr); + +/** + * @brief Get the number of peers + * + * @param num number of peers + * + * @return + * - ESP_OK : succeed + * - ESP_ERR_ESPNOW_NOT_INIT : ESPNOW is not initialized + * - ESP_ERR_ESPNOW_ARG : invalid argument + */ +esp_err_t esp_now_get_peer_num(esp_now_peer_num_t *num); + +/** + * @brief Set the primary master key + * + * @param pmk primary master key + * + * @attention 1. primary master key is used to encrypt local master key + * + * @return + * - ESP_OK : succeed + * - ESP_ERR_ESPNOW_NOT_INIT : ESPNOW is not initialized + * - ESP_ERR_ESPNOW_ARG : invalid argument + */ +esp_err_t esp_now_set_pmk(const uint8_t *pmk); + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __ESP_NOW_H__ */ diff --git a/tools/sdk/include/esp32/esp_spiram.h b/tools/sdk/include/esp32/esp_spiram.h index 2eb9c08e..98540352 100644 --- a/tools/sdk/include/esp32/esp_spiram.h +++ b/tools/sdk/include/esp32/esp_spiram.h @@ -39,6 +39,12 @@ esp_err_t esp_spiram_init(); bool esp_spiram_test(); +/** + * @brief Add the initialized SPI RAM to the heap allocator. + */ +esp_err_t esp_spiram_add_to_heapalloc(); + + /** * @brief Get the size of the attached SPI RAM chip selected in menuconfig * diff --git a/tools/sdk/include/esp32/esp_wifi_types.h b/tools/sdk/include/esp32/esp_wifi_types.h index 2410b73c..a37b1b70 100755 --- a/tools/sdk/include/esp32/esp_wifi_types.h +++ b/tools/sdk/include/esp32/esp_wifi_types.h @@ -132,6 +132,16 @@ typedef struct { uint32_t reserved:31; /**< bit: 1..31 reserved */ } wifi_ap_record_t; +typedef enum { + WIFI_FAST_SCAN = 0, /**< Do fast scan, scan will end after find SSID match AP */ + WIFI_ALL_CHANNEL_SCAN, /**< All channel scan, scan will end after scan all the channel */ +}wifi_scan_method_t; + +typedef enum { + WIFI_CONNECT_AP_BY_SIGNAL = 0, /**< Sort match AP in scan list by RSSI */ + WIFI_CONNECT_AP_BY_SECURITY, /**< Sort match AP in scan list by security mode */ +}wifi_sort_method_t; + typedef enum { WIFI_PS_NONE, /**< No power save */ WIFI_PS_MODEM, /**< Modem power save */ @@ -161,9 +171,11 @@ typedef struct { typedef struct { uint8_t ssid[32]; /**< SSID of target AP*/ uint8_t password[64]; /**< password of target AP*/ + wifi_scan_method_t scan_method; /**< do all channel scan or fast scan */ bool bssid_set; /**< whether set MAC address of target AP or not. Generally, station_config.bssid_set needs to be 0; and it needs to be 1 only when users need to check the MAC address of the AP.*/ uint8_t bssid[6]; /**< MAC address of target AP*/ uint8_t channel; /**< channel of target AP. Set to 1~13 to scan starting from the specified channel before connecting to AP. If the channel of AP is unknown, set it to 0.*/ + wifi_sort_method_t sort_method; /**< sort the connect AP in the list by rssi or security mode */ } wifi_sta_config_t; typedef union { diff --git a/tools/sdk/include/freertos/freertos/FreeRTOSConfig.h b/tools/sdk/include/freertos/freertos/FreeRTOSConfig.h index 81e8a773..3ccd3fda 100644 --- a/tools/sdk/include/freertos/freertos/FreeRTOSConfig.h +++ b/tools/sdk/include/freertos/freertos/FreeRTOSConfig.h @@ -269,9 +269,7 @@ extern void vPortCleanUpTCB ( void *pxTCB ); #define configXT_BOARD 1 /* Board mode */ #define configXT_SIMULATOR 0 -#if CONFIG_ESP32_ENABLE_COREDUMP #define configENABLE_TASK_SNAPSHOT 1 -#endif #if CONFIG_SYSVIEW_ENABLE #ifndef __ASSEMBLER__ diff --git a/tools/sdk/include/heap/esp_heap_caps.h b/tools/sdk/include/heap/esp_heap_caps.h index 2b2eb579..022ae669 100644 --- a/tools/sdk/include/heap/esp_heap_caps.h +++ b/tools/sdk/include/heap/esp_heap_caps.h @@ -30,7 +30,8 @@ #define MALLOC_CAP_PID5 (1<<7) ///< Memory must be mapped to PID5 memory space (PIDs are not currently used) #define MALLOC_CAP_PID6 (1<<8) ///< Memory must be mapped to PID6 memory space (PIDs are not currently used) #define MALLOC_CAP_PID7 (1<<9) ///< Memory must be mapped to PID7 memory space (PIDs are not currently used) -#define MALLOC_CAP_SPISRAM (1<<10) ///< Memory must be in SPI SRAM +#define MALLOC_CAP_SPIRAM (1<<10) ///< Memory must be in SPI RAM +#define MALLOC_CAP_INTERNAL (1<<11) ///< Memory must be internal; specifically it should not disappear when flash/spiram cache is switched off #define MALLOC_CAP_INVALID (1<<31) ///< Memory can't be used / list end marker /** @@ -48,6 +49,7 @@ */ void *heap_caps_malloc(size_t size, uint32_t caps); + /** * @brief Free memory previously allocated via heap_caps_malloc() or heap_caps_realloc(). * diff --git a/tools/sdk/include/log/esp_log.h b/tools/sdk/include/log/esp_log.h index 734c80fe..085970c5 100644 --- a/tools/sdk/include/log/esp_log.h +++ b/tools/sdk/include/log/esp_log.h @@ -95,6 +95,62 @@ uint32_t esp_log_early_timestamp(void); */ void esp_log_write(esp_log_level_t level, const char* tag, const char* format, ...) __attribute__ ((format (printf, 3, 4))); +#include "esp_log_internal.h" + +/** + * @brief Log a buffer of hex bytes at specified level, seprated into 16 bytes each line. + * + * @param tag description tag + * + * @param buffer Pointer to the buffer array + * + * @param buff_len length of buffer in bytes + * + * @param level level of the log + * + */ +#define ESP_LOG_BUFFER_HEX_LEVEL( tag, buffer, buff_len, level ) do {\ + if ( LOG_LOCAL_LEVEL >= level ) esp_log_buffer_hex_internal( tag, buffer, buff_len, level ); } while(0) + +/** + * @brief Log a buffer of characters at specified level, seprated into 16 bytes each line. Buffer should contain only printable characters. + * + * @param tag description tag + * + * @param buffer Pointer to the buffer array + * + * @param buff_len length of buffer in bytes + * + * @param level level of the log + * + */ +#define ESP_LOG_BUFFER_CHAR_LEVEL( tag, buffer, buff_len, level ) do {\ + if ( LOG_LOCAL_LEVEL >= level ) esp_log_buffer_char_internal( tag, buffer, buff_len, level ); } while(0) + +/** + * @brief Dump a buffer to the log at specified level. + * + * The dump log shows just like the one below: + * + * W (195) log_example: 0x3ffb4280 45 53 50 33 32 20 69 73 20 67 72 65 61 74 2c 20 |ESP32 is great, | + * W (195) log_example: 0x3ffb4290 77 6f 72 6b 69 6e 67 20 61 6c 6f 6e 67 20 77 69 |working along wi| + * W (205) log_example: 0x3ffb42a0 74 68 20 74 68 65 20 49 44 46 2e 00 |th the IDF..| + * + * It is highly recommend to use terminals with over 102 text width. + * + * @param tag description tag + * + * @param buffer Pointer to the buffer array + * + * @param buff_len length of buffer in bytes + * + * @param level level of the log + */ +#define ESP_LOG_BUFFER_HEXDUMP( tag, buffer, buff_len, level ) do {\ + if ( LOG_LOCAL_LEVEL >= level ) esp_log_buffer_hexdump_internal( tag, buffer, buff_len, level); } while(0) + + +#if (LOG_LOCAL_LEVEL >= ESP_LOG_INFO) /** * @brief Log a buffer of hex bytes at Info level * @@ -104,8 +160,10 @@ void esp_log_write(esp_log_level_t level, const char* tag, const char* format, . * * @param buff_len length of buffer in bytes * + * @see ``esp_log_buffer_hex_level`` + * */ -void esp_log_buffer_hex(const char *tag, const void *buffer, uint16_t buff_len); +#define ESP_LOG_BUFFER_HEX(tag, buffer, buff_len) ESP_LOG_BUFFER_HEX_LEVEL( tag, buffer, buff_len, ESP_LOG_INFO ) /** * @brief Log a buffer of characters at Info level. Buffer should contain only printable characters. @@ -116,8 +174,20 @@ void esp_log_buffer_hex(const char *tag, const void *buffer, uint16_t buff_len); * * @param buff_len length of buffer in bytes * + * @see ``esp_log_buffer_char_level`` + * */ -void esp_log_buffer_char(const char *tag, const void *buffer, uint16_t buff_len); +#define ESP_LOG_BUFFER_CHAR(tag, buffer, buff_len) ESP_LOG_BUFFER_CHAR_LEVEL( tag, buffer, buff_len, ESP_LOG_INFO ) + +#else +#define ESP_LOG_BUFFER_HEX(tag, buffer, buff_len) {} +#define ESP_LOG_BUFFER_CHAR(tag, buffer, buff_len) {} +#endif + +//to be back compatible +#define esp_log_buffer_hex ESP_LOG_BUFFER_HEX +#define esp_log_buffer_char ESP_LOG_BUFFER_CHAR + #if CONFIG_LOG_COLORS #define LOG_COLOR_BLACK "30" @@ -190,6 +260,32 @@ void esp_log_buffer_char(const char *tag, const void *buffer, uint16_t buff_len) #define ESP_LOGV( tag, format, ... ) ESP_EARLY_LOGV(tag, format, ##__VA_ARGS__) #endif // BOOTLOADER_BUILD +/** runtime macro to output logs at a speicfied level. + * + * @param tag tag of the log, which can be used to change the log level by ``esp_log_level_set`` at runtime. + * + * @param level level of the output log. + * + * @param format format of the output log. see ``printf`` + * + * @param ... variables to be replaced into the log. see ``printf`` + * + * @see ``printf`` + */ +#define ESP_LOG_LEVEL(level, tag, format, ...) do {\ + if (level==ESP_LOG_ERROR ) { esp_log_write(ESP_LOG_ERROR, tag, LOG_FORMAT(E, format), esp_log_timestamp(), tag, ##__VA_ARGS__); }\ + else if (level==ESP_LOG_WARN ) { esp_log_write(ESP_LOG_WARN, tag, LOG_FORMAT(W, format), esp_log_timestamp(), tag, ##__VA_ARGS__); }\ + else if (level==ESP_LOG_DEBUG ) { esp_log_write(ESP_LOG_DEBUG, tag, LOG_FORMAT(D, format), esp_log_timestamp(), tag, ##__VA_ARGS__); }\ + else if (level==ESP_LOG_VERBOSE ) { esp_log_write(ESP_LOG_VERBOSE, tag, LOG_FORMAT(V, format), esp_log_timestamp(), tag, ##__VA_ARGS__); }\ + else { esp_log_write(ESP_LOG_INFO, tag, LOG_FORMAT(I, format), esp_log_timestamp(), tag, ##__VA_ARGS__); }}while(0) + +/** runtime macro to output logs at a speicfied level. Also check the level with ``LOG_LOCAL_LEVEL``. + * + * @see ``printf``, ``ESP_LOG_LEVEL`` + */ +#define ESP_LOG_LEVEL_LOCAL(level, tag, format, ...) do {\ + if ( LOG_LOCAL_LEVEL >= level ) ESP_LOG_LEVEL(level, tag, format, ##__VA_ARGS__); } while(0); + #ifdef __cplusplus } #endif diff --git a/tools/sdk/include/log/esp_log_internal.h b/tools/sdk/include/log/esp_log_internal.h new file mode 100644 index 00000000..a4124388 --- /dev/null +++ b/tools/sdk/include/log/esp_log_internal.h @@ -0,0 +1,24 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef __ESP_LOG_INTERNAL_H__ +#define __ESP_LOG_INTERNAL_H__ + +//these two functions do not check level versus ESP_LOCAL_LEVEL, this should be done in esp_log.h +void esp_log_buffer_hex_internal(const char *tag, const void *buffer, uint16_t buff_len, esp_log_level_t level); +void esp_log_buffer_char_internal(const char *tag, const void *buffer, uint16_t buff_len, esp_log_level_t level); +void esp_log_buffer_hexdump_internal( const char *tag, const void *buffer, uint16_t buff_len, esp_log_level_t log_level); + +#endif + diff --git a/tools/sdk/include/lwip/apps/dhcpserver.h b/tools/sdk/include/lwip/apps/dhcpserver.h index 23566433..a0024ab5 100644 --- a/tools/sdk/include/lwip/apps/dhcpserver.h +++ b/tools/sdk/include/lwip/apps/dhcpserver.h @@ -59,11 +59,6 @@ struct dhcps_pool{ u32_t lease_timer; }; -typedef struct _list_node{ - void *pnode; - struct _list_node *pnext; -}list_node; - typedef u32_t dhcps_time_t; typedef u8_t dhcps_offer_t; diff --git a/tools/sdk/include/nvs_flash/nvs_flash.h b/tools/sdk/include/nvs_flash/nvs_flash.h index c9e4a72d..a7ef7f45 100644 --- a/tools/sdk/include/nvs_flash/nvs_flash.h +++ b/tools/sdk/include/nvs_flash/nvs_flash.h @@ -24,7 +24,7 @@ extern "C" { * @brief Initialize the default NVS partition. * * This API initialises the default NVS partition. The default NVS partition - * is the one that is labelled "nvs" in the partition table. + * is the one that is labeled "nvs" in the partition table. * * @return * - ESP_OK if storage was successfully initialized. @@ -38,7 +38,7 @@ esp_err_t nvs_flash_init(void); /** * @brief Initialize NVS flash storage for the specified partition. * - * @param[in] partition_name Name (label) of the partition. Note that internally a reference to + * @param[in] partition_label Label of the partition. Note that internally a reference to * passed value is kept and it should be accessible for future operations * * @return @@ -48,7 +48,30 @@ esp_err_t nvs_flash_init(void); * - ESP_ERR_NOT_FOUND if specified partition is not found in the partition table * - one of the error codes from the underlying flash storage driver */ -esp_err_t nvs_flash_init_partition(const char *partition_name); +esp_err_t nvs_flash_init_partition(const char *partition_label); + +/** + * @brief Deinitialize NVS storage for the default NVS partition + * + * Default NVS partition is the partition with "nvs" label in the partition table. + * + * @return + * - ESP_OK on success (storage was deinitialized) + * - ESP_ERR_NVS_NOT_INITIALIZED if the storage was not initialized prior to this call + */ +esp_err_t nvs_flash_deinit(void); + +/** + * @brief Deinitialize NVS storage for the given NVS partition + * + * @param[in] partition_label Label of the partition + * + * @return + * - ESP_OK on success + * - ESP_ERR_NVS_NOT_INITIALIZED if the storage for given partition was not + * initialized prior to this call + */ +esp_err_t nvs_flash_deinit_partition(const char* partition_label); /** * @brief Erase the default NVS partition diff --git a/tools/sdk/include/soc/soc/soc.h b/tools/sdk/include/soc/soc/soc.h index 5d5cf3b7..b889f5fa 100644 --- a/tools/sdk/include/soc/soc/soc.h +++ b/tools/sdk/include/soc/soc/soc.h @@ -274,12 +274,12 @@ //}} /* Overall memory map */ +#define SOC_DROM_LOW 0x3F400000 +#define SOC_DROM_HIGH 0x3F800000 #define SOC_IROM_LOW 0x400D0000 #define SOC_IROM_HIGH 0x40400000 #define SOC_IRAM_LOW 0x40080000 #define SOC_IRAM_HIGH 0x400A0000 -#define SOC_DROM_LOW 0x3F400000 -#define SOC_DROM_HIGH 0x3F800000 #define SOC_RTC_IRAM_LOW 0x400C0000 #define SOC_RTC_IRAM_HIGH 0x400C2000 #define SOC_RTC_DATA_LOW 0x50000000 @@ -295,6 +295,10 @@ #define SOC_DMA_LOW 0x3FFAE000 #define SOC_DMA_HIGH 0x40000000 +// Region of memory that is byte-accessible. See esp_ptr_byte_accesible(). +#define SOC_BYTE_ACCESSIBLE_LOW 0x3FFAE000 +#define SOC_BYTE_ACCESSIBLE_HIGH 0x40000000 + //Interrupt hardware source table //This table is decided by hardware, don't touch this. #define ETS_WIFI_MAC_INTR_SOURCE 0/**< interrupt of WiFi MAC, level*/ diff --git a/tools/sdk/include/spiffs/esp_spiffs.h b/tools/sdk/include/spiffs/esp_spiffs.h index 9a1f12c4..ae1b9ad4 100644 --- a/tools/sdk/include/spiffs/esp_spiffs.h +++ b/tools/sdk/include/spiffs/esp_spiffs.h @@ -18,6 +18,10 @@ #include #include "esp_err.h" +#ifdef __cplusplus +extern "C" { +#endif + /** * @brief Configuration structure for esp_vfs_spiffs_register */ @@ -91,4 +95,8 @@ esp_err_t esp_spiffs_format(const char* partition_label); */ esp_err_t esp_spiffs_info(const char* partition_label, size_t *total_bytes, size_t *used_bytes); +#ifdef __cplusplus +} +#endif + #endif /* _ESP_SPIFFS_H_ */ diff --git a/tools/sdk/include/spiffs/spiffs_config.h b/tools/sdk/include/spiffs/spiffs_config.h index e0c9d7f9..e412bfd0 100755 --- a/tools/sdk/include/spiffs/spiffs_config.h +++ b/tools/sdk/include/spiffs/spiffs_config.h @@ -24,27 +24,27 @@ #define SPIFFS_TAG "SPIFFS" // Set generic spiffs debug output call. -#if CONGIG_SPIFFS_DBG +#if CONFIG_SPIFFS_DBG #define SPIFFS_DBG(...) ESP_LOGD(SPIFFS_TAG, __VA_ARGS__) #else #define SPIFFS_DBG(...) #endif -#if CONGIG_SPIFFS_API_DBG +#if CONFIG_SPIFFS_API_DBG #define SPIFFS_API_DBG(...) ESP_LOGD(SPIFFS_TAG, __VA_ARGS__) #else #define SPIFFS_API_DBG(...) #endif -#if CONGIG_SPIFFS_DBG +#if CONFIG_SPIFFS_DBG #define SPIFFS_GC_DBG(...) ESP_LOGD(SPIFFS_TAG, __VA_ARGS__) #else #define SPIFFS_GC_DBG(...) #endif -#if CONGIG_SPIFFS_CACHE_DBG +#if CONFIG_SPIFFS_CACHE_DBG #define SPIFFS_CACHE_DBG(...) ESP_LOGD(SPIFFS_TAG, __VA_ARGS__) #else #define SPIFFS_CACHE_DBG(...) #endif -#if CONGIG_SPIFFS_CHECK_DBG +#if CONFIG_SPIFFS_CHECK_DBG #define SPIFFS_CHECK_DBG(...) ESP_LOGD(SPIFFS_TAG, __VA_ARGS__) #else #define SPIFFS_CHECK_DBG(...) diff --git a/tools/sdk/ld/esp32.common.ld b/tools/sdk/ld/esp32.common.ld index 99f9dd54..5b5be9a6 100644 --- a/tools/sdk/ld/esp32.common.ld +++ b/tools/sdk/ld/esp32.common.ld @@ -89,13 +89,14 @@ SECTIONS *libesp32.a:core_dump.o(.literal .text .literal.* .text.*) *libapp_trace.a:(.literal .text .literal.* .text.*) *libxtensa-debug-module.a:eri.o(.literal .text .literal.* .text.*) - *libesp32.a:app_trace.o(.literal .text .literal.* .text.*) *libphy.a:(.literal .text .literal.* .text.*) *librtc.a:(.literal .text .literal.* .text.*) *libsoc.a:(.literal .text .literal.* .text.*) *libhal.a:(.literal .text .literal.* .text.*) *libgcc.a:lib2funcs.o(.literal .text .literal.* .text.*) *libspi_flash.a:spi_flash_rom_patch.o(.literal .text .literal.* .text.*) + *libgcov.a:(.literal .text .literal.* .text.*) + INCLUDE esp32.spiram.rom-functions-iram.ld _iram_text_end = ABSOLUTE(.); } > iram0_0_seg @@ -117,8 +118,10 @@ SECTIONS *libesp32.a:panic.o(.rodata .rodata.*) *libphy.a:(.rodata .rodata.*) *libapp_trace.a:(.rodata .rodata.*) + *libgcov.a:(.rodata .rodata.*) *libheap.a:multi_heap.o(.rodata .rodata.*) *libheap.a:multi_heap_poisoning.o(.rodata .rodata.*) + INCLUDE esp32.spiram.rom-functions-dram.ld _data_end = ABSOLUTE(.); . = ALIGN(4); } >dram0_0_seg diff --git a/tools/sdk/ld/esp32.rom.ld b/tools/sdk/ld/esp32.rom.ld index d60eeb90..3b11ce2e 100644 --- a/tools/sdk/ld/esp32.rom.ld +++ b/tools/sdk/ld/esp32.rom.ld @@ -215,9 +215,17 @@ PROVIDE ( llc_state = 0x3ffb96f8 ); PROVIDE ( lldesc_build_chain = 0x4000a850 ); PROVIDE ( lldesc_num2link = 0x4000a948 ); PROVIDE ( lldesc_set_owner = 0x4000a974 ); +PROVIDE ( lld_evt_deferred_elt_push = 0x400466b4 ); +PROVIDE ( lld_evt_deferred_elt_pop = 0x400466dc ); +PROVIDE ( lld_evt_winsize_change = 0x40046730 ); +PROVIDE ( lld_evt_rxwin_compute = 0x400467c8 ); +PROVIDE ( lld_evt_slave_time_compute = 0x40046818 ); PROVIDE ( lld_evt_env = 0x3ffb9704 ); +PROVIDE ( lld_evt_elt_wait_get = 0x400468e4 ); +PROVIDE ( lld_evt_get_next_free_slot = 0x4004692c ); PROVIDE ( lld_pdu_adv_pk_desc_tab = 0x3ff98c70 ); PROVIDE ( lld_pdu_llcp_pk_desc_tab = 0x3ff98b68 ); +PROVIDE ( lld_pdu_pack = 0x4004ab14 ); PROVIDE ( LLM_AA_CT1 = 0x3ff98d8a ); PROVIDE ( LLM_AA_CT2 = 0x3ff98d88 ); PROVIDE ( llm_default_handler = 0x3ff98d80 ); @@ -1713,5 +1721,6 @@ PROVIDE ( LM_SniffSubRate = 0x3ffb8214 ); PROVIDE ( prbs_64bytes = 0x3ff98992 ); PROVIDE ( nvds_env = 0x3ffb8364 ); PROVIDE ( nvds_magic_number = 0x3ff9912a ); +PROVIDE ( TASK_DESC_LLD = 0x3ff98b58 ); /* Above are static data, but can be used, not generated by script >>>>> btdm data */ diff --git a/tools/sdk/ld/esp32.spiram.rom-functions-dram.ld b/tools/sdk/ld/esp32.spiram.rom-functions-dram.ld new file mode 100644 index 00000000..da59bc09 --- /dev/null +++ b/tools/sdk/ld/esp32.spiram.rom-functions-dram.ld @@ -0,0 +1,143 @@ +/* + If the Newlib functions in ROM aren't used (eg because the external SPI RAM workaround is active), these functions will + be linked into the application directly instead. Normally, they would end up in flash, which is undesirable because esp-idf + and/or applications may assume that because these functions normally are in ROM, they are accessible even when flash is + inaccessible. To work around this, this ld fragment places these functions in RAM instead. If the ROM functions are used, + these defines do nothing, so they can still be included in that situation. + + This file is responsible for placing the rodata segment in DRAM. +*/ + + *lib_a-utoa.o(.rodata .rodata.*) + *lib_a-longjmp.o(.rodata .rodata.*) + *lib_a-setjmp.o(.rodata .rodata.*) + *lib_a-abs.o(.rodata .rodata.*) + *lib_a-div.o(.rodata .rodata.*) + *lib_a-labs.o(.rodata .rodata.*) + *lib_a-ldiv.o(.rodata .rodata.*) + *lib_a-quorem.o(.rodata .rodata.*) + *lib_a-qsort.o(.rodata .rodata.*) + *lib_a-utoa.o(.rodata .rodata.*) + *lib_a-itoa.o(.rodata .rodata.*) + *lib_a-atoi.o(.rodata .rodata.*) + *lib_a-atol.o(.rodata .rodata.*) + *lib_a-strtol.o(.rodata .rodata.*) + *lib_a-strtoul.o(.rodata .rodata.*) + *lib_a-wcrtomb.o(.rodata .rodata.*) + *lib_a-fvwrite.o(.rodata .rodata.*) + *lib_a-wbuf.o(.rodata .rodata.*) + *lib_a-wsetup.o(.rodata .rodata.*) + *lib_a-fputwc.o(.rodata .rodata.*) + *lib_a-wctomb_r.o(.rodata .rodata.*) + *lib_a-ungetc.o(.rodata .rodata.*) + *lib_a-makebuf.o(.rodata .rodata.*) + *lib_a-fflush.o(.rodata .rodata.*) + *lib_a-refill.o(.rodata .rodata.*) + *lib_a-s_fpclassify.o(.rodata .rodata.*) + *lib_a-locale.o(.rodata .rodata.*) + *lib_a-asctime.o(.rodata .rodata.*) + *lib_a-ctime.o(.rodata .rodata.*) + *lib_a-ctime_r.o(.rodata .rodata.*) + *lib_a-lcltime.o(.rodata .rodata.*) + *lib_a-lcltime_r.o(.rodata .rodata.*) + *lib_a-gmtime.o(.rodata .rodata.*) + *lib_a-gmtime_r.o(.rodata .rodata.*) + *lib_a-strftime.o(.rodata .rodata.*) + *lib_a-mktime.o(.rodata .rodata.*) + *lib_a-syswrite.o(.rodata .rodata.*) + *lib_a-tzset_r.o(.rodata .rodata.*) + *lib_a-tzset.o(.rodata .rodata.*) + *lib_a-toupper.o(.rodata .rodata.*) + *lib_a-tolower.o(.rodata .rodata.*) + *lib_a-toascii.o(.rodata .rodata.*) + *lib_a-systimes.o(.rodata .rodata.*) + *lib_a-time.o(.rodata .rodata.*) + *lib_a-bsd_qsort_r.o(.rodata .rodata.*) + *lib_a-qsort_r.o(.rodata .rodata.*) + *lib_a-gettzinfo.o(.rodata .rodata.*) + *lib_a-strupr.o(.rodata .rodata.*) + *lib_a-asctime_r.o(.rodata .rodata.*) + *lib_a-bzero.o(.rodata .rodata.*) + *lib_a-close.o(.rodata .rodata.*) + *lib_a-creat.o(.rodata .rodata.*) + *lib_a-environ.o(.rodata .rodata.*) + *lib_a-fclose.o(.rodata .rodata.*) + *lib_a-isalnum.o(.rodata .rodata.*) + *lib_a-isalpha.o(.rodata .rodata.*) + *lib_a-isascii.o(.rodata .rodata.*) + *lib_a-isblank.o(.rodata .rodata.*) + *lib_a-iscntrl.o(.rodata .rodata.*) + *lib_a-isdigit.o(.rodata .rodata.*) + *lib_a-isgraph.o(.rodata .rodata.*) + *lib_a-islower.o(.rodata .rodata.*) + *lib_a-isprint.o(.rodata .rodata.*) + *lib_a-ispunct.o(.rodata .rodata.*) + *lib_a-isspace.o(.rodata .rodata.*) + *lib_a-isupper.o(.rodata .rodata.*) + *lib_a-memccpy.o(.rodata .rodata.*) + *lib_a-memchr.o(.rodata .rodata.*) + *lib_a-memcmp.o(.rodata .rodata.*) + *lib_a-memcpy.o(.rodata .rodata.*) + *lib_a-memmove.o(.rodata .rodata.*) + *lib_a-memrchr.o(.rodata .rodata.*) + *lib_a-memset.o(.rodata .rodata.*) + *lib_a-open.o(.rodata .rodata.*) + *lib_a-rand.o(.rodata .rodata.*) + *lib_a-rand_r.o(.rodata .rodata.*) + *lib_a-read.o(.rodata .rodata.*) + *lib_a-rshift.o(.rodata .rodata.*) + *lib_a-sbrk.o(.rodata .rodata.*) + *lib_a-srand.o(.rodata .rodata.*) + *lib_a-strcasecmp.o(.rodata .rodata.*) + *lib_a-strcasestr.o(.rodata .rodata.*) + *lib_a-strcat.o(.rodata .rodata.*) + *lib_a-strchr.o(.rodata .rodata.*) + *lib_a-strcmp.o(.rodata .rodata.*) + *lib_a-strcoll.o(.rodata .rodata.*) + *lib_a-strcpy.o(.rodata .rodata.*) + *lib_a-strcspn.o(.rodata .rodata.*) + *lib_a-strdup.o(.rodata .rodata.*) + *lib_a-strlcat.o(.rodata .rodata.*) + *lib_a-strlcpy.o(.rodata .rodata.*) + *lib_a-strlen.o(.rodata .rodata.*) + *lib_a-strlwr.o(.rodata .rodata.*) + *lib_a-strncasecmp.o(.rodata .rodata.*) + *lib_a-strncat.o(.rodata .rodata.*) + *lib_a-strncmp.o(.rodata .rodata.*) + *lib_a-strncpy.o(.rodata .rodata.*) + *lib_a-strndup.o(.rodata .rodata.*) + *lib_a-strnlen.o(.rodata .rodata.*) + *lib_a-strrchr.o(.rodata .rodata.*) + *lib_a-strsep.o(.rodata .rodata.*) + *lib_a-strspn.o(.rodata .rodata.*) + *lib_a-strstr.o(.rodata .rodata.*) + *lib_a-strtok_r.o(.rodata .rodata.*) + *lib_a-strupr.o(.rodata .rodata.*) + *lib_a-stdio.o(.rodata .rodata.*) + *lib_a-syssbrk.o(.rodata .rodata.*) + *lib_a-sysclose.o(.rodata .rodata.*) + *lib_a-sysopen.o(.rodata .rodata.*) + *creat.o(.rodata .rodata.*) + *lib_a-sysread.o(.rodata .rodata.*) + *lib_a-syswrite.o(.rodata .rodata.*) + *lib_a-impure.o(.rodata .rodata.*) + *lib_a-tzvars.o(.rodata .rodata.*) + *lib_a-sf_nan.o(.rodata .rodata.*) + *lib_a-tzcalc_limits.o(.rodata .rodata.*) + *lib_a-month_lengths.o(.rodata .rodata.*) + *lib_a-timelocal.o(.rodata .rodata.*) + *lib_a-findfp.o(.rodata .rodata.*) + *lock.o(.rodata .rodata.*) + *lib_a-getenv_r.o(.rodata .rodata.*) + *isatty.o(.rodata .rodata.*) + *lib_a-fwalk.o(.rodata .rodata.*) + *lib_a-getenv_r.o(.rodata .rodata.*) + *lib_a-tzlock.o(.rodata .rodata.*) + *lib_a-ctype_.o(.rodata .rodata.*) + *lib_a-sccl.o(.rodata .rodata.*) + *lib_a-strptime.o(.rodata .rodata.*) + *lib_a-envlock.o(.rodata .rodata.*) + *lib_a-raise.o(.rodata .rodata.*) + *lib_a-strdup_r.o(.rodata .rodata.*) + *lib_a-system.o(.rodata .rodata.*) + *lib_a-strndup_r.o(.rodata .rodata.*) diff --git a/tools/sdk/ld/esp32.spiram.rom-functions-iram.ld b/tools/sdk/ld/esp32.spiram.rom-functions-iram.ld new file mode 100644 index 00000000..6f97fb6b --- /dev/null +++ b/tools/sdk/ld/esp32.spiram.rom-functions-iram.ld @@ -0,0 +1,144 @@ +/* + If the Newlib functions in ROM aren't used (eg because the external SPI RAM workaround is active), these functions will + be linked into the application directly instead. Normally, they would end up in flash, which is undesirable because esp-idf + and/or applications may assume that because these functions normally are in ROM, they are accessible even when flash is + inaccessible. To work around this, this ld fragment places these functions in RAM instead. If the ROM functions are used, + these defines do nothing, so they can still be included in that situation. + + This file is responsible for placing the literal and text segments in IRAM. +*/ + + + *lib_a-utoa.o(.literal .text .literal.* .text.*) + *lib_a-longjmp.o(.literal .text .literal.* .text.*) + *lib_a-setjmp.o(.literal .text .literal.* .text.*) + *lib_a-abs.o(.literal .text .literal.* .text.*) + *lib_a-div.o(.literal .text .literal.* .text.*) + *lib_a-labs.o(.literal .text .literal.* .text.*) + *lib_a-ldiv.o(.literal .text .literal.* .text.*) + *lib_a-quorem.o(.literal .text .literal.* .text.*) + *lib_a-qsort.o(.literal .text .literal.* .text.*) + *lib_a-utoa.o(.literal .text .literal.* .text.*) + *lib_a-itoa.o(.literal .text .literal.* .text.*) + *lib_a-atoi.o(.literal .text .literal.* .text.*) + *lib_a-atol.o(.literal .text .literal.* .text.*) + *lib_a-strtol.o(.literal .text .literal.* .text.*) + *lib_a-strtoul.o(.literal .text .literal.* .text.*) + *lib_a-wcrtomb.o(.literal .text .literal.* .text.*) + *lib_a-fvwrite.o(.literal .text .literal.* .text.*) + *lib_a-wbuf.o(.literal .text .literal.* .text.*) + *lib_a-wsetup.o(.literal .text .literal.* .text.*) + *lib_a-fputwc.o(.literal .text .literal.* .text.*) + *lib_a-wctomb_r.o(.literal .text .literal.* .text.*) + *lib_a-ungetc.o(.literal .text .literal.* .text.*) + *lib_a-makebuf.o(.literal .text .literal.* .text.*) + *lib_a-fflush.o(.literal .text .literal.* .text.*) + *lib_a-refill.o(.literal .text .literal.* .text.*) + *lib_a-s_fpclassify.o(.literal .text .literal.* .text.*) + *lib_a-locale.o(.literal .text .literal.* .text.*) + *lib_a-asctime.o(.literal .text .literal.* .text.*) + *lib_a-ctime.o(.literal .text .literal.* .text.*) + *lib_a-ctime_r.o(.literal .text .literal.* .text.*) + *lib_a-lcltime.o(.literal .text .literal.* .text.*) + *lib_a-lcltime_r.o(.literal .text .literal.* .text.*) + *lib_a-gmtime.o(.literal .text .literal.* .text.*) + *lib_a-gmtime_r.o(.literal .text .literal.* .text.*) + *lib_a-strftime.o(.literal .text .literal.* .text.*) + *lib_a-mktime.o(.literal .text .literal.* .text.*) + *lib_a-syswrite.o(.literal .text .literal.* .text.*) + *lib_a-tzset_r.o(.literal .text .literal.* .text.*) + *lib_a-tzset.o(.literal .text .literal.* .text.*) + *lib_a-toupper.o(.literal .text .literal.* .text.*) + *lib_a-tolower.o(.literal .text .literal.* .text.*) + *lib_a-toascii.o(.literal .text .literal.* .text.*) + *lib_a-systimes.o(.literal .text .literal.* .text.*) + *lib_a-time.o(.literal .text .literal.* .text.*) + *lib_a-bsd_qsort_r.o(.literal .text .literal.* .text.*) + *lib_a-qsort_r.o(.literal .text .literal.* .text.*) + *lib_a-gettzinfo.o(.literal .text .literal.* .text.*) + *lib_a-strupr.o(.literal .text .literal.* .text.*) + *lib_a-asctime_r.o(.literal .text .literal.* .text.*) + *lib_a-bzero.o(.literal .text .literal.* .text.*) + *lib_a-close.o(.literal .text .literal.* .text.*) + *lib_a-creat.o(.literal .text .literal.* .text.*) + *lib_a-environ.o(.literal .text .literal.* .text.*) + *lib_a-fclose.o(.literal .text .literal.* .text.*) + *lib_a-isalnum.o(.literal .text .literal.* .text.*) + *lib_a-isalpha.o(.literal .text .literal.* .text.*) + *lib_a-isascii.o(.literal .text .literal.* .text.*) + *lib_a-isblank.o(.literal .text .literal.* .text.*) + *lib_a-iscntrl.o(.literal .text .literal.* .text.*) + *lib_a-isdigit.o(.literal .text .literal.* .text.*) + *lib_a-isgraph.o(.literal .text .literal.* .text.*) + *lib_a-islower.o(.literal .text .literal.* .text.*) + *lib_a-isprint.o(.literal .text .literal.* .text.*) + *lib_a-ispunct.o(.literal .text .literal.* .text.*) + *lib_a-isspace.o(.literal .text .literal.* .text.*) + *lib_a-isupper.o(.literal .text .literal.* .text.*) + *lib_a-memccpy.o(.literal .text .literal.* .text.*) + *lib_a-memchr.o(.literal .text .literal.* .text.*) + *lib_a-memcmp.o(.literal .text .literal.* .text.*) + *lib_a-memcpy.o(.literal .text .literal.* .text.*) + *lib_a-memmove.o(.literal .text .literal.* .text.*) + *lib_a-memrchr.o(.literal .text .literal.* .text.*) + *lib_a-memset.o(.literal .text .literal.* .text.*) + *lib_a-open.o(.literal .text .literal.* .text.*) + *lib_a-rand.o(.literal .text .literal.* .text.*) + *lib_a-rand_r.o(.literal .text .literal.* .text.*) + *lib_a-read.o(.literal .text .literal.* .text.*) + *lib_a-rshift.o(.literal .text .literal.* .text.*) + *lib_a-sbrk.o(.literal .text .literal.* .text.*) + *lib_a-srand.o(.literal .text .literal.* .text.*) + *lib_a-strcasecmp.o(.literal .text .literal.* .text.*) + *lib_a-strcasestr.o(.literal .text .literal.* .text.*) + *lib_a-strcat.o(.literal .text .literal.* .text.*) + *lib_a-strchr.o(.literal .text .literal.* .text.*) + *lib_a-strcmp.o(.literal .text .literal.* .text.*) + *lib_a-strcoll.o(.literal .text .literal.* .text.*) + *lib_a-strcpy.o(.literal .text .literal.* .text.*) + *lib_a-strcspn.o(.literal .text .literal.* .text.*) + *lib_a-strdup.o(.literal .text .literal.* .text.*) + *lib_a-strlcat.o(.literal .text .literal.* .text.*) + *lib_a-strlcpy.o(.literal .text .literal.* .text.*) + *lib_a-strlen.o(.literal .text .literal.* .text.*) + *lib_a-strlwr.o(.literal .text .literal.* .text.*) + *lib_a-strncasecmp.o(.literal .text .literal.* .text.*) + *lib_a-strncat.o(.literal .text .literal.* .text.*) + *lib_a-strncmp.o(.literal .text .literal.* .text.*) + *lib_a-strncpy.o(.literal .text .literal.* .text.*) + *lib_a-strndup.o(.literal .text .literal.* .text.*) + *lib_a-strnlen.o(.literal .text .literal.* .text.*) + *lib_a-strrchr.o(.literal .text .literal.* .text.*) + *lib_a-strsep.o(.literal .text .literal.* .text.*) + *lib_a-strspn.o(.literal .text .literal.* .text.*) + *lib_a-strstr.o(.literal .text .literal.* .text.*) + *lib_a-strtok_r.o(.literal .text .literal.* .text.*) + *lib_a-strupr.o(.literal .text .literal.* .text.*) + *lib_a-stdio.o(.literal .text .literal.* .text.*) + *lib_a-syssbrk.o(.literal .text .literal.* .text.*) + *lib_a-sysclose.o(.literal .text .literal.* .text.*) + *lib_a-sysopen.o(.literal .text .literal.* .text.*) + *creat.o(.literal .text .literal.* .text.*) + *lib_a-sysread.o(.literal .text .literal.* .text.*) + *lib_a-syswrite.o(.literal .text .literal.* .text.*) + *lib_a-impure.o(.literal .text .literal.* .text.*) + *lib_a-tzvars.o(.literal .text .literal.* .text.*) + *lib_a-sf_nan.o(.literal .text .literal.* .text.*) + *lib_a-tzcalc_limits.o(.literal .text .literal.* .text.*) + *lib_a-month_lengths.o(.literal .text .literal.* .text.*) + *lib_a-timelocal.o(.literal .text .literal.* .text.*) + *lib_a-findfp.o(.literal .text .literal.* .text.*) + *lock.o(.literal .text .literal.* .text.*) + *lib_a-getenv_r.o(.literal .text .literal.* .text.*) + *isatty.o(.literal .text .literal.* .text.*) + *lib_a-fwalk.o(.literal .text .literal.* .text.*) + *lib_a-getenv_r.o(.literal .text .literal.* .text.*) + *lib_a-tzlock.o(.literal .text .literal.* .text.*) + *lib_a-ctype_.o(.literal .text .literal.* .text.*) + *lib_a-sccl.o(.literal .text .literal.* .text.*) + *lib_a-strptime.o(.literal .text .literal.* .text.*) + *lib_a-envlock.o(.literal .text .literal.* .text.*) + *lib_a-raise.o(.literal .text .literal.* .text.*) + *lib_a-strdup_r.o(.literal .text .literal.* .text.*) + *lib_a-system.o(.literal .text .literal.* .text.*) + *lib_a-strndup_r.o(.literal .text .literal.* .text.*) diff --git a/tools/sdk/lib/libapp_trace.a b/tools/sdk/lib/libapp_trace.a index eded79e4be3de3d18d232df306025246a155a8d0..bec5a5b24793a170ed354b971be5681b234fe05b 100644 GIT binary patch delta 3280 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 delta 6956 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 diff --git a/tools/sdk/lib/libbootloader_support.a b/tools/sdk/lib/libbootloader_support.a index 2e802de64857fd92cb86bcb2a2c6f178c3bb551f..6935d689b1c0b59dfb1d8460933e2217d048ab59 100644 GIT binary patch delta 20444 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 WnA9X#Bp4V>Knv+W(E}=*pfmtM$0ND` delta 21526 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 mX8LdDPq$d{F&4wS|k`4Opt0W7!v?Sk{JpB diff --git a/tools/sdk/lib/libbt.a b/tools/sdk/lib/libbt.a index 9c60935f8c32eb11c3417c814fab814e34ed74a8..c952caa7d3badb52f1930bf5ac73ae1e788a45d4 100644 GIT binary patch delta 3438362 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%0A4% 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 z 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 z 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�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�FUm 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