RK3308 蓝牙接口测试

BT相关接口

#deviceio_test bluetooth

  1. bt_server_open 蓝牙测试初始化,执行蓝牙测试前,先调用该接口。BLE的接收和数据请求回调函数的注册。注:BLE读数据是通过注册回调函数实现。当BLE连接收到数据主动调用接收回调函数。具体请参见 RkBtContent 结构说明和 rk_ble_register_recv_callback 函数说明。
  2. bt_test_set_class 设置蓝牙设备类型。当前测试值为0x240404。
  3. bt_test_get_device_name 获取本机设备名
  4. bt_test_get_device_addr 获取本机设备地址
  5. bt_test_set_device_name 设置本机设备名
  6. bt_test_enable_reconnect 使能A2DP SINK 和 HFP 自动重连功能。推荐紧跟01后调用
  7. bt_test_disable_reconnect 禁用A2DP SINK 和 HFP 自动重连功能。推荐紧跟在01后调用
  8. bt_test_start_discovery 扫描周围设备
  9. bt_test_cancel_discovery 取消8发起的扫描操作
  10. bt_test_is_discovering 是否正在扫描周围的设备
  11. bt_test_display_devices 打印扫描到的周围设备的信息
  12. bt_test_display_paired_devices 打印当前已配对的设备信息
  13. bt_test_get_paired_devices 获取当前已配对的设备列表
  14. bt_test_free_paired_devices 释放 13 中申请的,用于存放已配对设备信息的内存
  15. bt_test_pair_by_addr 和指定地址的设备配对,15 input FC:58:FA:29:37:35(Q9)
  16. bt_test_unpair_by_addr 取消和指定地址的设备配对,data:" 94:87:E0:B6:6D:AE "
  17. bt_test_source_auto_start A2DP Source 自动扫描开始,选择17前,要开启一个BT Sink设备,该设备处于可发现并可连接状态。17功能会自动扫描BT Sink设备并连接信 号最强的那个设备
  18. bt_test_source_connect_status 获取 A2DP Source 连接状态
  19. bt_test_source_auto_stop A2DP Source 自动扫描接口停止
  20. bt_test_sink_open 打开 A2DP Sink 模式
  21. bt_test_sink_visibility00 设置 A2DP Sink 不可见、不可连接
  22. bt_test_sink_visibility01 设置 A2DP Sink 不可见、可连接
  23. bt_test_sink_visibility10 设置 A2DP Sink 可见、不可连接
  24. bt_test_sink_visibility11 设置 A2DP Sink 可见、可连接
  25. bt_test_ble_visibility00 设置ble可见/可连接特性。visiable:0表示不可见,1表示可见。connect:0表示不可连接,1表示可连接。该接口仅适用于bsa(BSA only)
  26. bt_test_ble_visibility11 设置BLE可见可连接
  27. bt_test_sink_status 查询 A2DP Sink 连接状态
  28. bt_test_sink_music_play 反向控制设备播放
  29. bt_test_sink_music_pause 反向控制设备暂停
  30. bt_test_sink_music_next 反向控制设备播放下一曲
  31. bt_test_sink_music_previous 反向控制设备播放上一曲
  32. bt_test_sink_music_stop 反向控制设备停止播放
  33. bt_test_sink_set_volume 设置音量测试
  34. bt_test_sink_connect_by_addr 连接指定地址的设备,data: " 94:87:E0:B6:6D:AE "
  35. bt_test_sink_disconnect_by_addr A2DP Sink 断开链接
  36. bt_test_sink_get_play_status 获取播放状态,会触发play position change 回调
  37. bt_test_sink_get_poschange 当前连接的设备,是否支持播放进度上报
  38. bt_test_sink_disconnect A2DP Sink 断开连接
  39. bt_test_sink_close 关闭 A2DP Sink 服务
  40. bt_test_ble_start 启动BLE。设备被动连接后,收到“Hello RockChip”,回应“My name is rockchip”
  41. bt_test_ble_write 测试BLE写功能,发送134个‘0’-‘9’组成的字符串
  42. bt_test_ble_disconnect 断开BLE连接
  43. bt_test_ble_stop 停止BLE
  44. bt_test_ble_setup 停止BLE广播,该函数执行后,BLE变为不可见并且不可连接
  45. bt_test_ble_clean
  46. bt_test_ble_get_status 得到目前BLE的连接状态
  47. bt_test_spp_open 打开SPP,设备处于可连接状态
  48. bt_test_spp_write 送数据,data:数据指针,len:数据长度
  49. bt_test_spp_close 关闭SPP
  50. bt_test_spp_status 获取SPP的连接状态
  51. bt_test_hfp_sink_open 并存方式打开HFP HF与A2DP SINK
  52. bt_test_hfp_hp_open 仅打开HFP HF功能
  53. bt_test_hfp_hp_accept 主动接听电话
  54. bt_test_hfp_hp_hungup 主动挂断电话
  55. bt_test_hfp_hp_redail 重播
  56. bt_test_hfp_hp_report_battery 从0到9,每隔一秒上报一次电池电量状态,此时手机端可看到电量从空到满的图标变化过程。注:有些手机不支持蓝牙电量图标显示
  57. bt_test_hfp_hp_set_volume 从1到15,每隔一秒设置一次蓝牙通话的音量,此时手机端可看到蓝牙通话音量进度条变化过程。注:有些手 机并不动态显示进度条变化,主动加减音量触发进度天显示,此时可看到设备成功设置了手机端的音量。比 如本身音量为0,该接口运行结束后,主动按手机音量‘+’按钮,发现音量已经满格
  58. bt_test_hfp_hp_close 关闭HFP 服务
  59. bt_test_hfp_hp_disconnect 断开HFP连接
  60. bt_test_obex_init 打开obex服务
  61. bt_test_obex_pbap_connect 打开pbap服务,并连接指定设备
  62. bt_test_obex_pbap_get_pb_vcf 获取联系人电话薄,结果存储在/data/pb.vcf
  63. bt_test_obex_pbap_get_ich_vcf 获取来电历史记录,结果存储在/data/ich.vcf
  64. bt_test_obex_pbap_get_och_vcf 获取拨出历史记录,结果存储在/data/och.vcf
  65. bt_test_obex_pbap_get_mch_vcf 获取未接来电历史记录,结果存储在/data/mch.vcf
  66. bt_test_obex_pbap_disconnect 关闭pbap服务,并断开连接
  67. bt_test_obex_close 关闭obex服务
  68. bt_server_close

