mirror of
https://github.com/DuRuofu/ESP32-Guide.git
synced 2025-12-14 00:27:04 +08:00
update: 添加蓝牙代码
This commit is contained in:
6
code/07.bluetooth/gatt_server/CMakeLists.txt
Normal file
6
code/07.bluetooth/gatt_server/CMakeLists.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
# The following lines of boilerplate have to be in your project's CMakeLists
|
||||
# in this exact order for cmake to work correctly
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||
project(gatt_server_demos)
|
||||
106
code/07.bluetooth/gatt_server/README.md
Normal file
106
code/07.bluetooth/gatt_server/README.md
Normal file
@@ -0,0 +1,106 @@
|
||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C6 | ESP32-H2 | ESP32-S3 |
|
||||
| ----------------- | ----- | -------- | -------- | -------- | -------- | -------- |
|
||||
|
||||
# ESP-IDF Gatt Server Example
|
||||
|
||||
This example shows how create a GATT service by adding attributes one by one. However, this method is defined by Bluedroid and is difficult for users to use.
|
||||
|
||||
Hence, we also allow users to create a GATT service with an attribute table, which releases the user from adding attributes one by one. And it is recommended for users to use. For more information about this method, please refer to [gatt_server_service_table_demo](../gatt_server_service_table).
|
||||
|
||||
This demo creates GATT a service and then starts advertising, waiting to be connected to a GATT client.
|
||||
|
||||
To test this demo, we can run the [gatt_client_demo](../gatt_client), which can scan for and connect to this demo automatically. They will start exchanging data once the GATT client has enabled the notification function of the GATT server.
|
||||
|
||||
Please, check this [tutorial](tutorial/Gatt_Server_Example_Walkthrough.md) for more information about this example.
|
||||
|
||||
## How to Use Example
|
||||
|
||||
Before project configuration and build, be sure to set the correct chip target using:
|
||||
|
||||
```bash
|
||||
idf.py set-target <chip_name>
|
||||
```
|
||||
|
||||
### Hardware Required
|
||||
|
||||
* A development board with ESP32/ESP32-C3/ESP32-C2/ESP32-H2/ESP-S3 SoC (e.g., ESP32-DevKitC, ESP-WROVER-KIT, etc.)
|
||||
* A USB cable for Power supply and programming
|
||||
|
||||
See [Development Boards](https://www.espressif.com/en/products/devkits) for more information about it.
|
||||
|
||||
### Build and Flash
|
||||
|
||||
Run `idf.py -p PORT flash monitor` to build, flash and monitor the project.
|
||||
|
||||
(To exit the serial monitor, type ``Ctrl-]``.)
|
||||
|
||||
See the [Getting Started Guide](https://idf.espressif.com/) for full steps to configure and use ESP-IDF to build projects.
|
||||
|
||||
### Settings for UUID128
|
||||
|
||||
This example works with UUID16 as default. To change to UUID128, follow this steps:
|
||||
|
||||
1. Change the UUID16 to UUID128. You can change the UUID according to your needs.
|
||||
|
||||
```c
|
||||
// Create a new UUID128 (using random values for this example)
|
||||
uint8_t gatts_service_uuid128_test_X[ESP_UUID_LEN_128] = {0x06, 0x18, 0x7a, 0xec, 0xbe, 0x11, 0x11, 0xea, 0x00, 0x16, 0x02, 0x42, 0x01, 0x13, 0x00, 0x04};
|
||||
```
|
||||
|
||||
By adding this new UUID128, you can remove the `#define` macros with the old UUID16.
|
||||
|
||||
2. Add the new UUID128 to the profile.
|
||||
|
||||
```c
|
||||
// Change the size of the UUID from 16 to 128
|
||||
gl_profile_tab[PROFILE_X_APP_ID].service_id.id.uuid.len = ESP_UUID_LEN_128;
|
||||
// Copy the new UUID128 to the profile
|
||||
memcpy(gl_profile_tab[PROFILE_X_APP_ID].service_id.id.uuid.uuid.uuid128, gatts_service_uuid128_test_X, ESP_UUID_LEN_128);
|
||||
```
|
||||
|
||||
3. Remove the following line(s)
|
||||
```c
|
||||
gl_profile_tab[PROFILE_X_APP_ID].service_id.id.uuid.uuid.uuid16 = GATTS_SERVICE_UUID_TEST_X;
|
||||
```
|
||||
|
||||
## Example Output
|
||||
|
||||
```
|
||||
I (0) cpu_start: Starting scheduler on APP CPU.
|
||||
I (512) BTDM_INIT: BT controller compile version [1342a48]
|
||||
I (522) system_api: Base MAC address is not set
|
||||
I (522) system_api: read default base MAC address from EFUSE
|
||||
I (522) phy_init: phy_version 4670,719f9f6,Feb 18 2021,17:07:07
|
||||
I (922) GATTS_DEMO: REGISTER_APP_EVT, status 0, app_id 0
|
||||
|
||||
I (932) GATTS_DEMO: CREATE_SERVICE_EVT, status 0, service_handle 40
|
||||
|
||||
I (942) GATTS_DEMO: REGISTER_APP_EVT, status 0, app_id 1
|
||||
|
||||
I (952) GATTS_DEMO: SERVICE_START_EVT, status 0, service_handle 40
|
||||
|
||||
I (952) GATTS_DEMO: ADD_CHAR_EVT, status 0, attr_handle 42, service_handle 40
|
||||
|
||||
I (962) GATTS_DEMO: the gatts demo char length = 3
|
||||
|
||||
I (962) GATTS_DEMO: prf_char[0] =11
|
||||
|
||||
I (972) GATTS_DEMO: prf_char[1] =22
|
||||
|
||||
I (972) GATTS_DEMO: prf_char[2] =33
|
||||
|
||||
I (982) GATTS_DEMO: CREATE_SERVICE_EVT, status 0, service_handle 44
|
||||
|
||||
I (982) GATTS_DEMO: ADD_DESCR_EVT, status 0, attr_handle 43, service_handle 40
|
||||
|
||||
I (992) GATTS_DEMO: SERVICE_START_EVT, status 0, service_handle 44
|
||||
|
||||
I (1002) GATTS_DEMO: ADD_CHAR_EVT, status 0, attr_handle 46, service_handle 44
|
||||
|
||||
I (1012) GATTS_DEMO: ADD_DESCR_EVT, status 0, attr_handle 47, service_handle 44
|
||||
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon.
|
||||
2
code/07.bluetooth/gatt_server/main/CMakeLists.txt
Normal file
2
code/07.bluetooth/gatt_server/main/CMakeLists.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
idf_component_register(SRCS "gatts_demo.c"
|
||||
INCLUDE_DIRS ".")
|
||||
26
code/07.bluetooth/gatt_server/main/Kconfig.projbuild
Normal file
26
code/07.bluetooth/gatt_server/main/Kconfig.projbuild
Normal file
@@ -0,0 +1,26 @@
|
||||
menu "Example 'GATT SERVER' Config"
|
||||
|
||||
config EXAMPLE_SET_RAW_ADV_DATA
|
||||
bool "Use raw data for advertising packets and scan response data"
|
||||
help
|
||||
If this config item is set, raw binary data will be used to generate advertising & scan response data.
|
||||
This option uses the esp_ble_gap_config_adv_data_raw() and esp_ble_gap_config_scan_rsp_data_raw()
|
||||
functions.
|
||||
|
||||
If this config item is unset, advertising & scan response data is provided via a higher-level
|
||||
esp_ble_adv_data_t structure. The lower layer will generate the BLE packets. This option has higher
|
||||
overhead at runtime.
|
||||
|
||||
config EXAMPLE_CI_ID
|
||||
int
|
||||
default 70
|
||||
help
|
||||
This config the example id for CI test. Only for internal used.
|
||||
|
||||
config EXAMPLE_CI_PIPELINE_ID
|
||||
int "The pipeline id for CI test"
|
||||
default 0
|
||||
help
|
||||
This config the pipeline id for CI test. Only for internal used.
|
||||
|
||||
endmenu
|
||||
755
code/07.bluetooth/gatt_server/main/gatts_demo.c
Normal file
755
code/07.bluetooth/gatt_server/main/gatts_demo.c
Normal file
File diff suppressed because it is too large
Load Diff
8
code/07.bluetooth/gatt_server/sdkconfig.defaults
Normal file
8
code/07.bluetooth/gatt_server/sdkconfig.defaults
Normal file
@@ -0,0 +1,8 @@
|
||||
# This file was generated using idf.py save-defconfig. It can be edited manually.
|
||||
# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration
|
||||
#
|
||||
CONFIG_BT_ENABLED=y
|
||||
CONFIG_BT_BLE_50_FEATURES_SUPPORTED=n
|
||||
CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y
|
||||
# CONFIG_BT_LE_50_FEATURE_SUPPORT is not used on ESP32, ESP32-C3 and ESP32-S3.
|
||||
CONFIG_BT_LE_50_FEATURE_SUPPORT=n
|
||||
8
code/07.bluetooth/gatt_server/sdkconfig.defaults.esp32c2
Normal file
8
code/07.bluetooth/gatt_server/sdkconfig.defaults.esp32c2
Normal file
@@ -0,0 +1,8 @@
|
||||
# Override some defaults so BT stack is enabled
|
||||
# by default in this example
|
||||
CONFIG_IDF_TARGET="esp32c2"
|
||||
CONFIG_BT_ENABLED=y
|
||||
# CONFIG_BT_BLE_50_FEATURES_SUPPORTED is not set
|
||||
CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y
|
||||
# CONFIG_BT_LE_50_FEATURE_SUPPORT is not set
|
||||
CONFIG_BT_LE_HCI_EVT_BUF_SIZE=257
|
||||
7
code/07.bluetooth/gatt_server/sdkconfig.defaults.esp32c3
Normal file
7
code/07.bluetooth/gatt_server/sdkconfig.defaults.esp32c3
Normal file
@@ -0,0 +1,7 @@
|
||||
# This file was generated using idf.py save-defconfig. It can be edited manually.
|
||||
# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration
|
||||
#
|
||||
CONFIG_IDF_TARGET="esp32c3"
|
||||
CONFIG_BT_ENABLED=y
|
||||
# CONFIG_BT_BLE_50_FEATURES_SUPPORTED is not set
|
||||
CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y
|
||||
7
code/07.bluetooth/gatt_server/sdkconfig.defaults.esp32s3
Normal file
7
code/07.bluetooth/gatt_server/sdkconfig.defaults.esp32s3
Normal file
@@ -0,0 +1,7 @@
|
||||
# This file was generated using idf.py save-defconfig. It can be edited manually.
|
||||
# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration
|
||||
#
|
||||
CONFIG_IDF_TARGET="esp32s3"
|
||||
CONFIG_BT_ENABLED=y
|
||||
# CONFIG_BT_BLE_50_FEATURES_SUPPORTED is not set
|
||||
CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 145 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 251 KiB |
Reference in New Issue
Block a user