帖子:http://m.findthetime.net/bbs/thread-70141-2.html
參考上帖子,我需求是在bondsave后得到當(dāng)前publicaddr,和addrtype用于后面使用GAPBondMgr_SetParameter(GAPBOND_ERASE_SINGLEBOND,6+1,&addr);刪除bond信息。
但我使用的CH573F例程中的庫(kù)沒(méi)有GAPBondMgr_ResolveAddr這個(gè)函數(shù),如何操作?
帖子:http://m.findthetime.net/bbs/thread-70141-2.html
參考上帖子,我需求是在bondsave后得到當(dāng)前publicaddr,和addrtype用于后面使用GAPBondMgr_SetParameter(GAPBOND_ERASE_SINGLEBOND,6+1,&addr);刪除bond信息。
但我使用的CH573F例程中的庫(kù)沒(méi)有GAPBondMgr_ResolveAddr這個(gè)函數(shù),如何操作?
????????????????????tmos_snv_read(mainRecordNvID(bond_id), sizeof(gapBondRec_t), buf+1);? ? //獲取一個(gè)綁定MAC
? ? ? ? ? ? ? ? ? ? printf("MAC = ");
? ? ? ? ? ? ? ? ? ? for(uint8 i = 0; i < sizeof(gapBondRec_t); i++){
? ? ? ? ? ? ? ? ? ? ? ? printf("%02x ", buf[i+1]);
? ? ? ? ? ? ? ? ? ? }printf("\r\n");
? ? ? ? ? ? ? ? ? ? buf[0]=0x01;
? ? ? ? ? ? ? ? ? ? bondmgr_tf=GAPBondMgr_SetParameter(GAPBOND_ERASE_SINGLEBOND,6+1,&buf);
或者說(shuō)我只要bondsave后知道他保存的ID是多少就行,正常0、1、2、3這樣的,但如果我刪除1,新綁定的信息就會(huì)保存到1上,bondsave有返回嗎?
您好,參考代碼見(jiàn)下。
#define GAP_BONDINGS_MAX 4
uint8_t resolve_public_addr(uint8_t addrType,uint8_t *pDevAddr,uint8_t *pResolvedAddr ) {
? ? uint8 idx = GAP_BONDINGS_MAX;
? ? uint8_t mac_read[6];
? ? uint8_t irk[16];
? ? switch ( addrType ) {
? ? case ADDRTYPE_PUBLIC:
? ? case ADDRTYPE_STATIC:
? ? ? ? for ( uint8 idx = 0; idx < GAP_BONDINGS_MAX; idx++ )
? ? ? ? {
? ? ? ? ? ? tmos_snv_read( mainRecordNvID(idx), 6, mac_read);
? ? ? ? ? // Read in NV Main Bond Record and compare public address
? ? ? ? ? if ( tmos_memcmp( mac_read, pDevAddr, B_ADDR_LEN ) )
? ? ? ? ? {
? ? ? ? ? ? ? tmos_memcpy(pResolvedAddr,mac_read,B_ADDR_LEN);
? ? ? ? ? ? return ( idx ); // Found it
? ? ? ? ? }
? ? ? ? }
? ? ? ? break;
? ? case ADDRTYPE_PRIVATE_NONRESOLVE:
? ? case ADDRTYPE_PRIVATE_RESOLVE:
? ? ? ? if ( tmos_snv_read( devIRKNvID(idx), 16, irk ) == SUCCESS ) {
? ? ? ? ? ? if ( (tmos_isbufset( irk, 0xFF, 16 ) == FALSE ) &&
? ? ? ? ? ? ? ? ? ? ( GAP_ResolvePrivateAddr( irk, pDevAddr ) == SUCCESS ) ){
? ? ? ? ? ? ? ? ? ? ?tmos_snv_read( mainRecordNvID(idx), 6, pResolvedAddr);
? ? ? ? ? ? ? ? ? ? ?return ( idx ); // Found it
? ? ? ? ? ? ? ? ?}
? ? ? ? }
? ? }
? ? return ( idx );
}