AnW_BT_SRV
AnW Bluetooth Service API, offered two sorts of releases
1.APP Release (btsrv): executable BTDemo, laun
cher btsrv_client.sh, essentails libraries (.so), and App configures (.xml)
2.SDK Release (anwbtsrv_sdk): open source with AnWBTServiceDemo.cpp, imported essentials libraries (.so), header (anwbtservice.h), and App configures (.xml)
RELEASE NOTE
20220128 TAG:1.0.0.1
1.[FUNC]supports pbap downloading & data callback
2.[DEMO]update service demo
3.[DOC]update SDK API Document
20220121 TAG:0.0.03
1.[FUNC]supports android auto connect & write data to android
2.[FUNC]Add some functions, For details, refer to anwbtservice.h
20220118 TAG:TAMUL_BT_V2
1.[FUNC]supports iphone carplay connect & write carplay data to iphone
20220117 TAG:TAMUL_BT_V1
1.[FUNC] supports basic BT pair & connect
Pre-Requiremen
Modify combo module init script /etc/init.d/ubloxinit.sh
echo "[DDMISO] UBLOX Driver" modprobe jody-w2-sdiouart ifconfig uap0 192.168.1.10 hostapd /etc/ublox/hostapd.conf -B udhcpd /etc/ublox/udhcpd.conf ifconfig uap0 up wpa_supplicant -B -D nl80211 -i mlan0 -c /etc/ublox/wpa_supplicant.conf #modprobe jody-w2-sdiouart-bt #hciattach /dev/ttyAMA1 any 3000000 flow #hciconfig -a hci0 up #hciconfig -a hci0 udhcpc -i mlan0
Run App on targets (tamul_btsrv-.zip)
1.1 unzip
1.2 Copy results folder /build/btsrv to target /home/btsrv
1.3 go to target, in terminal entering /btsrv folder
1.4 run btsrv_client.sh to launch BTDemo demo app and following the menu commands
> export LD_LIBRARY_PATH="/home/btsrv" >./BTDemo
#bluetooth menu
set device name
================bluetooth menu================= 1.EXIT 2.BTPowerOn 3.BTPowerOff 4.SetLocalDevAddrOrName =============================================== > input num: 4 0.set local name 1.set local address > 0 > input name: TAMUL_MARVELL (for example) ...
power on init
================bluetooth menu================= 1.EXIT 2.BTPowerOn 3.BTPowerOff 4.SetLocalDevAddrOrName =============================================== > input num: 2 BTPowerOn ...
power off
================bluetooth menu================= 1.EXIT 2.BTPowerOn 3.BTPowerOff 4.SetLocalDevAddrOrName =============================================== > input num: 3 BTPowerOff ...
Note: Looking for device name (e.g. TAMUL_MARVELL) from mobile, then pair the device with mobile When mobile shows connected succeed, turn off the BT button from mobile, then turn on the BT button from mobile again. At this time, mobile has paired storage with the device. #common Menu
start Inquiry device
================ common Menu ================== 1.Exit 2.StartInquiry 3.StopInquiry ... 8.ConnectDevice 9.DisconnectDevice 10.SPP_Write 11.SetScanMode 12.GetScanMode ... =============================================== input num: 2 ...
Note:then you can find the new device's message from respond log,for example
AnWBTService_MsgCallback(10) AnWBTSERVICE_NEW_DEVICE_FOUND name[CSR - bc7] devclass[2098184]
stop inquiry device
================ common Menu ================== 1.Exit 2.StartInquiry 3.StopInquiry ... 8.ConnectDevice 9.DisconnectDevice 10.SPP_Write 11.SetScanMode 12.GetScanMode ... =============================================== input num: 3 ...
When StartInquiry is running, execute StopInquiry immediately and stop inquiry
PairResponse
================ common Menu ================== 1.Exit 2.StartInquiry 3.StopInquiry 4.PairResponse ... 8.ConnectDevice 9.DisconnectDevice 10.SPP_Write 11.SetScanMode 12.GetScanMode ... =============================================== input num: 4 ...
SetPinCode
================ common Menu ================== 1.Exit 2.StartInquiry 3.StopInquiry 4.PairResponse 5.SetPinCode ... 8.ConnectDevice 9.DisconnectDevice 10.SPP_Write 11.SetScanMode 12.GetScanMode ... =============================================== input num: 5 input pincode:1111
SetLocalDevCoD
================ common Menu ================== 1.Exit 2.StartInquiry 3.StopInquiry 4.PairResponse 5.SetPinCode 6.SetLocalDevCoD ... 8.ConnectDevice 9.DisconnectDevice 10.SPP_Write 11.SetScanMode 12.GetScanMode ... =============================================== input num:6 input devClass:7995916
GetLocalOOBData
================ common Menu ================== 1.Exit 2.StartInquiry 3.StopInquiry ... 6.SetLocalDevCoD 7.GetLocalOOBData 8.ConnectDevice 9.DisconnectDevice 10.SPP_Write 11.SetScanMode 12.GetScanMode ... =============================================== input num:7 ...
Note:then you can get the respond message from log,"status[0]" indicates success,for example
AnWBTService_MsgCallback(13) AnWBTSERVICE_GET_LOCAL_OOB_DATA status[0] hash_c192...
Connect Device(for example:spp connect)
================ common Menu ================== 1.Exit 2.StartInquiry ... 8.ConnectDevice 9.DisconnectDevice 10.SPP_Write 11.SetScanMode 12.GetScanMode ... =============================================== > input num: 8 ... > input connect addr(xx:xx:xx:xx:xx:xx): 11:e8:14:da:61:d4 (for example)
Note: You can find mobile BT mac from "Setting->General->About-> Bluetooth" (iphone)
> input profile_mask: 0x00000040
Note: Then, connected.Querying the mobile phone shows that the connection is successful
spp write
================ common Menu ================== 1.Exit 2.StartInquiry ... 8.ConnectDevice 9.DisconnectDevice 10.SPP_Write 11.SetScanMode 12.GetScanMode ... =============================================== > input num: 10 > input connect addr(xx:xx:xx:xx:xx:xx): 11:e8:14:da:61:d4 (for example)
Note: You can find mobile BT mac from "Setting->General->About-> Bluetooth" (iphone) ###CarPlay spp settings
>input SPP_data:ff,55,2,0,ee,10 (for example)
Note: ff,55,2,0,ee,10 is specified for CarPlay, to check log printed to get successfully responded from iPhone Note: Then, check log printed to get successfully responded
AnWBTService_SPP_DATA_IND_S sppData: [ff] [55] [2] [0] [ee] [10]
###Android Auto spp settings
>input SPP_data:00, 15, 00, 04, 08, 01, 10, 00, 18, 00,20, 95, 01, 20, 99, 01, 20, 9D,01, 20, A1, 01, 20, A5, 01 (for example)
Note: 00, 15, 00, 04, 08, 01, 10, 00 ... is specified for Android Auto or inquiry device from Android phone, upon paired, if phone is "Android Auto" supported, the connect request will automatically send to host HU. Note: Then, check log printed to get successfully responded
AnWBTService_SPP_DATA_IND_S sppData: [0][64][0][5][8][1][10][5][1a][e][39][41][32][37][31][46][46][41][5a][30][30][41][4b][34][20][0][32][4c][a][24][66][32][61][63][66]
disconnect Device
Note:the device had been connected,for example:spp connected
================ common Menu ================== 1.Exit 2.StartInquiry ... 8.ConnectDevice 9.DisconnectDevice 10.SPP_Write 11.SetScanMode 12.GetScanMode ... =============================================== > input num: 9 > input connect addr(xx:xx:xx:xx:xx:xx):11:e8:14:da:61:d4 > input profile_mask:0x00000040
After execution, you can receive the answer message of disconnection and find call back message in the log
AnWBTService_MsgCallback(7) AnWBTSERVICE_DEV_PROFILE_STATE_CHANGED profile_mask[10] devclass[7995916] isConnected[0]
SetScanMode
================ common Menu ================== 1.Exit 2.StartInquiry ... 8.ConnectDevice 9.DisconnectDevice 10.SPP_Write 11.SetScanMode 12.GetScanMode ... =============================================== > input num:11 > input setPairingState:3
After execution, the log print the pairing state "setPairingState:state[5]"
GetScanMode
================ common Menu ================== 1.Exit 2.StartInquiry ... 8.ConnectDevice 9.DisconnectDevice 10.SPP_Write 11.SetScanMode 12.GetScanMode ... =============================================== > input num:12
After execution,you can get the state form log ,for example: PairingState[5]
pair Device
================ common Menu ================== 1.Exit 2.StartInquiry ... 13.UnPairDevice 14.PairDevice 15.GetAllPairedDeviceInfo 16.GetLocalDevInfo 17.GetBTPowerStatus 18.SendHCICommand 19.DeviceIsConnected =============================================== > input num:14 > input pair addr(xx:xx:xx:xx:xx:xx):11:e8:14:da:61:d4 > input pincode:0000
After execution, you can receive the answer message and find call back message in the log
AnWBTService_MsgCallback(8) AnWBTSERVICE_PAIRED_DEVICE_ELEMENT_CHANGED isFirstPaired[1] event_type[0] support_profile_mask[2ced]
Note:Querying the mobile phone shows paired record
unpair Device
================ common Menu ================== 1.Exit 2.StartInquiry ... 13.UnPairDevice 14.PairDevice 15.GetAllPairedDeviceInfo 16.GetLocalDevInfo 17.GetBTPowerStatus 18.SendHCICommand 19.DeviceIsConnected =============================================== > input num:13 > input unpair addr(xx:xx:xx:xx:xx:xx):11:e8:14:da:61:d4
After execution, you can receive the answer message and find call back message in the log
AnWBTService_MsgCallback(9) AnWBTService_UnpairDevice_S type[1] status[0]
get all paired device Info
================ common Menu ================== 1.Exit 2.StartInquiry ... 13.UnPairDevice 14.PairDevice 15.GetAllPairedDeviceInfo 16.GetLocalDevInfo 17.GetBTPowerStatus 18.SendHCICommand 19.DeviceIsConnected =============================================== > input num:15
then the log print all paired device Info,for example
PairedDevInfo:btaddr[11:e8:14:da:61:d4] linkKey[w쳇[:µb7] devClass[7995916] nameLen[6] rdName[123asd] servicesSupported[11501] didVenderID[76] didProductID[28937] didVersion[2880] didVenderIDSource[1]
get local device Info
================ common Menu ================== 1.Exit 2.StartInquiry ... 13.UnPairDevice 14.PairDevice 15.GetAllPairedDeviceInfo 16.GetLocalDevInfo 17.GetBTPowerStatus 18.SendHCICommand 19.DeviceIsConnected =============================================== > input num:16
then the log print local device Info,for example
LocalDevInfo:btaddr[a5:a5:0:5b:2:0] devClass[2098184] nameLen[6] Name[ANWBT] servicesSupported[15] pinLen[4] pinCode[0000]
##get BT power status
================ common Menu ================== 1.Exit 2.StartInquiry ... 13.UnPairDevice 14.PairDevice 15.GetAllPairedDeviceInfo 16.GetLocalDevInfo 17.GetBTPowerStatus 18.SendHCICommand 19.DeviceIsConnected =============================================== > input num:17
then the log print the power status of BT,like "power_status[0]"
send HCI command
================ common Menu ================== 1.Exit 2.StartInquiry ... 13.UnPairDevice 14.PairDevice 15.GetAllPairedDeviceInfo 16.GetLocalDevInfo 17.GetBTPowerStatus 18.SendHCICommand 19.DeviceIsConnected =============================================== > input num:18 > input OpCode Group: > input OpCode Command: > input Command parameters:
##judge device is connected
================ common Menu ================== 1.Exit 2.StartInquiry ... 13.UnPairDevice 14.PairDevice 15.GetAllPairedDeviceInfo 16.GetLocalDevInfo 17.GetBTPowerStatus 18.SendHCICommand 19.DeviceIsConnected =============================================== > input num:19 > input addr(xx:xx:xx:xx:xx:xx):11:e8:14:da:61:d4
then the log print the status that the device is connected or not connected,for example
connect_status[1](0-not connected 1-connected)
HFP Menu
OutgoingCall
================== HFP Menu =================== 1.Exit 2.OutgoingCall 3.AcceptCall 4.Hangup 5.GetAudioState 6.GetCallStatusList =============================================== > input num:2 > input typeofcall:0 (0/1/2/3) > input target addr(xx:xx:xx:xx:xx:xx):11:e8:14:da:61:d4 > input phonenum:10010
After execution, you can receive the answer message and find call back message in the log, for example
AnWBTService_MsgCallback(15) AnWBTService_HFPCallChanged_S devclass[7995916] call1_number[10010] call1_state[5] call2_number[10010 ] call2_state[2] call3_number[] call3_state[1] AnWBTService_MsgCallback(16) AnWBTService_HFPClccInfoChanged_S number[10010] name[ 10010 ] dir[0] status[0]
##AcceptCall
================== HFP Menu =================== 1.Exit 2.OutgoingCall 3.AcceptCall 4.Hangup 5.GetAudioState 6.GetCallStatusList =============================================== > input num:3 > input target addr(xx:xx:xx:xx:xx:xx):11:e8:14:da:61:d4
##Hangup
================== HFP Menu =================== 1.Exit 2.OutgoingCall 3.AcceptCall 4.Hangup 5.GetAudioState 6.GetCallStatusList =============================================== > input num:4 > input target addr(xx:xx:xx:xx:xx:xx):11:e8:14:da:61:d4
After execution, you can receive the answer message and find call back message in the log, for example
AnWBTService_MsgCallback(15) AnWBTService_HFPCallChanged_S devclass[7995916] call1_number[2] call1_state[4] call2_number[10010 ] call2_state[2] call3_number[] call3_state[2]
AnWBTService_MsgCallback(14) AnWBTService_HFPFeatureValueChanged_S rdName[123asd] devclass[7995916] HFP_Feature_mask[2] AnWBTService_MsgCallback(14) AnWBTService_HFPFeatureValueChanged_S rdName[123asd] devclass[7995916] HFP_Feature_mask[4] AnWBTService_MsgCallback(14) AnWBTService_HFPFeatureValueChanged_S rdName[123asd] devclass[7995916] HFP_Feature_mask[32]
##GetAudioState
================== HFP Menu =================== 1.Exit 2.OutgoingCall 3.AcceptCall 4.Hangup 5.GetAudioState 6.GetCallStatusList =============================================== > input num:5 > input target addr(xx:xx:xx:xx:xx:xx):11:e8:14:da:61:d4
then the log print the audio state ,for exaple "audio state[0]" ##GetCallStatusList
================== HFP Menu =================== 1.Exit 2.OutgoingCall 3.AcceptCall 4.Hangup 5.GetAudioState 6.GetCallStatusList =============================================== > input num:6 > input target addr(xx:xx:xx:xx:xx:xx):11:e8:14:da:61:d4
then logs print the respond message,for exaple
AnWBTService_HFPClccInfoChanged_S number[10010] name[ 10010 ] dir[0] status[0]
#pbap Menu ##SYNCSTART Note:To execute this API, pbap and HFP must be connected successfully. so we can input profile_mask:0x00000011
================ common Menu ================== 1.Exit 2.StartInquiry ... 8.ConnectDevice 9.DisconnectDevice 10.SPP_Write 11.SetScanMode 12.GetScanMode ... =============================================== > input num: 8 ... > input connect addr(xx:xx:xx:xx:xx:xx): 11:e8:14:da:61:d4 (for example) >input profile_mask: 0x00000011
Note: You can find mobile BT mac from "Setting->General->About-> Bluetooth" (iphone)
start sync pabap
================== pbap Menu ================== 1.Exit 2.SYNCSTART 3.SYNCCANCEL =============================================== >input num:2 >input target addr(xx:xx:xx:xx:xx:xx):11:e8:14:da:61:d4
After execution, you can receive the answer message and find call back message in the log, for example
AnWBTService_MsgCallback(30) AnWBTService_PBAP_CONTACT_DATA_S contactID[1] contactTYPE[1] fnLen[12] fn[我的编号] honorific_suffixesLen[4] honorific_suffixes[wdbh]
AnWBTService_MsgCallback(32) AnWBTService_PBAP_TELEPHONE_DATA_S contactID[1] telephoneNumID[1] telephoneNumLen[14] telephoneNum[+8617621702696]
AnWBTService_MsgCallback(31) AnWBTService_PBAP_CALLLOG_DATA_S callID[123] callTYPE[2] fnLen[0] fn[] number[055112340] timeLen[19] time[2021-12-14T15:17:12]
2.SYNCSTART
3.SYNCCANCEL
##SYNCCANCEL
================== pbap Menu ==================
1.Exitthen the pbap SYNC will cancel and stop # Customize on SDK (tamul_release-.zip) 1.unzip 2.in terminal entering ./anwbtsrv_sdk/Demo folder 3.setup tool-chain by command line (source ...) or edit in ./anwbtsrv_sdk/Demo/build_demo.sh 4.run make or build_demo.shinput num:2 input target addr(xx:xx:xx:xx:xx:xx):11:e8:14:da:61:d4
> cd ./build/anwbtsrv_sdk/Demo > source /opt/poky-tamul/2.5.1/environment-setup-cortexa9hf-neon-poky-linux-gnueabi > make or ./build_demo.shthen, result is collected in ./Demo/btsrv # STRUCTURE (tamul_release-.zip)
. └── Demo ├── AnWBTServiceDemo.cpp (examples to use anwbtservice) ├── build_demo.sh (build script, call to make) ├── makefile (makefile for BTDemo) ├── btsrv_client.sh (launcher for BTDemo) ├── \*.xml, \*.cfg (app settings) ├── import (anwbtservice) │ ├── anwbtservice.h (service api header) │ └── \*.so (essentials libraries) └── btsrv (ouput for produced, e.g. BTDemo)
HOWTO
Scrip Build for btsrv app release
> cd Build
> ./build.sh [|LINUX] [|STA5_CSR_BTSRV|TAMUL_MARVEL_BTSRV]
then, result is collected in ./build/btsrv
Scrip Build for anwbtsrv_sdk sdk release
> cd Build
> ./build.sh [|LINUX] [|STA5_CSR_RELEASE|TAMUL_MARVEL_RELEASE]
then, result is collected in ./build/anwbtsrv_sdk
USAGE
1.Support HFP, A2DP, AVRCP, PBAP, .. AnW BT stack
2.Support Device Serarch & Pair, Call, Phonebook, Music, ...
Customize on SDK (tamul_release-.zip)
- unzip
- in terminal entering ./anwbtsrv_sdk/Demo folder
- setup tool-chain by command line (source ...) or edit in ./anwbtsrv_sdk/Demo/build_demo.sh
- run make or build_demo.sh
> cd ./build/anwbtsrv_sdk/Demo
> source /opt/poky-tamul/2.5.1/environment-setup-cortexa9hf-neon-poky-linux-gnueabi
> make or ./build_demo.sh
then, result is collected in ./Demo/btsrv