Merge branch 'fd272' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230...
authorcaisking <caiyqm@qq.com>
Fri, 22 May 2026 09:44:35 +0000 (17:44 +0800)
committercaisking <caiyqm@qq.com>
Fri, 22 May 2026 09:44:35 +0000 (17:44 +0800)
1  2 
code/sdk/zhihui/services/ble_service/bleservice/bleEvent.c
code/sdk/zhihui/utils/custom_utils.c

@@@ -1343,13 -1415,18 +1422,19 @@@ bool get_ctkd_flag(void
  {
      return true;//ctkd_flag_ble;
  }
+ 
  void sendBindInfor(uint8_t *data)
  {
-     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
-         "[连接时序][App绑定] 收到73_02_10手机信息 conn_id=%u(主连接句柄)",
-         g_ble_conn_id);
-     uint8_t value[19];
+     // 1. 入参校验(新增:防止空指针)
+     if (data == NULL) {
+         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[Bind] 入参data为空,直接返回");
+         return;
+     }
+     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[Bind] 开始处理绑定信息,入参data有效");
+ 
+     // 初始化基础指令缓冲区(保持原有)
+     uint8_t value[19] = {0};
 +    memset(value,0,19);
      uint32_t tmp = 1;
      uint16_t tmp_fen= 1;
      value[0] =0x72;
      memset(save_mac,0,6);
      uint8_t MacType = 0;
      
-     GetwatchSaveMac(&save_mac,&MacType);//获取手表设备本地保存的mac地址和mac地址类型 
+     // 获取手表本地MAC - 添加错误日志
+     GetwatchSaveMac(&save_mac,&MacType);
+     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[Bind] 手表本地保存MAC: %02X:%02X:%02X:%02X:%02X:%02X, MAC类型: %d",
+                    save_mac[0], save_mac[1], save_mac[2], save_mac[3], save_mac[4], save_mac[5], MacType);
+     
+     // 获取手机MAC - 添加错误日志
      getPhoneMac(data,&copare_mac);
 -    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[Bind] 手机下发MAC: %02X:%02X:%02X:%02X:%02X:%02X",
 -                   copare_mac[0], copare_mac[1], copare_mac[2], copare_mac[3], copare_mac[4], copare_mac[5]);
 +    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
 +        "[连接时序][App绑定] MAC比对 本地=%02x:%02x:%02x:%02x:%02x:%02x App上报=%02x:%02x:%02x:%02x:%02x:%02x",
 +        save_mac[5], save_mac[4], save_mac[3], save_mac[2], save_mac[1], save_mac[0],
 +        copare_mac[5], copare_mac[4], copare_mac[3], copare_mac[2], copare_mac[1], copare_mac[0]);
  
-     if(save_mac[0] == 0 && save_mac[1] == 0 && save_mac[2] == 0 && save_mac[3] == 0 && save_mac[4] == 0 && save_mac[5] == 0)//只要手表本地存储没有mac地址就走连接流程重新绑定
+     // 场景1:手表本地无保存的MAC(首次绑定)
+     if(save_mac[0] == 0 && save_mac[1] == 0 && save_mac[2] == 0 && save_mac[3] == 0 && save_mac[4] == 0 && save_mac[5] == 0)
      {
          bond = 0x01;//手表未和任何手机绑定过
 -        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[Bind] 手表本地无绑定MAC,进入首次绑定流程,bond标识: %d", bond);
 -        
 -        // 构造绑定指令并发送
 -        value[17] = bond;
 +        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
 +            "[连接时序][App绑定] 判定=首次绑定(bond=0x01) 将弹绑定界面");
 +        //未配过使能一键双联
 +
 +        //清除一次配对
 +        //if(get_ble_pair())
 +       
 +        //
 +        value[17] = bond;//
          value[18] = Calculate_CRC(value,18);
          sendBleData(value,19);
+         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[Bind] 发送首次绑定指令,CRC: 0x%02X", value[18]);
  
          #ifdef SUPPORT_DEVICE_PAIRING_NOTIFICATION
          #ifdef SUPPORT_A5133_SERVICE_BLE_PAIR
                  {
                      bd_addr_t addr={0};
                      get_phone_addr(&addr,g_ble_conn_id);
- 
-                     errcode_t code = gap_ble_pair_remote_device(&addr);
-                     if(code!=ERRCODE_SUCC)
-                     {
-                           WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"gap_ble_pair_remote_device fail %X\r\n",code);
+                     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[Bind] 尝试配对远程设备,地址: %02X:%02X:%02X:%02X:%02X:%02X",
+                                    addr.addr[0], addr.addr[1], addr.addr[2], addr.addr[3], addr.addr[4], addr.addr[5]);
+                     
+                     ret = gap_ble_pair_remote_device(&addr);
+                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[Bind][错误/关键] 配对远程设备返回值: 0x%X", ret);
+                     if(ret != ERRCODE_SUCC) {
+                         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[Bind][错误] 配对远程设备失败!错误码: 0x%X", ret);
                      }
                  }
-      
+         
                  bond = 0x02;//手表与该手机绑定过
 -                value[17] = bond;
 +                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
 +                    "[连接时序][App绑定] 判定=同机重连(bond=0x02) 将发起BLE配对");
 +                value[17] = bond;//
                  value[18] = Calculate_CRC(value,18);
                  sendBleData(value,19);
+                 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[Bind] 发送同一手机绑定指令,CRC: 0x%02X", value[18]);
                  return;
-             }else{
+             }
+             else // MAC不一致(其他手机)
+             {
                  bond = 0x03;//手表与其他手机绑定过
 -                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[Bind][错误] 手机MAC与手表保存MAC不一致,判定为其他手机绑定过,bond标识: %d", bond);
 +                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
 +                    "[连接时序][App绑定] 判定=已绑其他手机(bond=0x03) App MAC与本地不一致");
              }
          }
      }
Simple merge