蓝牙 - 调试BluetopiaPM中的SPP Demo程序

本文详述了一个蓝牙设备管理程序(SPPM)的使用,包括初始化、设备搜索、连接、断开、查询设备信息和服务等功能。内容涵盖了配对流程、发送和接收数据以及调试日志的控制等方面,展示了蓝牙设备间的交互过程。
准备:
1,一个主机,一个客户端设备。
2, 两个设备在终端上都打开系统的log打印
# logread -f &
3,两个设备都在终端上运行server程序(SS1BTPM)和demo程序(LinuxSPPM):
# ./SS1BTPM & ./LinuxSPPM
注:上面是同时运行两个程序,第一个是在后台运行,第二个是前台运行。
4,运行成功后,LinuxSPPM输出命令菜单,并可以在终端上输入序号和参数来执行命令。
******************************************************************
* Command Options: 1) Initialize                                 *
*                  2) Cleanup                                    *
*                  3) QueryDebugZoneMask                         *
*                  4) SetDebugZoneMask                           *
*                  5) ShutdownService                            *
*                  6) RegisterEventCallback,                     *
*                  7) UnRegisterEventCallback,                   *
*                  8) QueryDevicePower                           *
*                  9) SetDevicePower                             *
*                  10)QueryLocalDeviceProperties                 *
*                  11)SetLocalDeviceName                         *
*                  12)SetLocalClassOfDevice                      *
*                  13)SetDiscoverable                            *
*                  14)SetConnectable                             *
*                  15)SetPairable                                *
*                  16)StartDeviceDiscovery                       *
*                  17)StopDeviceDiscovery                        *
*                  18)QueryRemoteDeviceList                      *
*                  19)QueryRemoteDeviceProperties                *
*                  20)AddRemoteDevice                            *
*                  21)DeleteRemoteDevice                         *
*                  22)PairWithRemoteDevice                       *
*                  23)CancelPairWithRemoteDevice                 *
*                  24)UnPairRemoteDevice                         *
*                  25)QueryRemoteDeviceServices                  *
*                  26)RegisterAuthentication                     *
*                  27)UnRegisterAuthentication                   *
*                  28)PINCodeResponse                            *
*                  29)PassKeyResponse                            *
*                  30)UserConfirmationResponse                   *
*                  31)ChangeSimplePairingParameters              *
*                  32)RegisterServerPort                         *
*                  33)OpenServerPortRequestResponse              *
*                  34)UnRegisterServerPort                       *
*                  35)OpenRemotePort                             *
*                  36)ClosePort                                  *
*                  37)ReadData                                   *
*                  38)WriteData                                  *
*                  39)SendLineStatus                             *
*                  40)SendPortStatus                             *
*                  41)QueryServerPresent                         *
*                  42)FindFreeServerPort                         *
*                  43)ChangeBufferSize                           *
*                  44)LoopbackMode                               *
*                  45)AutomaticReadMode                          *
*                  46)DisplayRawDataMode                         *
*                  47)EnableBluetoothDebug                       *
*                  Help, Quit.                                   *
******************************************************************
启动Demo程序
// 1) Initialize. 初始化.
// 用法:Initialize [0/1 - Register for Events].
// 说明:参数表示是否注册回调函数DEVM_Event_Callback;
SPPM> 1 1
BTPM_Initialize() Success: 0.
DEVM_RegisterEventCallback() Success: 5.
// 9) SetDevicePower. 上电.
// 用法:SetDevicePower [0/1 - Power Off/Power On].
SPPM>9 1
echo 45 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio45/direction
echo 0 > /sys/class/gpio/gpio45/value
echo 1 > /sys/class/gpio/gpio45/value
echo 0 > /sys/class/gpio/gpio45/value
echo 1 > /sys/class/gpio/gpio45/value
BT COMM PORT (/dev/ttyS1): 1
Status: Executing BTS Script /lib/firmware/TIInit_6.12.26.bts.
Status: BTS Script successfully executed.
DEVM_PowerOnDevice() Success: 0.
SPPM>
Device Powered On.
// 关闭电源
SPPM>9 0
DEVM_PowerOffDevice() Success: 0.
SPPM>
Device Powering Off Event, Timeout: 0x00000BB8.
SPPM>echo 0 > /sys/class/gpio/gpio45/value
echo 0 > /sys/class/gpio/gpio45/value
Device Powered Off.
// 8) QueryDevicePower 查询电源状态
SPPM>8
DEVM_QueryDevicePowerState() Success: On.
// 6) RegisterEventCallback
// 说明:注册DEVM_Event_Callback回调函数,未注册时才能注册,每注册一次返回值加1,表示注册ID。
SPPM>6
DEVM_RegisterEventCallback() Success: 6.
// 7) UnRegisterEventCallback
// 说明:取消注册DEVM_Event_Callback回调函数,注册时的ID在调用函数时作为参数使用。
SPPM>7
DEVM_UnRegisterEventCallback() Success.
// 反注册了的东西都要注销,就像进了澡堂你还要出来,但进去的时候给你个手牌,出来的时候手牌要归还。
// 2) Cleanup 
// 说明:和Initialize相反的操作,如果有DEVMCallback注册则注销,有其他的运行任务也关闭。
//       并且cleanup后,可以重新initialize,但这个不影响power on状态。
SPPM>2
// 5) ShutdownService
// 说明:关闭服务程序SS1BTPM
SPPM>5
BTPM_ShutdownService() Success: 0.
SPPM>echo 0 > /sys/class/gpio/gpio45/value
echo 0 > /sys/class/gpio/gpio45/value
Server has been Un-Registered.
SPPM>Nov 24 05:33:41 LinuxSPPM: [BTPM] PMCLT_EventHandler:UNSUPPORTED EVENT=1
Client:
// 35)OpenRemotePort 打开主机端口
// 用法:OpenRemotePort [BD_ADDR] [Server Port] [Flags (Optional - 1:Authentication, 2:Encryption)]
// 说明:直接打开会被拒绝。只会互相发现对方,通过DEVM_Event_Callback互相交换信息。
SPPM>35 84C69237FBD0 5
Remote Device Found.
BD_ADDR:      84C69237FBD0
COD:           0x000000
Device Name:
Device Flags:  0x80000000
RSSI:          0
Friendly Name:
App. Info:   : 00000000
Paired State : FALSE
Connect State: FALSE
Encrypt State: FALSE
Sniff State  : FALSE
Serv. Known  : FALSE
SPPM>SPPM_OpenRemotePort(5) Success. Port Handle: 1.
SPPM>
Remote Device Properties Changed.
BD_ADDR:      84C69237FBD0
Device Flags:  0x80000048
Connect State: TRUE
SPPM>
Remote Device Properties Changed.
BD_ADDR:      84C69237FBD0
Device Name:   serer
Device Flags:  0x80000049
SPPM>
Remote Port Open Status.
    Port Handle: 1
    Status:      Remote Port Open Failure: Refused
