BLE不绑定【至急】
-
@刘流鎏
我现在的代码就是按照上述这么写的,但是还是会出现绑定的情况:
代码:uint8_t local_name[] = "XXXXX";
gap_set_dev_name(local_name, sizeof(local_name));
os_timer_init( &update_param_timer,param_timer_func,NULL);gap_security_param_t param =
{
.mitm = false,
.ble_secure_conn = false,
.io_cap = GAP_IO_CAP_NO_INPUT_NO_OUTPUT,
.pair_init_mode = GAP_PAIRING_MODE_WAIT_FOR_REQ,
.bond_auth = false,
.password = 0,
};
// Initialize security related settings.
gap_security_param_init(¶m);gap_set_cb_func(app_gap_evt_cb);
random_data_init();
ts_dev_reg_init();
ts_adv_init();//enable bond manage module, which will record bond key and peer service info into flash.
//and read these info from flash when func: "gap_bond_manager_init" executes.
gap_bond_manager_init(BLE_BONDING_INFO_SAVE_ADDR, BLE_REMOTE_SERVICE_SAVE_ADDR, 8, false);
gap_bond_manager_delete_all();mac_addr_t addr;
gap_address_get(&addr);
co_printf("Local BDADDR: 0x%2X%2X%2X%2X%2X%2X\r\n", addr.addr[0], addr.addr[1], addr.addr[2], addr.addr[3], addr.addr[4], addr.addr[5]);ts_dev_conn_init();
Log:
Adv Data: 0x17 0x16 0xEE 0xFD 0x01 0x01 0x0D 0x04 0x00 0x11 0xF0 0x12 0x32 0x4A 0x55 0x47 0xFF 0x17 0x01 0x15 0x14 0x02 0x35 0x61 0x00 0x00 0x00 0x00
Data lens: 28
Resp Data: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Data lens: 31
Resp Data: 0x1A 0x09 0x48 0x69 0x2D 0x54 0x61 0x69 0x6C 0x47 0x54 0x61 0x69 0x6C 0x47 0x2D 0x31 0x32 0x4A 0x55 0x47 0x30 0x30 0x61 0x35 0x35 0x61 0x00 0x00 0x00 0x00
Data lens: 31
Local BDADDR: 0x415D393734D5
GAP_EVT_NO: 0x00
All service added
Start advertising...GATT_EVT_NO: 0x07
GATT_EVT: GATTC_MSG_LINK_CREATE
link_createdaddr_type:1
GAP_EVT_NO: 0x01
slave[0],connect. link_num:1
GAP_EVT_NO: 0x09
adv_end,status:0x00
b_rGAP_EVT_NO: 0x17
GAP_SEC_EVT_BOND_START
[SEC]:peer,auth_req:d
GAP_EVT_NO: 0x19
GAP_SEC_EVT_BOND_SUCCESS【这里通知了BOND成功】
我这边业务场景不能有bond,出现bond success就走不下去了。
-
@zhaoxiucheng 在 BLE不绑定【至急】 中说:
GAP_SEC_EVT_BOND_SUCCESS
GAP_SEC_EVT_BOND_SUCCESS 就是表示配对成功的意思, 是在协议栈收到GAPC_PAIRING_SUCCEED, 通知应用层配对成功
case (GAPC_PAIRING_SUCCEED):
{
gap_event_t evt;
evt.type = GAP_SEC_EVT_BOND_SUCCESS;
evt.param.bond_success_conidx = KE_IDX_GET(src_id);
if(app_env.gap_evt_func)
app_env.gap_evt_func( &evt );
...
-
我这边目前出现bond success之后流程就走不下去,但是如果没有bond success就可以走,概率性会出现没有bond success返回的情况
这种情况下一般是什么原因呢
我看文档:.bond_auth = false,这个只是代码是否发送Key,不涉及是否进行绑定操作呢
@刘流鎏
-
-
@刘流鎏 目前我们测试的状况:
没有收到GAP_SEC_EVT_BOND_SUCCESS:
可以接收到GATT write的消息接收到GAP_SEC_EVT_BOND_SUCCESS:
手机侧发送GATT write消息就会收不到
-
@zhaoxiucheng
拿nrf connect App 测一下. 一般情况配对不影响gatt write.
-
接收到Bond成功,没有反映:
freqchipfreqchipfreqchipfreqchipBLE Peripheral
Local BDADDR: 0x415D393734D5
GAP_EVT_NO: 0x00
All service added
Start advertising...GATT_EVT_NO: 0x07
GATT_EVT: GATTC_MSG_LINK_CREATE
link_createdaddr_type:1
GAP_EVT_NO: 0x01
slave[0],connect. link_num:1
GAP_EVT_NO: 0x09
adv_end,status:0x00
b_r
GAP_EVT_NO: 0x17
GAP_SEC_EVT_BOND_START
[SEC]:peer,auth_req:d
GAP_EVT_NO: 0x19
GAP_SEC_EVT_BOND_SUCCESS未接收到Bond Success:
freqchipfreqchipfreqchipfreqchipBLE Peripheral
Local BDADDR: 0x415D393734D5
GAP_EVT_NO: 0x00
All service added
Start advertising...GATT_EVT_NO: 0x07
GATT_EVT: GATTC_MSG_LINK_CREATE
link_createdaddr_type:1
GAP_EVT_NO: 0x01
slave[0],connect. link_num:1
GAP_EVT_NO: 0x09
adv_end,status:0x00
GAP_EVT_NO: 0x06
Link[0]param update,interval:9,latency:0,timeout:500
GAP_EVT_NO: 0x06
Link[0]param update,interval:6,latency:0,timeout:500GATT_EVT_NO: 0x01
GATT_EVT: GATTC_MSG_WRITE_REQ
GATT_IDX_READ_CFG:0x02,0x00,GAP_EVT_NO: 0x06
Link[0]param update,interval:9,latency:0,timeout:500
GAP_EVT_NO: 0x10
mtu update,conidx=0,mtu=247GATT_EVT_NO: 0x01
GATT_EVT: GATTC_MSG_WRITE_REQ
write_recv:
0x00,0xD8,0x01,0x00,0x00,0x00,0x00,0x11,0x09,0x6E,0x65,0x74,0x43,0x66,0x67,0x56,0x65,0x72,0x00,0x00,
GATT_EVT: gatt_write_reqGATT_EVT_NO: 0x06
GATT_EVT_NO: 0x08
GATT_EVT: GATTC_MSG_LINK_LOST
link_lostGAP_EVT_NO: 0x03
Link[0] disconnect,reason:0x13
Start advertising...
-
@刘流鎏
学习一下这个资料docs\Application Notes\Fr801xH 如何构建多从机工程.pdf, 芯片不熟悉引起的若干问题
-
@刘流鎏
目前通过nRF connect测试结果如下:- 先进行Bond,然后在Bond页面点击连接无法连接成功
- 进入nRF connect直接点击连接,可以正常连接并且收发数据
- 进入nRF connect点击连接(without bond),进行连接,连接后点击bond进行绑定,此时进行收发数据,设备端没有任何返回,无反应状态,显示【connect/bonded(左上角)】的位置一直在转圈
关于3的log为:
addr_type:1
GAP_EVT_NO: 0x01
slave[0],connect. link_num:1
GAP_EVT_NO: 0x09
adv_end,status:0x00
GAP_EVT_NO: 0x06
Link[0]param update,interval:9,latency:0,timeout:500
GAP_EVT_NO: 0x06
Link[0]param update,interval:6,latency:0,timeout:2000
GAP_EVT_NO: 0x06
Link[0]param update,interval:9,latency:0,timeout:500
b_r
GAP_EVT_NO: 0x17
GAP_SEC_EVT_BOND_START
[SEC]:peer,auth_req:d
GAP_EVT_NO: 0x06
Link[0]param update,interval:6,latency:0,timeout:2000
GAP_EVT_NO: 0x19
GAP_SEC_EVT_BOND_SUCCESS
-
要bond 完成再收发数据
-
GAP_SEC_EVT_BOND_START
[SEC]:peer,auth_req:d
GAP_EVT_NO: 0x06
Link[0]param update,interval:6,latency:0,timeout:2000
GAP_EVT_NO: 0x19
GAP_SEC_EVT_BOND_SUCCESS
这个log走完,并且nRF connect上面显示了Bonded之后我才发送的数据,发送完数据就会出现
【此时进行收发数据,设备端没有任何返回,无反应状态,显示【connect/bonded(左上角)】的位置一直在转圈】
发送数据之前,左上角没有转圈,发送之后才开始转圈的
-
此回复已被删除!