微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 請問CC2541 central端如何得知現在已經跟peripheral有連接上?

請問CC2541 central端如何得知現在已經跟peripheral有連接上?

时间:10-02 整理:3721RD 点击:

有找到一些相關的function,但不知道如何使用。
如:GAPRole_GetParameter( GAPROLE_CONNHANDLE, &gapConnHandle ); //獲得handle 

我在static void performPeriodicTask( void )中添加這個變數偵測好像沒用。
gapCentralRoleEvent_t *pEvent;
pEvent->gap.hdr.status 

是否有一變數是直接儲存連線status的呢?

central端有GAP_LINK_ESTABLISHED_EVENT事件,在simpleBLECentralEventCB函数里面。

并会如下设置变量,你用simpleBLEState应该可以判断

simpleBLEState = BLE_STATE_CONNECTED;
simpleBLEConnHandle = pEvent->linkCmpl.connectionHandle;
simpleBLEProcedureInProgress = TRUE;

我一開始也是這麼認為,但從下面程序可以知道,simpleBLEState 只是一個被宣告的結構,並沒辦法知道real的連線狀態。
if ( p->simpleBLEState == BLE_STATE_IDLE ){
peerAddr = simpleBLEDevList[0].addr;
addrType = simpleBLEDevList[0].addrType;

p->simpleBLEState = BLE_STATE_CONNECTING;
GAPCentralRole_EstablishLink( DEFAULT_LINK_HIGH_DUTY_CYCLE,
DEFAULT_LINK_WHITE_LIST,
addrType, peerAddr );

謝謝您,我明白您的意思了。

我只要把我下面function中的
p->simpleBLEState = BLE_STATE_CONNECTING;註解掉,讓程序回到GAP_LINK_ESTABLISHED_EVENT,再讓其改變狀態就好了。

if ( p->simpleBLEState == BLE_STATE_IDLE ){
peerAddr = simpleBLEDevList[0].addr;
addrType = simpleBLEDevList[0].addrType;

p->simpleBLEState = BLE_STATE_CONNECTING;
GAPCentralRole_EstablishLink( DEFAULT_LINK_HIGH_DUTY_CYCLE,
DEFAULT_LINK_WHITE_LIST,
addrType, peerAddr );

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top