目标板开机后自动初始化GATT client库,但还不会自动搜索PTT遥控器,需按键触发start ble bonding消息,QCC300x即进入central模式,开始快速扫描周围是否有包含PTT server的BLE peripheral,相关log如下:
initialise GATT Manager - with servers
Calculate memory size for server tasks:
+GATT=[3]
+GAP=[6]
+Optional=[6]
GATT Server registered
GATT GAP Server initialised
GAP new state=[IDLE]
GAP Bonded to private device=[0]
GattPtt: Add PTT advertising filter
GAP new event=[POWER_ON] state=[IDLE]
GAP new event=[POWER_ON] state=[IDLE]
GAP new event=[BONDABLE] state=[IDLE]
GAP gapStartBonding
GAP new state=[BONDED_SCAN_ADV]
The Max Configuration for [CENTRAL] role is 1
GAP gapStartBondableConnectionTimer timeout=[60 s]
GAP new event=[CENTRAL_CONNECT_ATTEMPT] state=[BONDED_SCAN_ADV]
QCC300x扫描到包含PTT server的设备后,开始尝试发起连接:
GAP Central conn attempt=[0]
GAP Central conn attempt=[0]
GAP new state=[BONDABLE_CONNECTING]
GAP gapStopBondableConnectionTimer
GAP Connect To Any Device
GAP connect attempt whitelist=[0]:
connect_addr=[(0) 2:5b:1529]
current_addr=[(0) 2:5b:1529]
permanent_addr=[(0) 2:5b:1529]
GAP Scanning fast=[1]
GAP Set Master Conn Attempt =[1]
CL_DM_LOCAL_NAME_COMPLETE
Set advertising data bondable=[0]
GAP new event=[CANCELLED_ADV] state=[BONDABLE_CONNECTING]
GAP event ignored in state
GAP new event=[BOND_CONN_TIMEOUT] state=[BONDABLE_CONNECTING]
GAP event not handled in state
GAP new event=[CENTRAL_CONNECT_ATTEMPT] state=[BONDABLE_CONNECTING]
GAP event not handled in state
GAP new event=[SET_ADV_COMPLETE] state=[BONDABLE_CONNECTING]
GAP event not handled in state
The Max Configuration for [CENTRAL] role is 1
GAP Set Master Conn Attempt =[1]
Mem Alloc (Gatt Client - Services): size[15] addr[1b00]
Mem Alloc (Gatt Client - Discovery): size[27] addr[2100]
GATT_EXCHANGE_MTU_CFM
GATT Discovered Service: cid[0xc0] index[0]
service[6] start[0x8] end[0x8]
(Gatt Client - Connection): addr[1c1b]
GATT Discovered Service: cid[0xc0] index[1]
service[9] start[0x9] end[0xc]
(Gatt Client - Connection): addr[1c1b]
(Gatt Client - Size of Services): size[12] addr[1b13]
GATT_PTT_CLIENT_INIT_CFM status[0]
GATT_PTT_CLIENT_READ_BTN_VAL_CFM status[2] value[0]
GATT_PTT_CLIENT_SET_NOTIFICATION_ENABLE_CFM status[0]
GATT Discovered Service: cid[0xc0] index[2]
service[1] start[0xd] end[0xffff]
(Gatt Client - Connection): addr[1c1b]
(Gatt Client - Size of Services): size[19] addr[1b1a]
GATT_BATTERY_CLIENT_INIT_CFM status[0]
GATT_PTT_CLIENT_READ_DESCRIPTOR_CFM status[3] uuid[10498] size[0]
]GATT_BATTERY_CLIENT_READ_LEVEL_CFM status[0] level[100]
GATT Battery RC level cache=[100]
GATT_BATTERY_CLIENT_SET_NOTIFICATION_ENABLE_CFM status[0]
GATT Primary Services Initialised
GATT Client Discovery Complete
Mem Free (Gatt Client): addr[2100]
(Gatt Client - Connection): addr[1c1b]
GAP new event=[CENTRAL_CONNECT_COMPLETE] state=[BONDABLE_CONNECTING]
GAP Set Master Conn Attempt =[0]
The Max Configuration for [CENTRAL] role is 1
GAP new state=[SCAN_ADV]
The Max Configuration for [PERIPHERAL] role is 0
GAP new state=[SCAN_ADV]
GATT_BATTERY_CLIENT_LEVEL_IND level[100]
GATT Battery RC level cache=[100]
GATT_BATTERY_CLIENT_READ_DESCRIPTOR_CFM status[0] uuid[10498] size[2]
[0x1][0x0]
当有PTT按键触发后,QCC300x可从notify事件中得知按键值的变化:
GATT_PTT_CLIENT_BTN_VAL_IND value[4]
GATT Ptt RC value cache=[4]
GATT_PTT_CLIENT_BTN_VAL_IND value[12]
GATT Ptt RC value cache=[12]
GATT_PTT_CLIENT_BTN_VAL_IND value[8]
GATT Ptt RC value cache=[8]
GATT_PTT_CLIENT_BTN_VAL_IND value[12]
GATT Ptt RC value cache=[12]