微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2541 central與peripheral的連線問題

CC2541 central與peripheral的連線問題

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

我設計的系統上,是由central端發起連線的,而central端已事先知道peripheral的MAC address

故我做了以下過程

1.peripheral 廣播

2.central scan request

3. 此時我在central端加入,simpleBLEAddDeviceInfo( &(PeripheralMACaddr[0]), 0x00 );,預計透過這個建立連線

4.peripheral scan response

5.central connect request

if ( p->simpleBLEState == BLE_STATE_IDLE ){

peerAddr = simpleBLEDevList[0].addr;
addrType = simpleBLEDevList[0].addrType;


GAPCentralRole_EstablishLink( DEFAULT_LINK_HIGH_DUTY_CYCLE,
DEFAULT_LINK_WHITE_LIST,
addrType, peerAddr );
}

至此可以連線會被建立,也能notify。

但我今天刻意間在central端,填入peripheral的MAC address的地方,也就是simpleBLEAddDeviceInfo( &(PeripheralMACaddr[0]), 0x00 );
PeripheralMACaddr[ ]的內容值改變,意圖使其故意成功無法連線。

但我發現這樣做仍然會有機會"成功"建立起兩者的連線,請問這是為什麼?

測試了一下,似乎跟以下的functions有關係,DEFAULT_DEV_DISC_BY_SVC_UUID 被我刻意設成FALSE,所以會進入判斷。

case GAP_DEVICE_DISCOVERY_EVENT:
{
NPI_PrintString(">>>GAP_DEVICE_DISCOVERY_EVENT\r\n");
// discovery complete
simpleBLEScanning = FALSE;

// if not filtering device discovery results based on service UUID

if ( DEFAULT_DEV_DISC_BY_SVC_UUID == FALSE )
{
// Copy results
simpleBLEScanRes = pEvent->discCmpl.numDevs;
osal_memcpy( simpleBLEDevList, pEvent->discCmpl.pDevList,
(sizeof( gapDevRec_t ) * pEvent->discCmpl.numDevs) );
}

break;

 

Huazhen Jiang,

这个原理上是不成立的,你确定你修改地址成功了吗?

請問您指的修改地址是指在central端上儲存的"預先寫好的peripheral端MAC address嗎"??這點是確認的。

而我也有在central端連線成功時,加了一段程序設break point,查看連線成功的MAC address是不是與我預先寫好的一致,如下:

case GAP_LINK_ESTABLISHED_EVENT:
{
BLE_DEV *p = &(gDev[simpleBLEScanIdx]);

uint8 tempAddr[6]= {0};
osal_memcpy(tempAddr ,pEvent->deviceInfo.addr,6);

..

break;

}

結果是不一致,我的central端是與正在進行廣播的peripheral MAC address連線成功。
我也感到很納悶,因為我連線動作已經指定對simpleBLEDevList[0]做連接,所以不得其解

#define DEFAULT_LINK_HIGH_DUTY_CYCLE FALSE

#define DEFAULT_LINK_WHITE_LIST FALSE

uint8 addrType= simpleBLEDevList[0].addrType;

uint8 *peerAddr= simpleBLEDevList[0].addr;

GAPCentralRole_EstablishLink( DEFAULT_LINK_HIGH_DUTY_CYCLE,
DEFAULT_LINK_WHITE_LIST,
addrType, peerAddr );

 

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

网站地图

Top