فهرست منبع

Nimble: Stack support for Connection subrating feature

Rahul Tank 3 سال پیش
والد
کامیت
5a08ba15b5

+ 13 - 0
components/bt/host/nimble/Kconfig.in

@@ -585,6 +585,19 @@ config BT_NIMBLE_MAX_PERIODIC_ADVERTISER_LIST
     help
     help
         Set this option to set the upper limit for number of periodic advertiser list.
         Set this option to set the upper limit for number of periodic advertiser list.
 
 
+menuconfig BT_NIMBLE_53_FEATURE_SUPPORT
+    bool "Enable BLE 5.3 feature"
+    depends on BT_NIMBLE_ENABLED && SOC_ESP_NIMBLE_CONTROLLER
+    help
+            Enable BLE 5.3 feature
+
+config BT_NIMBLE_SUBRATE
+    bool "Connection Subrate"
+    depends on BT_NIMBLE_53_FEATURE_SUPPORT
+    help
+        Enable support for Connection Subrate
+
+
 choice BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM
 choice BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM
     prompt "Coexistence: limit on MAX Tx/Rx time for coded-PHY connection"
     prompt "Coexistence: limit on MAX Tx/Rx time for coded-PHY connection"
     default BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_DIS
     default BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_DIS

+ 1 - 1
components/bt/host/nimble/nimble

@@ -1 +1 @@
-Subproject commit 9ac9b21f722cc63302a22f7244f162ce9d5b038d
+Subproject commit a13c79b4febea7a6a0ec1e245f4d017c4cdf5c84

+ 13 - 0
components/bt/host/nimble/port/include/esp_nimble_cfg.h

@@ -160,6 +160,19 @@
 #ifndef MYNEWT_VAL_BLE_WHITELIST
 #ifndef MYNEWT_VAL_BLE_WHITELIST
 #define MYNEWT_VAL_BLE_WHITELIST (1)
 #define MYNEWT_VAL_BLE_WHITELIST (1)
 #endif
 #endif
+
+#ifndef CONFIG_BT_NIMBLE_53_FEATURE_SUPPORT
+#define BLE_53_FEATURE_SUPPORT (0)
+#else
+#define BLE_53_FEATURE_SUPPORT (CONFIG_BT_NIMBLE_53_FEATURE_SUPPORT)
+#endif
+
+#ifndef CONFIG_BT_NIMBLE_SUBRATE
+#define MYNEWT_VAL_BLE_CONN_SUBRATING (0)
+#else
+#define MYNEWT_VAL_BLE_CONN_SUBRATING (CONFIG_BT_NIMBLE_SUBRATE)
+#endif
+
 /*** @apache-mynewt-nimble/nimble/controller */
 /*** @apache-mynewt-nimble/nimble/controller */
 /*** @apache-mynewt-nimble/nimble/controller */
 /*** @apache-mynewt-nimble/nimble/controller */
 #ifndef MYNEWT_VAL_BLE_CONTROLLER
 #ifndef MYNEWT_VAL_BLE_CONTROLLER

+ 33 - 0
components/bt/porting/nimble/include/nimble/hci_common.h

@@ -1068,6 +1068,25 @@ struct ble_hci_le_set_host_feat_cp {
     uint8_t val;
     uint8_t val;
 } __attribute__((packed));
 } __attribute__((packed));
 
 
+#define BLE_HCI_OCF_LE_SET_DEFAULT_SUBRATE		 (0x007D)
+struct ble_hci_le_set_default_subrate_cp {
+    uint16_t subrate_min;
+    uint16_t subrate_max;
+    uint16_t max_latency;
+    uint16_t cont_num;
+    uint16_t supervision_tmo;
+} __attribute__((packed));
+
+#define BLE_HCI_OCF_LE_SUBRATE_REQ			 (0x007E)
+struct ble_hci_le_subrate_req_cp {
+    uint16_t conn_handle;
+    uint16_t subrate_min;
+    uint16_t subrate_max;
+    uint16_t max_latency;
+    uint16_t cont_num;
+    uint16_t supervision_tmo;
+} __attribute__((packed));
+
 /* --- Vendor specific commands (OGF 0x00FF) */
 /* --- Vendor specific commands (OGF 0x00FF) */
 #define BLE_HCI_OCF_VS_RD_STATIC_ADDR                 (0x0001)
 #define BLE_HCI_OCF_VS_RD_STATIC_ADDR                 (0x0001)
 struct ble_hci_vs_rd_static_addr_rp {
 struct ble_hci_vs_rd_static_addr_rp {
@@ -1797,6 +1816,18 @@ struct ble_hci_ev_le_subev_biginfo_adv_report {
     uint8_t encryption;
     uint8_t encryption;
 } __attribute__((packed));
 } __attribute__((packed));
 
 
+#define BLE_HCI_LE_SUBEV_SUBRATE_CHANGE        (0x23)
+struct ble_hci_ev_le_subev_subrate_change {
+    uint8_t subev_code;
+    uint8_t status;
+    uint16_t conn_handle;
+    uint16_t subrate_factor;
+    uint16_t periph_latency;
+    uint16_t cont_num;
+    uint16_t supervision_tmo;
+} __attribute__((packed));
+
+
 /* Data buffer overflow event */
 /* Data buffer overflow event */
 #define BLE_HCI_EVENT_ACL_BUF_OVERFLOW      (0x01)
 #define BLE_HCI_EVENT_ACL_BUF_OVERFLOW      (0x01)
 
 
@@ -1839,6 +1870,7 @@ struct ble_hci_ev_le_subev_biginfo_adv_report {
 #define BLE_HCI_VER_BCS_5_0                 (9)
 #define BLE_HCI_VER_BCS_5_0                 (9)
 #define BLE_HCI_VER_BCS_5_1                 (10)
 #define BLE_HCI_VER_BCS_5_1                 (10)
 #define BLE_HCI_VER_BCS_5_2                 (11)
 #define BLE_HCI_VER_BCS_5_2                 (11)
+#define BLE_HCI_VER_BCS_5_3                 (12)
 
 
 #define BLE_LMP_VER_BCS_1_0b                (0)
 #define BLE_LMP_VER_BCS_1_0b                (0)
 #define BLE_LMP_VER_BCS_1_1                 (1)
 #define BLE_LMP_VER_BCS_1_1                 (1)
@@ -1852,6 +1884,7 @@ struct ble_hci_ev_le_subev_biginfo_adv_report {
 #define BLE_LMP_VER_BCS_5_0                 (9)
 #define BLE_LMP_VER_BCS_5_0                 (9)
 #define BLE_LMP_VER_BCS_5_1                 (10)
 #define BLE_LMP_VER_BCS_5_1                 (10)
 #define BLE_LMP_VER_BCS_5_2                 (11)
 #define BLE_LMP_VER_BCS_5_2                 (11)
+#define BLE_LMP_VER_BCS_5_3                 (12)
 
 
 /* selected HCI and LMP version */
 /* selected HCI and LMP version */
 #if MYNEWT_VAL(BLE_VERSION) == 50
 #if MYNEWT_VAL(BLE_VERSION) == 50