// ==> 主机端显示的消息:
Remote Device Found.
BD_ADDR:      84C692382BF0
COD:           0x1C0424
Device Name:
Device Flags:  0x80000000
RSSI:          0
Friendly Name:
App. Info:   : 00000000
Paired State : FALSE
Connect State: FALSE
Encrypt State: FALSE
Sniff State  : FALSE
Serv. Known  : FALSE
SPPM>
Remote Device Properties Changed.
BD_ADDR:      84C692382BF0
Device Flags:  0x80000008
Connect State: TRUE
SPPM>
Remote Device Properties Changed.
BD_ADDR:      84C692382BF0
Device Name:   WL18xx Device
Device Flags:  0x80000009
// 说明:在两边都执行过26)RegisterAuthentication以后,如果不设置IO Capacity,则两边分别输入UserConfirmationResponse命令后,端口打开成功。
SPPM>35 84C69237FBD0 5
Remote Device Found.
BD_ADDR:      84C69237FBD0
COD:           0x000000
Device Name:
Device Flags:  0x80000000
RSSI:          0
Friendly Name:
App. Info:   : 00000000
Paired State : FALSE
Connect State: FALSE
Encrypt State: FALSE
Sniff State  : FALSE
Serv. Known  : FALSE
SPPM>SPPM_OpenRemotePort(5) Success. Port Handle: 1.
SPPM>
Remote Device Properties Changed.
BD_ADDR:      84C69237FBD0
Device Flags:  0x80000048
Connect State: TRUE
SPPM>
Remote Device Properties Changed.
BD_ADDR:      84C69237FBD0
Device Name:   WL18xx Device
Device Flags:  0x80000049
SPPM>
Authentication Request received for 84C69237FBD0.
I/O Capability Request.
DEVM_AuthenticationResponse() Success.
SPPM>
Authentication Request received for 84C69237FBD0.
I/O Capability Response.
Remote I/O Capabilities: Display Yes/No, MITM Protection: TRUE.
SPPM>
Authentication Request received for 84C69237FBD0.
User Confirmation Request.
User Confirmation: 979202
Respond with the command: UserConfirmationResponse
SPPM>UserConfirmationResponse 1
DEVM_AuthenticationResponse(), User Confirmation Response Success.
Remote Device Properties Changed.
BD_ADDR:      84C69237FBD0
Device Flags:  0x800000CD
Paired State : TRUE
SPPM>
Remote Device Properties Changed.
BD_ADDR:      84C69237FBD0
Device Flags:  0x800000DD
Encrypt State: TRUE
SPPM>
Remote Port Open Status.
    Port Handle: 1
    Status:      Remote 
Open Successful
SPPM>
Port Status Changed.
    Port Handle: 1
    Port Status:
       Mask:         0x00000003
       BreakSignal:  0
       BreakTimeout: 0
// ==> 主机端显示的消息:
Remote Device Found.
BD_ADDR:      84C692382BF0
COD:           0x1C0424
Device Name:
Device Flags:  0x80000000
RSSI:          0
Friendly Name:
App. Info:   : 00000000
Paired State : FALSE
Connect State: FALSE
Encrypt State: FALSE
Sniff State  : FALSE
Serv. Known  : FALSE
SPPM>
Remote Device Properties Changed.
BD_ADDR:      84C692382BF0
Device Flags:  0x80000008
Connect State: TRUE
SPPM>
Remote Device Properties Changed.
BD_ADDR:      84C692382BF0
Device Name:   WL18xx Device
Device Flags:  0x80000009
SPPM>
Authentication Request received for 84C692382BF0.
I/O Capability Response.
Remote I/O Capabilities: Display Yes/No, MITM Protection: TRUE.
SPPM>
Authentication Requ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜流冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值