{
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与本地不一致");
}
}
}