BT接口测试

蓝牙基础接口

Q9的设备地址:FC:58:FA:29:37:35

Which would you like: 15 input FC:58:FA:29:37:35   
BSA_trace 29@ 01/01 08h:36m:33s:716ms: BSA_SecBondInit
BSA_trace 30@ 01/01 08h:36m:33s:716ms: BSA_SecBond
Which would you like: BSA_trace 31@ 01/01 08h:36m:34s:647ms: bsa_sec_event_hdlr event:0
BSA_trace 32@ 01/01 08h:36m:34s:911ms: bsa_sec_event_hdlr event:6
BSA_trace 33@ 01/01 08h:36m:34s:912ms: BSA_SecSpCfmReplyInit
BSA_trace 34@ 01/01 08h:36m:34s:912ms: BSA_SecSpCfmReply
++++++++++ BT BOND BONDING: Q9, fc:58:fa:29:37:35 ++++++++++
BSA_trace 35@ 01/01 08h:36m:35s:805ms: bsa_sec_event_hdlr event:3
BSA_trace 36@ 01/01 08h:36m:35s:830ms: BSA_DiscStartInit
BSA_trace 37@ 01/01 08h:36m:35s:830ms: BSA_DiscStart
++++++++++ BT BONDED: Q9, fc:58:fa:29:37:35 ++++++++++
BSA_trace 38@ 01/01 08h:36m:38s:813ms: bsa_sec_event_hdlr event:1

BLE接口测试说明

1.手机安装第三方ble测试apk,如nRF Connnect

2.选择40 bt_test_ble_start函数

3.手机蓝牙扫描并连接 " ROCKCHIP_AUDIO BLE "

4.连接成功后,设备端会回调 bt_test.cpp 中的 ble_status_callback_test 函数,打印"+++++
RK_BLE_STATE_CONNECT +++++",注意这里手机上蓝牙图标上没显示连接的BLE设备,要通过APP才看到,而且测试过,同一时间只能连接一台BLE设备(不管是什么协议)

