ble扫描过滤去除,ble read属性更新 416/4 416/head
authorhcj <1224667075@qq.com>
Sat, 29 Jun 2024 10:05:40 +0000 (18:05 +0800)
committerhcj <1224667075@qq.com>
Sat, 29 Jun 2024 10:05:40 +0000 (18:05 +0800)
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c

index 2dd3fc9..df0c441 100644 (file)
@@ -601,8 +601,8 @@ void BtGapPairConfirmedCallback(const bd_addr_t *bdAddr, int req_type, int numbe
 void BtGapDiscoveryResultCallback(const bd_addr_t *bdAddr)\r
 {\r
     if ((gap_get_device_class(bdAddr) & 0x200) != 0) {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapDiscoveryResultCallback: Mobile Phone Device");\r
-        return;\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BtGapDiscoveryResultCallback: Mobile Phone Device");\r
+        //return;\r
     }\r
 \r
     if (bdAddr == nullptr) {\r
@@ -795,12 +795,12 @@ void BluetoothModel::BtGapAclStateChangedHandle(gap_acl_state_t state, unsigned
 // 回调:ACL连接状态上报\r
 void GapAclStateChangedCallback(const bd_addr_t *bdAddr, gap_acl_state_t state, unsigned int reason)\r
 {\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt GapAclStateChangedCallback state %d, reason %x succ or err", state, reason);\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "addr: %02x%02x%02x%02x%02x%02x",\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt GapAclStateChangedCallback state %d, reason %x succ or err", state, reason);\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "addr: %02x%02x%02x%02x%02x%02x",\r
         bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
         bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
     if ((gap_get_device_class(bdAddr) & 0x200) != 0) {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback: Mobile Phone Device");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback: Mobile Phone Device");\r
         return;\r
     }\r
     GraphicService::GetInstance()->PostGraphicEvent(\r
@@ -971,6 +971,22 @@ static void BtGattsRequestWriteCallback(uint8_t serverId, uint16_t connId, gatts
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsRequestWriteCallback");\r
 }\r
 \r
+/* 与设备建立A2DP连接 */\r
+static int wstp_a2dp_snk_connect(const bd_addr_t *bd_addr)\r
+{\r
+    int ret = a2dp_snk_connect(bd_addr);\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP,"a2dp_snk_connect ret(int): %x\n", ret);\r
+    return ret;\r
+}\r
+\r
+/* 与设备断开A2DP连接 */\r
+static int wstp_a2dp_snk_disconnect(const bd_addr_t *bd_addr)\r
+{\r
+    int ret = a2dp_snk_disconnect(bd_addr);\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP,"a2dp_snk_disconnect ret(int): %x\n", ret);\r
+    return ret;\r
+}\r
+\r
 static void BtA2dpSnkAcceptTimerStop(void)\r
 {\r
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "stop timer\n");\r
@@ -1045,6 +1061,7 @@ static void BtA2dpSnkConnectStateChangedCb(bd_addr_t *bd_addr, int conn_state)
 {\r
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x conn_state: %x\n",\r
         bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0], conn_state); /* 3 2 1 0 idx */\r
+    \r
 }\r
 \r
 static void BtA2dpSnkStartStreamReqCb(bd_addr_t *bd_addr)\r
@@ -1129,9 +1146,6 @@ void BtA2dpInit(void)
 \r
 void BtA2dpDeInit(void)\r
 {\r
-\r
-    \r
-    \r
     a2dp_src_deregister_callbacks(&g_a2dpSrcCallbacks);\r
     a2dp_snk_deregister_callbacks(&g_a2dp_snk_callbacks);\r
 \r
index 402d075..25ed5dd 100644 (file)
@@ -38,7 +38,7 @@ extern "C" {
 #include "build_version.h"\r
 #include "custom_runtime.h"\r
 #include "custom_utils.h"\r
-\r
+#include "bletest.h"\r
 \r
 \r
 // extern void bts_data_to_uuid_len2(uint16_t uuid_data, bt_uuid_t *out_uuid);\r
@@ -108,6 +108,7 @@ uint16_t ble_nus_max_data_len = SDK_BLE_MTU_MIN - 3;
 uint16_t data2ae3Cmd = 0;//2ae3短指令特征值\r
 uint16_t data2ae4Cmd = 0;\r
 uint16_t data2ae5Cmd = 0;\r
+uint16_t data2ae2Cmd = 0;//read\r
 uint16_t data2ae1Cmd = 0;//安卓消息来电\r
 uint16_t data2ae0Cmd = 0;//OTA\r
 \r
@@ -122,7 +123,7 @@ enum{
     BLE_CHARACTERISTIC_SNED_LONG_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,\r
     BLE_CHARACTERISTIC_SNED_OTA_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,\r
     BLE_CHARACTERISTIC_SNED_ANDRIOD_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,\r
-    BLE_CHARACTERISTIC_READ_BATTERY_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_READ,\r
+    BLE_CHARACTERISTIC_READ_BATTERY_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_READ|GATT_CHARACTER_PROPERTY_BIT_NOTIFY,\r
 };\r
 static uint8_t ble_adv_falg = 0;\r
 void svr_ble_adv_stop(void)\r
@@ -876,6 +877,9 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
     {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "2ae2 result->value_handle6  %d\r\n",result->value_handle);\r
         // shortCmdChara = result->value_handle;\r
+         if(data2ae2Cmd == 0){\r
+            data2ae2Cmd = result->value_handle;\r
+        }\r
     }\r
     if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data_2ae4))\r
     {\r
@@ -984,13 +988,111 @@ errcode_t svr_ble_bt_gatts_noyify(uint8_t *data, uint16_t data_len)//这里是
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.data_len:%d", ret, g_ble_server_id,\r
         g_ble_conn_id, g_ble_server_handle,data_len);\r
     \r
