绑定信息管理,其他帖子中看到GAPBondMgr_ResolveAddr,但我的库没有这个函数。

帖子:https://www.wch.cn/bbs/thread-70141-2.html

参考上帖子,我需求是在bondsave后得到当前publicaddr,和addrtype用于后面使用GAPBondMgr_SetParameter(GAPBOND_ERASE_SINGLEBOND,6+1,&addr);删除bond信息。

但我使用的CH573F例程中的库没有GAPBondMgr_ResolveAddr这个函数,如何操作?

                    tmos_snv_read(mainRecordNvID(bond_id), sizeof(gapBondRec_t), buf+1);    //获取一个绑定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);



或者说我只要bondsave后知道他保存的ID是多少就行,正常0、1、2、3这样的,但如果我删除1,新绑定的信息就会保存到1上,bondsave有返回吗?


您好,参考代码见下。

#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 );

}


只有登录才能回复,可以选择微信账号登录