5.执行如下函数,进行具体功能测试:

  • void bt_test_ble_write(char *data) 测试BLE写功能,发送134个‘0’-‘9’组成的字符串
Which would you like: 41
BSA_trace 58@ 01/01 09h:47m:23s:554ms: BSA_BleSeSendIndInit
BSA_trace 59@ 01/01 09h:47m:23s:554ms: send notification:
BSA_trace 60@ 01/01 09h:47m:23s:555ms:     0000: 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35   0123456789012345
BSA_trace 61@ 01/01 09h:47m:23s:556ms:     0010: 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31   6789012345678901
BSA_trace 62@ 01/01 09h:47m:23s:557ms:     0020: 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37   2345678901234567
BSA_trace 63@ 01/01 09h:47m:23s:558ms:     0030: 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33   8901234567890123
BSA_trace 64@ 01/01 09h:47m:23s:559ms:     0040: 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39   4567890123456789
BSA_trace 65@ 01/01 09h:47m:23s:560ms:     0050: 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35   0123456789012345
BSA_trace 66@ 01/01 09h:47m:23s:561ms:     0060: 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31   6789012345678901
BSA_trace 67@ 01/01 09h:47m:23s:562ms:     0070: 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37   2345678901234567
BSA_trace 68@ 01/01 09h:47m:23s:563ms:     0080: 38 39 30 31 32 33                                 890123          
BSA_trace 69@ 01/01 09h:47m:23s:564ms: BSA_BleSeSendInd
  • void bt_test_ble_get_status(char *data) 测试BLE状态接口
Which would you like: 46
RK_ble_status_test: RK_BLE_STATE_CONNECT.
RK_ble_status_test: RK_BLE_STATE_DISCONNECT.
  • void bt_test_ble_stop(char *data) 停止BLE,停止后APP就搜索不到了

A2DP SINK接口测试说明

A2DP(Advanced Audio Distribution Profile)是蓝牙高音质音频传输协议,用于传输单声道,双声道音乐(一般在A2DP中用于stereo双声道),典型应用为蓝牙耳机。

谁发送音频数据谁就是Source,谁接收音频数据谁就是Sink,这里是Sink接口测试,也就是说,这时候,这个被测试设备就相当于成为了一个蓝牙音箱,被别的Source设备连接后,在Source设备上播放音乐,声音会从Sink设备播出,测试步骤如下:

1.选择bt_test_sink_open函数:

Which would you like: 20
++++++++++++ BT SINK EVENT: idle ++++++++++
BSA_trace 123@ 01/01 10h:08m:30s:022ms: BSA_AvkEnableInit
BSA_trace 124@ 01/01 10h:08m:30s:022ms: BSA_AvkEnable
BSA_trace 125@ 01/01 10h:08m:30s:024ms: BSA_AvkRegisterInit
BSA_trace 126@ 01/01 10h:08m:30s:024ms: BSA_AvkRegister
BSA_trace 127@ 01/01 10h:08m:30s:026ms: BSA_AvkRegister
BSA_trace 128@ 01/01 10h:08m:30s:026ms: UIPC_Open ChId:7
BSA_trace 129@ 01/01 10h:08m:30s:026ms: uipc_avk_open
BSA_trace 130@ 01/01 10h:08m:30s:027ms: uipc_fifo_open enter FIFO:./bt-avk-fifo
BSA_trace 131@ 01/01 10h:08m:30s:027ms: BSA_AvkRegister
BSA_trace 132@ 01/01 10h:08m:30s:028ms: uipc_avk_open AVK channel opened
BSA_trace 133@ 01/01 10h:08m:30s:028ms: uipc_fifo_task thread started
BSA_trace 134@ 01/01 10h:08m:30s:030ms: uipc_fifo_task fifo opened
BSA_trace 135@ 01/01 10h:08m:30s:030ms: uipc_fifo_task read thread will now read fifo
BSA_trace 136@ 01/01 10h:08m:30s:034ms: BSA_AvkOpenInit
BSA_trace 137@ 01/01 10h:08m:30s:035ms: BSA_AvkOpen
BSA_trace 138@ 01/01 10h:08m:33s:040ms: BSA_AvkOpenInit
BSA_trace 139@ 01/01 10h:08m:33s:040ms: BSA_AvkOpen

