获取时间使用文档
获取时间使用文档
一、工程修改
(一)替换库文件
需要替换btstack.a库文件
(二)修改相关文件
1、 修改app/common/bt_profile_config.c 在124行,增加:
- #if (USER_SUPPORT_PROFILE_PBAP==1)

- extern const u8 sdp_pbap_service_data[];
- u8 pbap_profile_support = 1 ;
- SDP_RECORD_HANDLER_REGISTER(pbap_sdp_record_item) = {
- .service_record = (u8 * ) sdp_pbap_service_data, 6. .service_record_handle = 0x00010007 , 7. } ;
- #endif
- #if (USER_SUPPORT_PROFILE_MAP==1)
- extern const u8 sdp_map_mce_service_data[];
- u8 map_profile_support = 1 ;
- SDP_RECORD_HANDLER_REGISTER(map_sdp_record_item) = {
- .service_record = (u8 * ) sdp_map_mce_service_data , 14. .service_record_handle = 0x00010009 , 15. } ;
- #endif
2、 修改apps/earphone/board/br34/board_ad698x_demo_cfg.h 在蓝牙配置中增加 - #define USER_SUPPORT_PROFILE_SPP 0
- #define USER_SUPPORT_PROFILE_HFP 1
- #define USER_SUPPORT_PROFILE_A2DP 1
- #define USER_SUPPORT_PROFILE_AVCTP 1
- #define USER_SUPPORT_PROFILE_HID 0
- #define USER_SUPPORT_PROFILE_PNP 1
- #define USER_SUPPORT_PROFILE_PBAP 0
- #define USER_SUPPORT_PROFILE_MAP 1
3、 修改 include_lib/btstack/avctp_user.h - USER_CTRL_HSP_CKPD_CMD, /hsp 接听/

- USER_CTRL_HSP_CMD_END,
- //MAP功能发送命令
- USER_CTRL_MAP_CMD_BEGIN,
- //MAP读取时间
- USER_CTRL_MAP_READ_TIME,
- //MAP停止读取
- USER_CTRL_MAP_STOP_READING,
- USER_CTRL_MAP_CMD_END,
- USER_CTRL_LAST
- } USER_CMD_TYPE;
二、使用实例
(一)数据处理函数
1、 在apps/earphone/earphone.c 增加
- #if USER_SUPPORT_PROFILE_MAP

- #define PROFILE_CMD_TRY_AGAIN_LATER -1004
- void bt_get_time_date()

- {
- log_info ( "hfp_get_time_date " ) ;
[6.](6. int)[ int](6. int) error = user_send_cmd_prepare(USER_CTRL_HFP_GET_PHONE_DATE_TIME, 0, NULL) ; - log_info ( " >>>>>error = %d\n " , error) ;

- if (error == PROFILE_CMD_TRY_AGAIN_LATER) {
9. sys_timeout_add(NULL, bt_get_time_date, 100) ;
10. } 11. }
12. void phone_date_and_time_feedback (u8 *data , u16 len) 13. {
14. log_info ( "hfp_get_time: % s " , data) ; 15. }
16. void map_phone_date_and_time_feedback (u8 *data , u16 len) 17. {
18. if (len != 0 ) {
19. log_info ( "map_get_time: % s " , data) ;
20. } else {
21. log_info ( " >>>map get fail\n " ) ;
22. sys_timeout_add(NULL, bt_get_time_date, 100) ;
23. }
24. }
25. #endif
void map_phone_date_and_time_feedback (u8 *data, u 16 len) 函数为MAP获取时间的弱函数,在获取成功和获取失败时协议栈会自动调用,status参数返回 非0 时表示获取时间成功,0时标识拒绝获取。实例函数中编写了MAP获取失败自动发送HFP获取时间的函数,需要注意两个获取方式返回的数据格式不同。
void phone_date_and_time_feedback (u8 *data, u 16 len)函数为通过HFP获取时间的若函数,在获取成功后调用。
(二)命令发送函数
在apps/earphone/earphone.c 中bt_connction_status_event_handler增加函数为获取时间所发送的命令函数
- user_send_cmd_prepare(USER_CTRL_MAP_READ_TIME,0 ,NULL) ;
放于连接成功后 执行:
[1.](1. case)[ case](1. case) BT_STATUS_RECONN_OR_CONN:
- l。g_inf。( "BT_STATUS_RECONN_OR_CONN\n " ) ;
- user_send_cmd_prepare(USER_CTRL_MAP_READ_TIME ,0 ,NULL) ;
三、注解
1注:void phone_date_and_time_feedback(u8 *data, u16 len)
void map_phone_date_and_time_feedback(u8 *data, u16 len)
这两个处理函数也可放在其他处理文件中。
2注:红色字体为增加代码
珠海市杰理科技股份有限公司
2024年04 月09 日