QCC300x笔记(8) -- 从一个客户需求说说传统蓝牙的PBAP

哈喽大家好,这是该系列博文的第八篇~ 篇~

<<【系列博文索引】快速通道 >>

写在前面:客户提出一个新需求,来电时根据号码获取联系人名称,显示在UI上;

1、首先从协议文档中查找,有关的只有VCardList和VCardEntry,协议中有一张图,vCardList的内容中包含了name,如下图:

QCC300x笔记(8) -- 从一个客户需求说说传统蓝牙的PBAP_第1张图片

2、在QCC3007的sink工程中查找到有关UE事件:

    EventUsrPbapBrowseList

    EventUsrPbapBrowseListByName

3、通过这两个事件可以设置通过号码查找和通过联系人名称查找,如下图:

QCC300x笔记(8) -- 从一个客户需求说说传统蓝牙的PBAP_第2张图片

 

总结一下设置流程:

1、首先设置setphonebook,设置command,然后设置搜索方式和字符串内容,如图:

QCC300x笔记(8) -- 从一个客户需求说说传统蓝牙的PBAP_第3张图片

2、然后成功后,会在handlePbapMessages处理函数中上报PBAPC_SET_PHONEBOOK_CFM事件,然后进入对应的处理handlePbapSetPhonebookCfm();

3、因为前面设置了command,所以会发送PBAPC_APP_PULL_VCARD_LIST事件;

QCC300x笔记(8) -- 从一个客户需求说说传统蓝牙的PBAP_第4张图片

4、这个时候会在handlePbapMessages处理函数中进入PBAPC_APP_PULL_VCARD_LIST事件,然后进入对应的处理handleAppPullVcardList(),如图,这个时候会给vCardList结构体赋值,然后调用PbcpcPullVcardListingRequest();

QCC300x笔记(8) -- 从一个客户需求说说传统蓝牙的PBAP_第5张图片

5、成功后,会在handlePbapMessages处理函数中上报PBAPC_PULL_VCARD_LISTING_CFM事件,然后进入对应的处理handlePullVCardListCfm(),在这里会打印出VCardList格式的字符串,其中的name就是我们需要的,如图:

QCC300x笔记(8) -- 从一个客户需求说说传统蓝牙的PBAP_第6张图片

QCC300x笔记(8) -- 从一个客户需求说说传统蓝牙的PBAP_第7张图片

The pb data is:

    Requesting complete.

6、通过如下方法,获取我们需要的字符段;如图

QCC300x笔记(8) -- 从一个客户需求说说传统蓝牙的PBAP_第8张图片

 

你可能感兴趣的:(QCC300x)