return ret;\r
}\r
\r
+/* 解析蓝牙地址字符串为 bd_addr_t 结构 */\r
+static int parse_bt_address(const char *addr_str, bd_addr_t *addr)\r
+{\r
+ if (addr_str == NULL || addr == NULL) {\r
+ return 0;\r
+ }\r
+ \r
+ // 支持格式: "AA:BB:CC:DD:EE:FF" 或 "AABBCCDDEEFF"\r
+ unsigned int addr_bytes[6] = {0};\r
+ int count = sscanf(addr_str, "%02X:%02X:%02X:%02X:%02X:%02X",\r
+ &addr_bytes[0], &addr_bytes[1], &addr_bytes[2],\r
+ &addr_bytes[3], &addr_bytes[4], &addr_bytes[5]);\r
+ \r
+ if (count != 6) {\r
+ // 尝试无冒号格式\r
+ count = sscanf(addr_str, "%02X%02X%02X%02X%02X%02X",\r
+ &addr_bytes[0], &addr_bytes[1], &addr_bytes[2],\r
+ &addr_bytes[3], &addr_bytes[4], &addr_bytes[5]);\r
+ if (count != 6) {\r
+ return 0;\r
+ }\r
+ }\r
+ \r
+ // 蓝牙地址是反向存储的\r
+ addr->addr[0] = (unsigned char)addr_bytes[5];\r
+ addr->addr[1] = (unsigned char)addr_bytes[4];\r
+ addr->addr[2] = (unsigned char)addr_bytes[3];\r
+ addr->addr[3] = (unsigned char)addr_bytes[2];\r
+ addr->addr[4] = (unsigned char)addr_bytes[1];\r
+ addr->addr[5] = (unsigned char)addr_bytes[0];\r
+ \r
+ return 1;\r
+}\r
+\r
+// 解绑远程设备\r
+int BluetoothModel::UnBindRemoteDevice(const char *mac)\r
+{\r
+ if (mac == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UnBindRemoteDevice mac is nullptr");\r
+ return 0;\r
+ }\r
+ bd_addr_t addr = {0};\r
+ if (parse_bt_address((char*)mac, &addr) != 1) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ERROR: Invalid Bluetooth address format");\r
+ return ERRCODE_FAIL;\r
+ }\r
+ bool ret = gap_remove_pair(&addr);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_remove_pair %d", ret);\r
+ if(ret == false)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UnBindRemoteDevice gap_remove_pair ret = 0");\r
+ char *bluetoothStatus = "UNBIND_FAILED";\r
+ do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_BLUETOOTH_STATUS_REPORT, bluetoothStatus, strlen(bluetoothStatus));\r
+ }\r
+ else\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UnBindRemoteDevice gap_remove_pair ret = 1");\r
+ char *bluetoothStatus = "UNBIND_SUCCESS";\r
+ do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_BLUETOOTH_STATUS_REPORT, bluetoothStatus, strlen(bluetoothStatus));\r
+ }\r
+ return ret;\r
+}\r
+\r
// 设置绑定的本地设备MAC地址\r
void BluetoothModel::SetBoundDeviceMac(const char *mac)\r
{\r
bdAddr->addr[3], bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], status); /* addr下标 0 1 2 3 */\r
if(status == GAP_PAIR_NONE){\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "取消配对");\r
- char *bluetoothStatus = "UNBIND_SUCCESS";\r
- do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_BLUETOOTH_STATUS_REPORT, bluetoothStatus, strlen(bluetoothStatus));\r
+ // char *bluetoothStatus = "UNBIND_SUCCESS";\r
+ // do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_BLUETOOTH_STATUS_REPORT, bluetoothStatus, strlen(bluetoothStatus));\r
} else if(status == GAP_PAIR_PAIRING){\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "正在配对");\r
} else if(status == GAP_PAIR_PAIRED){\r