-    return ret;\r
+    return ret;  \r
+}\r
+\r
+errcode_t svr_ble_read_data_value_updata_noyify(void)//2ae2\r
+{\r
+    gatts_ntf_ind_t data_info;\r
+    data_info.attr_handle = data2ae2Cmd;\r
+    static uint8_t battery_point_val[20] = {0};\r
+    // 获取电池电压值\r
+    float voltage = 0.0F;\r
+    uint8_t power = 0;\r
+    power =battery_get_voltage(&voltage);\r
+    battery_point_val[0] +=1;//power ;//power;//电量90\r
+    uint16_t dial = ble_get_dial_id();\r
+    memcpy_s(&battery_point_val[1],2,&dial,2);\r
+\r
+    uint8_t _major,_mid,_minor;\r
+    uapi_get_fw_version(&_major,&_mid,&_minor);\r
+\r
+    battery_point_val[3] = _major;//固件版本号\r
+    battery_point_val[4] = _mid;\r
+    battery_point_val[5] = _minor;\r
+\r
+    bd_addr_t addr_info;\r
+    errcode_t ret = gap_ble_get_local_addr(&addr_info);\r
+    battery_point_val[6] = addr_info.addr[5];\r
+    battery_point_val[7] = addr_info.addr[4];\r
+    battery_point_val[8] = addr_info.addr[3];\r
+    battery_point_val[9] = addr_info.addr[2];\r
+    battery_point_val[10] = addr_info.addr[1];\r
+    battery_point_val[11] = addr_info.addr[0];\r
+\r
+    battery_point_val[12] = 0;//消息推送开关 默认是关闭 0\r
+    battery_point_val[13] = 0;//多媒体开关\r
+    battery_point_val[14] = 5;//客户编号\r
+    battery_point_val[15] = 5;//产品编号\r
+\r
+    battery_point_val[16] = 0;//硬件版本号\r
+    battery_point_val[17] = 1;\r
+\r
+    battery_point_val[18] = 0;//ble版本号\r
+    battery_point_val[19] = 1;\r
+\r
+\r
+    data_info.value = battery_point_val;\r
+    data_info.value_len = 20;\r
+     ret = gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.data_len:%d", ret, g_ble_server_id,\r
+        g_ble_conn_id, g_ble_server_handle,20);\r
     \r
+    return ret;  \r
 }\r
+\r
+\r
 static void svr_ble_bt_gatts_req_read_cb(uint8_t server_id, uint16_t conn_id, gatts_req_read_cb_t *read_cb_para,\r
     errcode_t status)\r
 {\r
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "svr_ble_bt_gatts_req_read_cb ret:is_long:%d",read_cb_para->is_long);\r
+\r
+    //WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_ble_bt_gatts_req_read_cb ret:is_long:%d  2ae2 %d read_cb_para->handle :%d",read_cb_para->is_long,data2ae2Cmd,read_cb_para->handle);\r
+    if(read_cb_para->handle!=data2ae2Cmd)\r
+    return;\r
+\r
+    static uint8_t battery_point_val[20] = {0};\r
+    // 获取电池电压值\r
+    float voltage = 0.0F;\r
+    uint8_t power = 0;\r
+    power =battery_get_voltage(&voltage);\r
+    battery_point_val[0] =power;//power ;//power;//电量90\r
+    uint16_t dial = ble_get_dial_id();\r
+    memcpy_s(&battery_point_val[1],2,&dial,2);\r
+\r
+    uint8_t _major,_mid,_minor;\r
+    uapi_get_fw_version(&_major,&_mid,&_minor);\r
+\r
+    battery_point_val[3] = _major;//固件版本号\r
+    battery_point_val[4] = _mid;\r
+    battery_point_val[5] = _minor;\r
+\r
+    bd_addr_t addr_info;\r
+    errcode_t ret = gap_ble_get_local_addr(&addr_info);\r
+    battery_point_val[6] = addr_info.addr[5];\r
+    battery_point_val[7] = addr_info.addr[4];\r
+    battery_point_val[8] = addr_info.addr[3];\r
+    battery_point_val[9] = addr_info.addr[2];\r
+    battery_point_val[10] = addr_info.addr[1];\r
+    battery_point_val[11] = addr_info.addr[0];\r
+\r
+    battery_point_val[12] = 0;//消息推送开关 默认是关闭 0\r
+    battery_point_val[13] = 0;//多媒体开关\r
+    battery_point_val[14] = 5;//客户编号\r
+    battery_point_val[15] = 5;//产品编号\r
+\r
+    battery_point_val[16] = 0;//硬件版本号\r
+    battery_point_val[17] = 1;\r
+\r
+    battery_point_val[18] = 0;//ble版本号\r
+    battery_point_val[19] = 1;\r
+\r
+    static gatts_ntf_ind_t  gatts_ntf_ind;\r
+    gatts_ntf_ind.attr_handle=read_cb_para->handle;\r
+    gatts_ntf_ind.value=battery_point_val;\r
+    gatts_ntf_ind.value_len=20;\r
+    //read_cb_para->need_rsp=0;\r
+    gatts_notify_indicate(server_id,conn_id,&gatts_ntf_ind);\r
 }\r
 \r
 \r