• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License. * Description: BT PBAP module.
14  */
15 
16 /**
17  * @defgroup bluetooth_bts_pbap_pce PBAP PCE API
18  * @ingroup  bluetooth
19  * @{
20  */
21 
22 #ifndef BTS_PBAP_H
23 #define BTS_PBAP_H
24 
25 #include "bts_def.h"
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 /**
32  * @if Eng
33  * @brief Length of PBAP mask.
34  * @else
35  * @brief PBAP掩码长度。
36  * @endif
37  */
38 #define PBAP_MASK_LEN 8
39 
40 /**
41  * @if Eng
42  * @brief Enum of PBAP vCard format.
43  * @else
44  * @brief PBAP vCard格式取值。
45  * @endif
46  */
47 typedef enum {
48     PBAP_FORMAT_VCARD21 = 0x00, /*!< @if Eng PBAP vCard Format V2.1 @else PBAP vCard格式v2.1 @endif */
49     PBAP_FORMAT_VCARD30,        /*!< @if Eng PBAP vCard Format V3.0 @else PBAP vCard格式v3.0 @endif */
50 } pbap_format_vcard_t;
51 
52 /**
53  * @if Eng
54  * @brief Enum of PBAP storage type.
55  * @else
56  * @brief PBAP存储位置。
57  * @endif
58  */
59 typedef enum {
60     PBAP_REPOSITORY_LOCAL = 0x01, /*!< @if Eng PBAP Phone book repository telecom
61                                        @else PBAP电话簿存储位置在手机 @endif */
62     PBAP_REPOSITORY_SIM, /*!< @if Eng PBAP Phone book repository SIM1/telecom @else PBAP电话簿存储位置在SIM卡 @endif */
63 } pbap_repositories_t;
64 
65 /**
66  * @if Eng
67  * @brief Enum of PBAP order type.
68  * @else
69  * @brief PBAP排序类型。
70  * @endif
71  */
72 typedef enum {
73     PBAP_ORDER_INDEXED = 0x00, /*!< @if Eng PBAP order Indexed @else PBAP排序顺序为索引序 @endif */
74     PBAP_ORDER_ALPHANUMERIC,   /*!< @if Eng PBAP order Alphabetical @else PBAP排序顺序为字典序 @endif */
75     PBAP_ORDER_PHONETIC,       /*!< @if Eng PBAP order Phonetical @else PBAP排序顺序为语音序 @endif */
76 } pbap_order_type_t;
77 
78 /**
79  * @if Eng
80  * @brief Enum of search properties.
81  * @else
82  * @brief PBAP搜索属性。
83  * @endif
84  */
85 typedef enum {
86     PBAP_SEARCH_PROPERTY_NAME = 0x00, /*!< @if Eng PBAP Search Property Name @else PBAP搜索属性为名字 @endif */
87     PBAP_SEARCH_PROPERTY_NUMBER,      /*!< @if Eng PBAP Search Property Number @else PBAP搜索属性为号码 @endif */
88     PBAP_SEARCH_PROPERTY_SOUND,       /*!< @if Eng PBAP Search Property Sound @else PBAP搜索属性为读音 @endif */
89 } pbap_search_property_t;
90 
91 /**
92  * @if Eng
93  * @brief Enum of property mask type.
94  * @else
95  * @brief PBAP属性掩码取值。
96  * @endif
97  */
98 typedef enum {
99     PBAP_PROPERTY_MASK_VERSION = 0x00, /*!< @if Eng PBAP Property VERSION @else PBAP属性 vCard版本 @endif */
100     PBAP_PROPERTY_MASK_FN,             /*!< @if Eng PBAP Property FN @else PBAP属性 格式化名称 @endif */
101     PBAP_PROPERTY_MASK_N,              /*!< @if Eng PBAP Property N @else PBAP属性 名称的结构化表示 @endif */
102     PBAP_PROPERTY_MASK_PHOTO,          /*!< @if Eng PBAP Property PHOTO @else PBAP属性 相关图像或照片 @endif */
103     PBAP_PROPERTY_MASK_BDAY,           /*!< @if Eng PBAP Property BDAY @else PBAP属性 生日 @endif */
104     PBAP_PROPERTY_MASK_ADR,            /*!< @if Eng PBAP Property ADR @else PBAP属性 收货地址 @endif */
105     PBAP_PROPERTY_MASK_LABEL,          /*!< @if Eng PBAP Property LABEL @else PBAP属性 标签 @endif */
106     PBAP_PROPERTY_MASK_TEL,            /*!< @if Eng PBAP Property TEL @else PBAP属性 电话号码 @endif */
107     PBAP_PROPERTY_MASK_EMAIL,          /*!< @if Eng PBAP Property EMAIL @else PBAP属性 电子邮件地址 @endif */
108     PBAP_PROPERTY_MASK_MAILER,         /*!< @if Eng PBAP Property MAILER @else PBAP属性 电子邮件 @endif */
109     PBAP_PROPERTY_MASK_RTY_MASK_TZ,    /*!< @if Eng PBAP Property TZ @else PBAP属性 时区 @endif */
110     PBAP_PROPERTY_MASK_GEO,            /*!< @if Eng PBAP Property GEO @else PBAP属性 地理位置 @endif */
111     PBAP_PROPERTY_MASK_TITLE,          /*!< @if Eng PBAP Property TITLE @else PBAP属性 工作 @endif */
112     PBAP_PROPERTY_MASK_RTY_MASK_ROLE,  /*!< @if Eng PBAP Property ROLE @else PBAP属性 组织内的角色 @endif */
113     PBAP_PROPERTY_MASK_LOGO,           /*!< @if Eng PBAP Property LOGO @else PBAP属性 组织徽标 @endif */
114     PBAP_PROPERTY_MASK_RTY_MASK_AGENT, /*!< @if Eng PBAP Property AGENT @else PBAP属性 代表人员的vCard @endif */
115     PBAP_PROPERTY_MASK_ORG,            /*!< @if Eng PBAP Property ORG @else PBAP属性 组织名称 @endif */
116     PBAP_PROPERTY_MASK_NOTE,           /*!< @if Eng PBAP Property NOTE @else PBAP属性 注释 @endif */
117     PBAP_PROPERTY_MASK_REV,            /*!< @if Eng PBAP Property REV @else PBAP属性 修订版本 @endif */
118     PBAP_PROPERTY_MASK_SOUND,          /*!< @if Eng PBAP Property SOUND @else PBAP属性 姓名读音 @endif */
119     PBAP_PROPERTY_MASK_URL,            /*!< @if Eng PBAP Property URL @else PBAP属性 统一资源定位器 @endif */
120     PBAP_PROPERTY_MASK_UID,            /*!< @if Eng PBAP Property UID @else PBAP属性 唯一标识 @endif */
121     PBAP_PROPERTY_MASK_KEY,            /*!< @if Eng PBAP Property KEY @else PBAP属性 公共加密密钥 @endif */
122     PBAP_PROPERTY_MASK_NICKNAME,       /*!< @if Eng PBAP Property NICKNAME @else PBAP属性 昵称 @endif */
123     PBAP_PROPERTY_MASK_RTY_MASK_RTY_MASK_CATEGORIES,  /*!< @if Eng PBAP Property CATEGORIES @else PBAP属性 类别 @endif */
124     PBAP_PROPERTY_MASK_RTY_MASK_PROID,                /*!< @if Eng PBAP Property PROID @else PBAP属性 产品ID @endif */
125     PBAP_PROPERTY_MASK_CLASS,                         /*!< @if Eng PBAP Property CLASS @else PBAP属性 CLASS信息 @endif */
126     PBAP_PROPERTY_MASK_RTY_MASK_RTY_MASK_SORT_STRING, /*!< @if Eng PBAP Property SORT-STRING @else PBAP属性
127                                                          用于排序操作的字符串 @endif */
128     PBAP_PROPERTY_MASK_X_IRMC_CALL_DATETIME, /*!< @if Eng PBAP Property X-IRMC-CALL-DATETIME
129                                                   @else PBAP属性 时间戳 @endif */
130     PBAP_PROPERTY_MASK_RTY_MASK_X_BT_SPEEDDIALKEY, /*!< @if Eng PBAP Property X-BT-SPEEDDIALKEY @else PBAP属性
131                                                       快速拨号快捷方式 @endif */
132     PBAP_PROPERTY_MASK_RTY_MASK_X_BT_UCI, /*!< @if Eng PBAP Property X-BT-UCI @else PBAP属性 统一主叫方标识符 @endif */
133     PBAP_PROPERTY_MASK_X_BT_UID, /*!< @if Eng PBAP Property X-BT-UID @else PBAP属性 蓝牙联系人唯一标识符 @endif */
134     PBAP_PROPERTY_MASK_FILTER = 0x27, /*!< @if Eng PBAP Property Proprietary Filter @else PBAP属性 私有过滤器 @endif */
135     PBAP_PROPERTY_MASK_INVALID = 0xFF,
136 } pbap_property_mask_t;
137 
138 /**
139  * @if Eng
140  * @brief Struct of phonebook parameters.
141  * @else
142  * @brief 电话簿参数。
143  * @endif
144  */
145 typedef struct {
146     unsigned char property_selector[PBAP_MASK_LEN]; /*!< @if Eng property selector @else  属性选择器 @endif */
147     unsigned char vcard_selector[PBAP_MASK_LEN];    /*!< @if Eng vCard selector @else  vCard选择器 @endif */
148     unsigned short max_list_count;                  /*!< @if Eng max list count @else  最大列表计数 @endif */
149     unsigned short list_offset;                     /*!< @if Eng list start Offset @else  列表起始偏移量 @endif */
150     unsigned char *name;                            /*!< @if Eng name @else  名称 @endif */
151     unsigned char format;                           /*!< @if Eng format @else  格式 @endif */
152     unsigned char reset_new_missed_calls;  /*!< @if Eng reset new missed calls @else  重置新的未接呼叫 @endif */
153     unsigned char vcard_selector_operator; /*!< @if Eng vCard selector operator @else  vCard选择器运算符 @endif */
154 } pbap_pce_pull_phone_book_param_t;
155 
156 /**
157  * @if Eng
158  * @brief Struct of vCard list parameters.
159  * @else
160  * @brief vCard列表对象参数。
161  * @endif
162  */
163 typedef struct {
164     unsigned char vcard_selector[PBAP_MASK_LEN]; /*!< @if Eng vCard selector @else  vCard选择器 @endif */
165     unsigned short max_list_count;               /*!< @if Eng max list count @else  最大列表计数 @endif */
166     unsigned short list_offset;                  /*!< @if Eng list start Offset @else  列表起始偏移量 @endif */
167     unsigned char *name;                         /*!< @if Eng name @else  名称 @endif */
168     unsigned char *search_value;                 /*!< @if Eng search value @else  搜索值 @endif */
169     unsigned char search_property;               /*!< @if Eng search property @else  搜索属性 @endif */
170     unsigned char order;                         /*!< @if Eng order @else  顺序 @endif */
171     unsigned char reset_new_missed_calls;  /*!< @if Eng reset new missed calls @else  重置新的未接呼叫 @endif */
172     unsigned char vcard_selector_operator; /*!< @if Eng vCard selector operator @else  vCard选择器运算符 @endif */
173 } pbap_pce_pull_vcard_listing_param_t;
174 
175 /**
176  * @if Eng
177  * @brief Struct of vCard parameters.
178  * @else
179  * @brief vCard参数。
180  * @endif
181  */
182 typedef struct {
183     unsigned char property_selector[PBAP_MASK_LEN]; /*!< @if Eng property selector @else  属性选择器 @endif */
184     unsigned char *name;                            /*!< @if Eng name @else  名称 @endif */
185     unsigned char format;                           /*!< @if Eng format @else  格式 @endif */
186 } pbap_pce_pull_vcard_entry_param_t;
187 
188 /**
189  * @if Eng
190  * @brief Offset of PBAP error code.
191  * @else
192  * @brief PBAP错误码偏移。
193  * @endif
194  */
195 #define PBAP_ERROR_OFFSET 0x100
196 
197 /**
198  * @if Eng
199  * @brief Enum of pbap error codes.
200  * @else
201  * @brief PBAP错误码。
202  * @endif
203  */
204 typedef enum {
205     PBAP_ERROR_OK = PBAP_ERROR_OFFSET, /*!< @if Eng PBAP error code OK @else  PBAP错误码 正常 @endif */
206     PBAP_ERROR_BAD_REQUEST,            /*!< @if Eng PBAP error code Bad Request @else  PBAP错误码 错误请求 @endif */
207     PBAP_ERROR_NOT_IMPLEMENTED,        /*!< @if Eng PBAP error code Not implemented @else  PBAP错误码 未执行 @endif */
208     PBAP_ERROR_UNAUTHORIZED,           /*!< @if Eng PBAP error code Unauthorized @else  PBAP错误码 未授权 @endif */
209     PBAP_ERROR_PRECONDITION_FAILED, /*!< @if Eng PBAP error code Precondition Failed
210                                          @else  PBAP错误码 预置条件失败 @endif */
211     PBAP_ERROR_NOT_FOUND,           /*!< @if Eng PBAP error code Not Found @else  PBAP错误码 未找到 @endif */
212     PBAP_ERROR_NOT_ACCEPTABLE, /*!< @if Eng PBAP error code Not Acceptable @else  PBAP错误码 不可接受 @endif */
213     PBAP_ERROR_SERVICE_UNAVAILABLE, /*!< @if Eng PBAP error code Service unavailable
214                                          @else  PBAP错误码 服务不可用 @endif */
215     PBAP_ERROR_FORBIDDEN,           /*!< @if Eng PBAP error code Forbidden @else  PBAP错误码 禁止 @endif */
216 } pbap_error_codes_t;
217 
218 /**
219  * @if Eng
220  * @brief Callback function for connection state change.
221  * @par Description: When registered, this callback reports connection state change to upper layer application.
222  * @param  [in]  bd_addr  The address of the remote device. See @ref bd_addr_t
223  * @param  [in]  state    Connection state. See {@link profile_connect_state_t}
224  * @retval #void  No return value.
225  * @par Dependency:
226  *            @li bts_pbap.h
227  * @see pbap_pce_callbacks_t
228  * @else
229  * @brief 连接状态变化回调函数。
230  * @par 说明: 注册该回调函数之后,bluetooth调用该回调函数将连接状态变化传递给上层应用。
231  * @param  [in]  bd_addr  远端设备地址。见 @ref bd_addr_t
232  * @param  [in]  state    连接状态。见 {@link profile_connect_state_t}
233  * @retval #void  无返回值。
234  * @par 依赖:
235  *            @li bts_pbap.h
236  * @see pbap_pce_callbacks_t
237  * @endif
238  */
239 typedef void (*pbap_pce_conn_state_changed_callback)(const bd_addr_t *bd_addr, profile_connect_state_t state);
240 
241 /**
242  * @if Eng
243  * @brief Callback function for phonebook size.
244  * @par Description: When registered, this callback reports phonebook size to upper layer application.
245  * @param  [in]  bd_addr  The address of the remote device. See @ref bd_addr_t
246  * @param  [in]  size     Phonebook size.
247  * @retval #void  No return value.
248  * @par Dependency:
249  *            @li bts_pbap.h
250  * @see pbap_pce_callbacks_t
251  * @else
252  * @brief 电话簿大小回调函数。
253  * @par 说明: 注册该回调函数之后,bluetooth调用该回调函数将电话簿大小传递给上层应用。
254  * @param  [in]  bd_addr  远端设备地址。见 @ref bd_addr_t
255  * @param  [in]  size     电话簿大小。
256  * @retval #void  无返回值。
257  * @par 依赖:
258  *            @li bts_pbap.h
259  * @see pbap_pce_callbacks_t
260  * @endif
261  */
262 typedef void (*pbap_pce_phone_book_size_callback)(const bd_addr_t *bd_addr, unsigned short size);
263 
264 /**
265  * @if Eng
266  * @brief Callback function for transfer completion.
267  * @par Description: When registered, this callback reports transfer completion to upper layer application.
268  * @param  [in]  bd_addr  The address of the remote device. See @ref bd_addr_t
269  * @retval #void  No return value.
270  * @par Dependency:
271  *            @li bts_pbap.h
272  * @see pbap_pce_callbacks_t
273  * @else
274  * @brief 传输完成回调函数。
275  * @par 说明: 注册该回调函数之后,bluetooth调用该回调函数将传输完成事件上报给应用。
276  * @param  [in]  bd_addr  远端设备地址。见 @ref bd_addr_t
277  * @retval #void  无返回值。
278  * @par 依赖:
279  *            @li bts_pbap.h
280  * @see pbap_pce_callbacks_t
281  * @endif
282  */
283 typedef void (*pbap_pce_trans_complete_callback)(const bd_addr_t *bd_addr);
284 
285 /**
286  * @if Eng
287  * @brief Callback function for data reception.
288  * @par Description: When registered, this callback reports received data to upper layer application.
289  * @param  [in]  bd_addr  The address of the remote device. See @ref bd_addr_t
290  * @param  [in]  data     Received data.
291  * @param  [in]  len      Length of data.
292  * @retval #void  No return value.
293  * @par Dependency:
294  *            @li bts_pbap.h
295  * @see pbap_pce_callbacks_t
296  * @else
297  * @brief 接收到数据回调函数。
298  * @par 说明: 注册该回调函数之后,bluetooth调用该回调函数将接收到的数据上报给应用。
299  * @param  [in]  bd_addr  远端设备地址。见 @ref bd_addr_t
300  * @param  [in]  data     接收到的数据。
301  * @param  [in]  len      数据长度。
302  * @retval #void  无返回值。
303  * @par 依赖:
304  *            @li bts_pbap.h
305  * @see pbap_pce_callbacks_t
306  * @endif
307  */
308 typedef void (*pbap_pce_receive_data_callback)(const bd_addr_t *bd_addr, const unsigned char *data, int len);
309 
310 /**
311  * @if Eng
312  * @brief Callback function for error code.
313  * @par Description: When registered, this callback reports error code to upper layer application.
314  * @param  [in]  bd_addr  The address of the remote device. See @ref bd_addr_t
315  * @param  [in]  code     Error code.
316  * @retval #void  No return value.
317  * @par Dependency:
318  *            @li bts_pbap.h
319  * @see pbap_pce_callbacks_t
320  * @else
321  * @brief 上报错误码回调函数。
322  * @par 说明: 注册该回调函数之后,bluetooth调用该回调函数将错误码上报给应用。
323  * @param  [in]  bd_addr  远端设备地址。见 @ref bd_addr_t
324  * @param  [in]  code     要上报的错误码。
325  * @retval #void  无返回值。
326  * @par 依赖:
327  *            @li bts_pbap.h
328  * @see pbap_pce_callbacks_t
329  * @endif
330  */
331 typedef void (*pbap_pce_error_code_callback)(const bd_addr_t *bd_addr, int code);
332 
333 /**
334  * @if Eng
335  * @brief Struct of PBAP callback functions.
336  * @else
337  * @brief PBAP回调函数接口定义。
338  * @endif
339  */
340 typedef struct {
341     pbap_pce_conn_state_changed_callback state_changed_cb;
342     pbap_pce_phone_book_size_callback phone_book_sized_cb;
343     pbap_pce_trans_complete_callback trans_complete_cb;
344     pbap_pce_receive_data_callback receive_data_cb;
345     pbap_pce_error_code_callback error_code_cb;
346 } pbap_pce_callbacks_t;
347 
348 /**
349  * @if Eng
350  * @brief Use this funtion to connect to PSE.
351  * @par Description: Use this funtion to connect to PSE.
352  * @param  [in]  bd_addr  Address of the device. See @ref bd_addr_t
353  * @retval #ERRCODE_BT_SUCCESS   Excute successfully.
354  * @retval #Other               Error code. See @ref errcode_bt_t
355  * @par Dependency:
356  *            @li bts_pbap.h
357  * @else
358  * @brief 建立与PSE的连接。
359  * @par 说明: 建立与PSE的连接。
360  * @param  [in]  bd_addr  待连接的设备地址。见 @ref bd_addr_t
361  * @retval #ERRCODE_BT_SUCCESS   执行成功。
362  * @retval #Other               错误码。参考 @ref errcode_bt_t
363  * @par 依赖:
364  *            @li bts_pbap.h
365  * @endif
366  */
367 int pbap_pce_connect(const bd_addr_t *bd_addr);
368 
369 /**
370  * @if Eng
371  * @brief Use this funtion to disconnect from PSE.
372  * @par Description: Use this funtion to disconnect from PSE.
373  * @param  [in]  bd_addr  Address of the device. See @ref bd_addr_t
374  * @retval #ERRCODE_BT_SUCCESS   Excute successfully.
375  * @retval #Other               Error code. See @ref errcode_bt_t
376  * @par Dependency:
377  *            @li bts_pbap.h
378  * @else
379  * @brief 建立与PSE的连接。
380  * @par 说明: 建立与PSE的连接。
381  * @param  [in]  bd_addr  待断开连接的设备地址。见 @ref bd_addr_t
382  * @retval #ERRCODE_BT_SUCCESS   执行成功。
383  * @retval #Other               错误码。参考 @ref errcode_bt_t
384  * @par 依赖:
385  *            @li bts_pbap.h
386  * @endif
387  */
388 int pbap_pce_disconnect(const bd_addr_t *bd_addr);
389 
390 /**
391  * @if Eng
392  * @brief Use this funtion to get connection state of PBAP client.
393  * @par Description: Use this funtion to get connection state of PBAP client.
394  * @param  [in]  bd_addr  Address of the device. See @ref bd_addr_t
395  * @retval Return connecting/connected/disconnecting/disconnected. See @ref profile_connect_state_t.
396  * @par Dependency:
397  *            @li bts_pbap.h
398  * @else
399  * @brief 查询PBAP client连接状态。
400  * @par 说明: 查询PBAP client连接状态。
401  * @param  [in]  bd_addr  待查询的设备地址。见 @ref bd_addr_t
402  * @retval 返回值为正在连接,已连接,正在断开连接,已断开连接。参考 @ref profile_connect_state_t
403  * @par 依赖:
404  *            @li bts_pbap.h
405  * @endif
406  */
407 int pbap_pce_get_device_connect_state(const bd_addr_t *bd_addr);
408 
409 /**
410  * @if Eng
411  * @brief Use this funtion to pull phonebook.
412  * @par Description: Use this funtion to pull phonebook.
413  * @param  [in]  bd_addr  Address of the device. See @ref bd_addr_t
414  * @param  [in]  param    Phonebook parameters. See @ref pbap_pce_pull_phone_book_param_t
415  * @retval #ERRCODE_BT_SUCCESS   Excute successfully.
416  * @retval #Other               Error code. See @ref errcode_bt_t
417  * @par Dependency:
418  *            @li bts_pbap.h
419  * @else
420  * @brief 下载电话簿对象。
421  * @par 说明: 下载电话簿对象。
422  * @param  [in]  bd_addr  设备地址。见 @ref bd_addr_t
423  * @param  [in]  param    电话簿参数。见 @ref pbap_pce_pull_phone_book_param_t
424  * @retval #ERRCODE_BT_SUCCESS   执行成功。
425  * @retval #Other               错误码。参考 @ref errcode_bt_t
426  * @par 依赖:
427  *            @li bts_pbap.h
428  * @endif
429  */
430 int pbap_pce_pull_phone_book(const bd_addr_t *bd_addr, const pbap_pce_pull_phone_book_param_t *param);
431 
432 /**
433  * @if Eng
434  * @brief Use this funtion to set current directory.
435  * @par Description: Use this funtion to set current directory.
436  * @param  [in]  bd_addr  Address of the device. See @ref bd_addr_t
437  * @param  [in]  name     Directory name.
438  * @retval #ERRCODE_BT_SUCCESS   Excute successfully.
439  * @retval #Other               Error code. See @ref errcode_bt_t See @ref errcode_bt_t
440  * @par Dependency:
441  *            @li bts_pbap.h
442  * @else
443  * @brief 设置虚拟文件夹体系结构中的当前文件夹。
444  * @par 说明: 设置虚拟文件夹体系结构中的当前文件夹。
445  * @param  [in]  bd_addr  设备地址。见 @ref bd_addr_t
446  * @param  [in]  name     文件夹名称。
447  * @retval #ERRCODE_BT_SUCCESS   执行成功。
448  * @retval #Other               错误码。参考 @ref errcode_bt_t
449  * @par 依赖:
450  *            @li bts_pbap.h
451  * @endif
452  */
453 int pbap_pce_set_phone_book(const bd_addr_t *bd_addr, const unsigned char *name);
454 
455 /**
456  * @if Eng
457  * @brief Use this funtion to search in the phonebook list.
458  * @par Description: Use this funtion to search in the phonebook list.
459  * @param  [in]  bd_addr  Address of the device. See @ref bd_addr_t
460  * @param  [in]  param    Phonebook list parameters. See @ref pbap_pce_pull_vcard_listing_param_t
461  * @retval #ERRCODE_BT_SUCCESS   Excute successfully.
462  * @retval #Other               Error code. See @ref errcode_bt_t
463  * @par Dependency:
464  *            @li bts_pbap.h
465  * @else
466  * @brief 检索PSE的电话簿列表对象。
467  * @par 说明: 检索PSE的电话簿列表对象。
468  * @param  [in]  bd_addr  设备地址。见 @ref bd_addr_t
469  * @param  [in]  param    电话簿列表对象参数。见 @ref pbap_pce_pull_vcard_listing_param_t
470  * @retval #ERRCODE_BT_SUCCESS   执行成功。
471  * @retval #Other               错误码。参考 @ref errcode_bt_t
472  * @par 依赖:
473  *            @li bts_pbap.h
474  * @endif
475  */
476 int pbap_pce_pull_vcard_listing(const bd_addr_t *bd_addr, const pbap_pce_pull_vcard_listing_param_t *param);
477 
478 /**
479  * @if Eng
480  * @brief Use this funtion to search for a specific vCard.
481  * @par Description: Use this funtion to search for a specific vCard.
482  * @param  [in]  bd_addr  Address of the device. See @ref bd_addr_t
483  * @param  [in]  param    vCard parameters. See @ref pbap_pce_pull_vcard_entry_param_t
484  * @retval #ERRCODE_BT_SUCCESS   Excute successfully.
485  * @retval #Other               Error code. See @ref errcode_bt_t
486  * @par Dependency:
487  *            @li bts_pbap.h
488  * @else
489  * @brief 检索特定的vCard。
490  * @par 说明: 检索特定的vCard。
491  * @param  [in]  bd_addr  设备地址。见 @ref bd_addr_t
492  * @param  [in]  param    vCard对象参数。见 @ref pbap_pce_pull_vcard_entry_param_t
493  * @retval #ERRCODE_BT_SUCCESS   执行成功。
494  * @retval #Other               错误码。参考 @ref errcode_bt_t
495  * @par 依赖:
496  *            @li bts_pbap.h
497  * @endif
498  */
499 int pbap_pce_pull_vcard_entry(const bd_addr_t *bd_addr, const pbap_pce_pull_vcard_entry_param_t *param);
500 
501 /**
502  * @if Eng
503  * @brief Use this funtion to stop transferring.
504  * @par Description: Use this funtion to stop transferring.
505  * @param  [in]  bd_addr  Address of the device. See @ref bd_addr_t
506  * @retval #ERRCODE_BT_SUCCESS   Excute successfully.
507  * @retval #Other               Error code. See @ref errcode_bt_t
508  * @par Dependency:
509  *            @li bts_pbap.h
510  * @else
511  * @brief 停止传输。
512  * @par 说明: 停止传输。
513  * @param  [in]  bd_addr  设备地址。见 @ref bd_addr_t
514  * @retval #ERRCODE_BT_SUCCESS   执行成功。
515  * @retval #Other               错误码。参考 @ref errcode_bt_t
516  * @par 依赖:
517  *            @li bts_pbap.h
518  * @endif
519  */
520 int pbap_pce_stop_trans(const bd_addr_t *bd_addr);
521 
522 /**
523  * @if Eng
524  * @brief Register callback functions for PBAP.
525  * @par Description: Register callback functions for PBAP.
526  * @attention  1. This function is called in bts context,should not be blocked or do long time waiting.
527  * @attention  2. The memories of <devices> are requested and freed by the bts automatically.
528  * @param  [in]  func  A poniter of the Callback funcs.See @ref pbap_pce_callbacks_t
529  * @retval #ERRCODE_BT_SUCCESS   Excute successfully.
530  * @retval #Other               Error code. See @ref errcode_bt_t
531  * @par Dependency:
532  *            @li bts_pbap.h
533  * @see pbap_pce_callbacks_t
534  * @else
535  * @brief 注册PBAP回调函数。
536  * @par 说明: 注册上层应用的回调。
537  * @attention  1. 该回调函数运行于bts线程,不能阻塞或长时间等待。
538  * @attention  2. <devices>由bts申请内存,也由bts释放,回调中不应释放。
539  * @param  [in]  func  指向回调函数接口定义的指针。见 @ref pbap_pce_callbacks_t
540  * @retval #ERRCODE_BT_SUCCESS   执行成功。
541  * @retval #Other               错误码。参考 @ref errcode_bt_t
542  * @par 依赖:
543  *            @li bts_pbap.h
544  * @see pbap_pce_callbacks_t
545  * @endif
546  */
547 int pbap_pce_register_callbacks(pbap_pce_callbacks_t *func);
548 
549 #ifdef __cplusplus
550 }
551 #endif
552 #endif /* end of bts_pbap.h */
553