BSA_trace 141@ 01/01 10h:11m:12s:184ms: BSA_DmSetConfigInit
BSA_trace 142@ 01/01 10h:11m:12s:184ms: BSA_DmSetConfig
++++++++++++ BT SINK EVENT: connect sucess ++++++++++
BSA_trace 143@ 01/01 10h:11m:16s:058ms: BSA_AvkGetElementAttrCmdInit
BSA_trace 144@ 01/01 10h:11m:16s:058ms: BSA_AvkGetElementAttrCmd

2.手机蓝牙扫描并连接"RockChip"

3.连接成功后,设备端会回调bt_test.cpp中的bt_sink_callback函数, 打印"++++++++++++ BT SINK EVENT:connect sucess ++++++++++"

4.打开手机的音乐播放器,播放歌曲:

++++++++ bt sink track change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    title: unknow
    artist: unknow
    album: unknow
    genre: 
    num_tracks: 
    track_num: 
    playing_time: 
++++++++++++ BT A2DP SINK STATE: started ++++++++++
++++++++++++ BT SINK EVENT: playing ++++++++++
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 0, song_pos: 0
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 0, song_pos: 0
++++++++++++ BT SINK EVENT: paused ++++++++++
++++++++++++ BT A2DP SINK STATE: suspended ++++++++++
BSA_trace 145@ 01/01 10h:11m:37s:249ms: BSA_AvkGetElementAttrCmdInit
BSA_trace 146@ 01/01 10h:11m:37s:250ms: BSA_AvkGetElementAttrCmd
++++++++++++ BT A2DP SINK STATE: started ++++++++++
++++++++++++ BT SINK EVENT: playing ++++++++++
BSA_trace 147@ 01/01 10h:11m:37s:279ms: BSA_AvkGetElementAttrCmdInit
BSA_trace 148@ 01/01 10h:11m:37s:279ms: BSA_AvkGetElementAttrCmd
++++++++ bt sink track change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    title: Mystery of Love 
    artist: Sufjan Stevens
    album: Call Me By Your Name (Original Motion Picture Soundtrack)
    genre: 
    num_tracks: 0
    track_num: 0
    playing_time: 249025
++++++++ bt sink track change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    title: Mystery of Love 
    artist: Sufjan Stevens
    album: Call Me By Your Name (Original Motion Picture Soundtrack)
    genre: 
    num_tracks: 0
    track_num: 0
    playing_time: 249025
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 249025, song_pos: 1001
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 249025, song_pos: 1038
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 249025, song_pos: 2039
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 249025, song_pos: 2055
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 249025, song_pos: 3057
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 249025, song_pos: 3075
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 249025, song_pos: 4077
    song_len: 289973, song_pos: 257081
++++++++++++ BT SINK EVENT: paused ++++++++++
++++++++++++ BT A2DP SINK STATE: suspended ++++++++++
BSA_trace 165@ 01/01 10h:33m:05s:032ms: BSA_AvkGetElementAttrCmdInit
BSA_trace 166@ 01/01 10h:33m:05s:032ms: BSA_AvkGetElementAttrCmd
BSA_trace 167@ 01/01 10h:33m:05s:539ms: BSA_AvkGetElementAttrCmdInit
BSA_trace 168@ 01/01 10h:33m:05s:540ms: BSA_AvkGetElementAttrCmd
++++++++ bt sink track change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    title: unknow
    artist: unknow
    album: unknow
    genre: 
    num_tracks: 
    track_num: 
    playing_time: 
++++++++ bt sink track change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    title: unknow
    artist: unknow
    album: unknow
    genre: 
    num_tracks: 
    track_num: 
    playing_time: 
BSA_trace 169@ 01/01 10h:33m:10s:558ms: BSA_DmSetConfigInit
BSA_trace 170@ 01/01 10h:33m:10s:558ms: BSA_DmSetConfig
++++++++++++ BT SINK EVENT: disconnected ++++++++++

5.执行如下函数,进行具体功能测试:21-39

A2DP SOURCE接口测试说明

1.选择bt_test_source_auto_start函数

2.设备会自动扫描身边的A2dp Sink类型设备,并连接信号最强的那个(在旁边打开一个蓝牙音箱,它能够连上蓝牙音箱)

3.连接成功后,设备端会回调bt_test.cpp中的bt_test_source_status_callback函数,打印"++++++++++++ BT SOURCE EVENT:connect sucess ++++++++++"

