forked from espressif/esp-idf
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ble_mesh: Support BLE advertising simultaneously
- Loading branch information
1 parent
8210802
commit a919e20
Showing
12 changed files
with
729 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
73 changes: 73 additions & 0 deletions
73
components/bt/esp_ble_mesh/api/core/esp_ble_mesh_ble_api.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
// Copyright 2017-2019 Espressif Systems (Shanghai) PTE LTD | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
|
||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
#include <stdint.h> | ||
#include <string.h> | ||
|
||
#include "btc/btc_manage.h" | ||
|
||
#include "esp_err.h" | ||
|
||
#include "btc_ble_mesh_prov.h" | ||
#include "esp_ble_mesh_defs.h" | ||
|
||
#if CONFIG_BLE_MESH_SUPPORT_BLE_ADV | ||
|
||
esp_err_t esp_ble_mesh_start_ble_advertising(const esp_ble_mesh_ble_adv_param_t *param, | ||
const esp_ble_mesh_ble_adv_data_t *data) | ||
{ | ||
btc_ble_mesh_prov_args_t arg = {0}; | ||
btc_msg_t msg = {0}; | ||
|
||
if (param == NULL) { | ||
return ESP_ERR_INVALID_ARG; | ||
} | ||
|
||
ESP_BLE_HOST_STATUS_CHECK(ESP_BLE_HOST_STATUS_ENABLED); | ||
|
||
msg.sig = BTC_SIG_API_CALL; | ||
msg.pid = BTC_PID_PROV; | ||
msg.act = BTC_BLE_MESH_ACT_START_BLE_ADVERTISING; | ||
|
||
memcpy(&arg.start_ble_advertising.param, param, sizeof(esp_ble_mesh_ble_adv_param_t)); | ||
if (data) { | ||
memcpy(&arg.start_ble_advertising.data, data, sizeof(esp_ble_mesh_ble_adv_data_t)); | ||
} | ||
|
||
return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_mesh_prov_args_t), NULL) | ||
== BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); | ||
} | ||
|
||
esp_err_t esp_ble_mesh_stop_ble_advertising(uint8_t index) | ||
{ | ||
btc_ble_mesh_prov_args_t arg = {0}; | ||
btc_msg_t msg = {0}; | ||
|
||
if (index >= CONFIG_BLE_MESH_BLE_ADV_BUF_COUNT) { | ||
return ESP_ERR_INVALID_ARG; | ||
} | ||
|
||
ESP_BLE_HOST_STATUS_CHECK(ESP_BLE_HOST_STATUS_ENABLED); | ||
|
||
msg.sig = BTC_SIG_API_CALL; | ||
msg.pid = BTC_PID_PROV; | ||
msg.act = BTC_BLE_MESH_ACT_STOP_BLE_ADVERTISING; | ||
|
||
arg.stop_ble_advertising.index = index; | ||
|
||
return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_mesh_prov_args_t), NULL) | ||
== BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); | ||
} | ||
|
||
#endif /* CONFIG_BLE_MESH_SUPPORT_BLE_ADV */ |
57 changes: 57 additions & 0 deletions
57
components/bt/esp_ble_mesh/api/core/include/esp_ble_mesh_ble_api.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
// Copyright 2017-2019 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_BLE_MESH_BLE_API_H_ | ||
#define _ESP_BLE_MESH_BLE_API_H_ | ||
|
||
#include "esp_ble_mesh_defs.h" | ||
|
||
/** | ||
* @brief This function is called to start BLE advertising with the corresponding data | ||
* and parameters while BLE Mesh is working at the same time. | ||
* | ||
* @note 1. When this function is called, the BLE advertising packet will be posted to | ||
* the BLE mesh adv queue in the mesh stack and waited to be sent. | ||
* 2. In the BLE advertising parameters, the "duration" means the time used for | ||
* sending the BLE advertising packet each time, it shall not be smaller than the | ||
* advertising interval. When the packet is sent successfully, it will be posted | ||
* to the adv queue again after the "period" time if the "count" is bigger than 0. | ||
* The "count" means how many durations the packet will be sent after it is sent | ||
* successfully for the first time. And if the "count" is set to 0xFFFF, which | ||
* means the packet will be sent infinitely. | ||
* 3. The "priority" means the priority of BLE advertising packet compared with | ||
* BLE Mesh packets. Currently two options (i.e. low/high) are provided. If the | ||
* "priority" is high, the BLE advertising packet will be posted to the front of | ||
* adv queue. Otherwise it will be posted to the back of adv queue. | ||
* | ||
* @param[in] param: Pointer to the BLE advertising parameters | ||
* @param[in] data: Pointer to the BLE advertising data and scan response data | ||
* | ||
* @return ESP_OK on success or error code otherwise. | ||
* | ||
*/ | ||
esp_err_t esp_ble_mesh_start_ble_advertising(const esp_ble_mesh_ble_adv_param_t *param, | ||
const esp_ble_mesh_ble_adv_data_t *data); | ||
|
||
/** | ||
* @brief This function is called to stop BLE advertising with the corresponding index. | ||
* | ||
* @param[in] index: Index of BLE advertising | ||
* | ||
* @return ESP_OK on success or error code otherwise. | ||
* | ||
*/ | ||
esp_err_t esp_ble_mesh_stop_ble_advertising(uint8_t index); | ||
|
||
#endif /* _ESP_BLE_MESH_BLE_API_H_ */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.