Merge branch 'feature/add_support_pcl_vsc_v5.1' into 'release/v5.1'

fix(Nimble): Add VSC / VSE handling code and structure for PCL Set RSSI (v5.1)

See merge request espressif/esp-idf!24608
This commit is contained in:
Rahul Tank 2023-07-07 16:27:26 +08:00
commit 68654bfd5f
5 changed files with 38 additions and 2 deletions

View File

@ -661,3 +661,9 @@ config BT_NIMBLE_BLE_GATT_BLOB_TRANSFER
help
This option is used when data to be sent is more than 512 bytes. For peripheral role,
BT_NIMBLE_MSYS_1_BLOCK_COUNT needs to be increased according to the need.
config BT_NIMBLE_VS_SUPPORT
bool "Enable support for VSC and VSE"
help
This option is used to enable support for sending Vendor Specific HCI commands and handling
Vendor Specific HCI Events.

@ -1 +1 @@
Subproject commit 326292d47806594994f4b98fbeb20619a67132bd
Subproject commit abc80c36cab77cc47c62b0cdbbcedf53346460c4

View File

@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2015-2023 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@ -1681,4 +1681,11 @@
#endif
#endif
#ifndef MYNEWT_VAL_BLE_HCI_VS
#define MYNEWT_VAL_BLE_HCI_VS CONFIG_BT_NIMBLE_VS_SUPPORT
#define MYNEWT_VAL_BLE_HCI_VS_OCF_OFFSET (0)
#else
#define MYNEWT_VAL_BLE_HCI_VS (0)
#endif
#endif

View File

@ -1136,6 +1136,11 @@ struct ble_hci_vs_rd_static_addr_rp {
uint8_t addr[6];
} __attribute__((packed));
#if SOC_BLE_POWER_CONTROL_SUPPORTED && MYNEWT_VAL(BLE_HCI_VS)
#define BLE_HCI_OCF_VS_PCL_SET_RSSI (MYNEWT_VAL(BLE_HCI_VS_OCF_OFFSET) + (0x0111))
#endif
/* Command Specific Definitions */
/* --- Set controller to host flow control (OGF 0x03, OCF 0x0031) --- */
#define BLE_HCI_CTLR_TO_HOST_FC_OFF (0)

View File

@ -671,6 +671,24 @@ blecent_gap_event(struct ble_gap_event *event, void *arg)
blecent_power_control(event->connect.conn_handle);
#endif
#if MYNEWT_VAL(BLE_HCI_VS)
#if MYNEWT_VAL(BLE_POWER_CONTROL)
int8_t vs_cmd[10]= {0, 0,-70,-60,-68,-58,-75,-65,-80,-70};
vs_cmd[0] = ((uint8_t)(event->connect.conn_handle & 0xFF));
vs_cmd[1] = ((uint8_t)(event->connect.conn_handle >> 8) & 0xFF);
rc = ble_hs_hci_send_vs_cmd(BLE_HCI_OCF_VS_PCL_SET_RSSI ,
&vs_cmd, sizeof(vs_cmd), NULL, 0);
if (rc != 0) {
MODLOG_DFLT(INFO, "Failed to send VSC %x \n", rc);
return 0;
}
else
MODLOG_DFLT(INFO, "Successfully issued VSC , rc = %d \n", rc);
#endif
#endif
#if CONFIG_EXAMPLE_ENCRYPTION
/** Initiate security - It will perform
* Pairing (Exchange keys)