4.此时设备播放音乐,则音乐会从连接的A2dp Sink设备中播出

5.执行如下函数,进行具体功能测试:17-19

SPP接口测试说明

蓝牙串口是基于 SPP 协议(Serial Port Profile),能在蓝牙设备之间创建串口进行数据传输的一种设备。测试步骤如下:

1.手机安装第三方SPP测试apk,如 “Serial Bluetooth Terminal”

2.选择47 bt_test_spp_open函数

3.手机蓝牙扫描并连接"RockChip"

4.打开第三方SPP测试apk,使用spp连接设备。设备连接成功后,设备端会回调bt_test.cpp中的
bt_test_btspp_status_callback函数,打印"+++++++ RK_BT_SPP_EVENT_CONNECT +++++"

5.执行如下函数,进行具体功能测试:47-50

  • 48 测试SPP写功能。向对端发送“This is a message from rockchip board!”字串
Which would you like: 47
BSA_trace 27@ 01/01 08h:09m:53s:759ms: BSA_DgEnableInit
BSA_trace 28@ 01/01 08h:09m:53s:759ms: BSA_DgEnable
BSA_trace 29@ 01/01 08h:09m:53s:761ms: BSA_DgListenInit
BSA_trace 30@ 01/01 08h:09m:53s:761ms: BSA_DgListen
BSA_trace 31@ 01/01 08h:10m:42s:489ms: bsa_sec_event_hdlr event:0
BSA_trace 32@ 01/01 08h:10m:42s:652ms: bsa_dg_event_hdlr event:0
BSA_trace 33@ 01/01 08h:10m:42s:653ms: UIPC_Open ChId:11
BSA_trace 34@ 01/01 08h:10m:42s:653ms: uipc_cl_dg_open
+++++++ RK_BT_SPP_EVENT_CONNECT +++++

Which would you like: 48
BSA_trace 35@ 01/01 08h:11m:01s:488ms: DG outgoing Data:
BSA_trace 36@ 01/01 08h:11m:01s:488ms:     0000: 54 68 69 73 20 69 73 20 61 20 6d 65 73 73 61 67   This is a messag
BSA_trace 37@ 01/01 08h:11m:01s:489ms:     0010: 65 20 66 72 6f 6d 20 72 6f 63 6b 63 68 69 70 20   e from rockchip 
BSA_trace 38@ 01/01 08h:11m:01s:490ms:     0020: 62 6f 61 72 64 21                                 board!          
BSA_trace 39@ 01/01 08h:11m:01s:491ms: uipc_cl_dg_send_buf ChId:11 len:38
bt_test_spp_write failed, ret<0> != strlen(buff)<38>

Which would you like: 50
+++++++ RK_BT_SPP_STATE_CONNECT +++++

HFP接口测试说明

HFP(Hands-free Profile),让蓝牙设备可以控制电话,如接听、挂断、拒接、语音拨号要视蓝牙耳机及电话是否支持。

1.选择 bt_test_hfp_sink_openbt_test_hfp_hp_open 函数

2.手机蓝牙扫描并连接"ROCKCHIP_AUDIO"。注:如果之前测试SINK功能时已经连接过手机,此时应在手机端先 忽略该设备,重新扫描并连接。

3.设备连接成功后,设备端会回调 bt_test.cpp 中的 bt_test_hfp_hp_cb 函数,打印“+++++ BT HFP HP CONNECT+++++”。如果手机被呼叫,此时打印“+++++ BT HFP HP RING +++++”,接通电话时会打印“+++++ BT HFP AUDIO OPEN +++++”。其他状态打印请直接阅读 bt_test.cppbt_test_hfp_hp_cb 函数源码。注:若调用了 bt_test_hfp_sink_open 接口,当设备连接成功后,A2DP SINK的连接状态也会打印,比如"++++++++++++ BT SINK EVENT: connect sucess ++++++++++"

4.执行如下函数,进行具体功能测试:51-67

总结

蓝牙的配对流程

从目前的测试结果来看,配对流程如下(个人猜想):

扫描→配对中(bonding)→bonded(已配对)→连接

问题:两台手机之间用蓝牙进行配对,一方向另一方发送了文件,这中间采用的是什么协议呢

BLE蓝牙

一般都是作为从设备的,不能作为主设备去连接

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值