feat(nimble): Add support for PCL Set RSSI VSC and example code for its usage

This commit adds support for sending Vendor Specific HCI commands and handling Vendor Specific HCI
Events in the Nimble stack. It also includes the necessary configuration options and APIs to handle
these commands and events.

The following changes were made:
- Added configuration option to enable support for VSC and VSE
- Added API to send Vendor Specific HCI commands
- Added example code for using the Set RSSI VSC for Power Control

This commit also includes some minor code improvements and bug fixes
This commit is contained in:
Rahul Tank 2023-06-12 16:55:52 +05:30
parent 022ce314c3
commit 7c6ab05f50
3 changed files with 24 additions and 1 deletions

@ -1 +1 @@
Subproject commit 46268fd9c058fde006427b62b2198ace049b4e5f
Subproject commit abc80c36cab77cc47c62b0cdbbcedf53346460c4

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)