From ae079c1fc5d990ba55714d4b3a51b19f96edaec4 Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期四, 24 四月 2025 16:01:43 +0800
Subject: [PATCH] 改为中断来低电平触发发送当前扫描数据,3s内扫描不到的会退出,串口来55 AA 75 70 64 61 74 65,进入升级模式

---
 01_SDK/nimble/host/nimble/nimble/host/src/ble_store_util.c |   57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 57 insertions(+), 0 deletions(-)

diff --git a/01_SDK/nimble/host/nimble/nimble/host/src/ble_store_util.c b/01_SDK/nimble/host/nimble/nimble/host/src/ble_store_util.c
index 508fa00..1543c27 100644
--- a/01_SDK/nimble/host/nimble/nimble/host/src/ble_store_util.c
+++ b/01_SDK/nimble/host/nimble/nimble/host/src/ble_store_util.c
@@ -96,6 +96,40 @@
     return 0;
 }
 
+
+#if SMP_MULTI_ADDR_MODE_EN
+int
+ble_store_util_delete_peer(const ble_addr_t *peer_id_addr, const ble_addr_t *own_id_addr)
+{
+	union ble_store_key key;
+    int rc = 0;
+
+    memset(&key, 0, sizeof key);
+    key.sec.peer_addr = *peer_id_addr;
+    key.sec.own_addr  = *own_id_addr;
+    key.sec.is_own_addr_valid = 0xAA;
+
+    rc = ble_store_util_delete_all(BLE_STORE_OBJ_TYPE_OUR_SEC, &key);
+    if (rc != 0) {
+        return rc;
+    }
+
+    rc = ble_store_util_delete_all(BLE_STORE_OBJ_TYPE_PEER_SEC, &key);
+    if (rc != 0) {
+        return rc;
+    }
+	
+	key.cccd.is_own_addr_valid = 0xAA;
+	key.cccd.chr_val_handle = 0;
+
+    rc = ble_store_util_delete_all(BLE_STORE_OBJ_TYPE_CCCD, &key);
+    if (rc != 0) {
+        return rc;
+    }
+
+    return 0;
+}
+#else
 /**
  * Deletes all entries from the store that are attached to the specified peer
  * address.  This function deletes security entries and CCCD records.
@@ -134,6 +168,7 @@
 
     return 0;
 }
+#endif
 
 /**
  * Deletes all entries from the store that match the specified key.
@@ -189,6 +224,27 @@
     return 0;
 }
 
+#if SMP_MULTI_ADDR_MODE_EN
+int
+ble_store_util_delete_oldest_peer(void)
+{
+    int num_peers;
+    int rc;
+
+    num_peers = ble_store_config_get_our_secs_num();
+    if(num_peers == 0){
+        return 0;
+    }
+
+    struct ble_store_value_sec *oldest_val_sec = ble_store_config_get_our_secs(0);
+    rc = ble_store_util_delete_peer(&oldest_val_sec->peer_addr, &oldest_val_sec->own_addr);
+    if (rc != 0) {
+        return rc;
+    }
+
+    return 0;
+}
+#else
 int
 ble_store_util_delete_oldest_peer(void)
 {
@@ -214,6 +270,7 @@
 
     return 0;
 }
+#endif
 
 /**
  * Round-robin status callback.  If a there is insufficient storage capacity

--
Gitblit v1.9.3