操作步骤:
1、先连接配对并绑定手机,并将手机Mac存入gTempMac
2、断开手机连接
3、触发下面接口,删除已经存储到SNV中对应的LTK
GAPBondMgr_SetParameter(GAPBOND_ERASE_SINGLEBOND, B_ADDR_LEN, gTempMac);
结果并没有删除对应LTK。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
操作步骤:
1、先连接配对并绑定手机,并将手机Mac存入gTempMac
2、断开手机连接
3、触发下面接口,删除已经存储到SNV中对应的LTK
GAPBondMgr_SetParameter(GAPBOND_ERASE_SINGLEBOND, B_ADDR_LEN, gTempMac);
结果并没有删除对应LTK。
您是希望绑定一次吗?
STK 是配对以后产生的临时key,如果不绑定,只会在这一次连接的时候有用,下一次连接的时候需要重新配对绑定。
LTK,就是Long term key,是绑定之后产生的,并且会保存在NV 里面,下次连接后能继续使用,不再需要重新配对。
会不会用STK会更好
看您之前帖子,
GAPBOND_ERASE_SINGLEBOND是删除单个纪录
GAPBOND_ERASE_ALLBONDS是删除所有记录
这两个api无效吗
GAPBOND_ERASE_SINGLEBOND
我的调用方式如下,操作流程见问题描述
1、先连接配对并绑定手机,并将手机Mac存入gTempMac
2、断开手机连接
3、触发下面接口,删除已经存储到SNV中对应的LTK
GAPBondMgr_SetParameter(GAPBOND_ERASE_SINGLEBOND, B_ADDR_LEN, gTempMac);
结果并没有删除对应LTK。
GAPBondMgr_SetParameter(GAPBOND_ERASE_SINGLEBOND, B_ADDR_LEN, gTempMac),我存储了上次连接手机的MAC,断开后触发调用该接口,但是再次连接后无需配对,我认为LTK删除失败
1.但这个allbonds是不符合你们需求?
2.在allbonds调用和single调用 有什么差异吗
按理说应该是一样的结果 都可以成功擦除
3.我目前没找到其他更简便的方法 一般来说都是用API
For anyone having issues with deleting a single bond, here is the code:
uint8_t remote_addr[B_ADDR_LEN]; uint8_t peer_addr[B_ADDR_LEN+1] = {0}; GAPRole_GetParameter(GAPROLE_BD_ADDR_TYPE, &peer_addr[0]); GAPRole_GetParameter(GAPROLE_CONN_BD_ADDR, &remote_addr[0]); VOID revmemcpy( &peer_addr[1], remote_addr, B_ADDR_LEN ); GAPBondMgr_SetParameter(GAPBOND_ERASE_SINGLEBOND, B_ADDR_LEN+1, peer_addr); static void *revmemcpy( void *dst, const void GENERIC *src, unsigned int len ) { uint8_t *pDst; const uint8_t GENERIC *pSrc; pSrc = src; pSrc += (len-1); pDst = dst; while ( len-- ) *pDst++ = *pSrc--; return ( pDst ); }
试一下这个