准备:
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

本文详述了一个蓝牙设备管理程序(SPPM)的使用,包括初始化、设备搜索、连接、断开、查询设备信息和服务等功能。内容涵盖了配对流程、发送和接收数据以及调试日志的控制等方面,展示了蓝牙设备间的交互过程。
最低0.47元/天 解锁文章
1042

被折叠的 条评论
为什么被折叠?



