微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > cc2540 central端连接peripheral设备

cc2540 central端连接peripheral设备

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

central端通过按键来discover peripheral设备。ti 4.0中的代码是这样实现的。

if ( keys & HAL_KEY_CENTER )
{
uint8 addrType;
uint8 *peerAddr;

// Connect or disconnect
if ( simpleBLEState == BLE_STATE_IDLE )
{
// if there is a scan result
if ( simpleBLEScanRes > 0 )
{
// connect to current device in scan result
peerAddr = simpleBLEDevList[simpleBLEScanIdx].addr;
addrType = simpleBLEDevList[simpleBLEScanIdx].addrType;

simpleBLEState = BLE_STATE_CONNECTING;

GAPCentralRole_EstablishLink( DEFAULT_LINK_HIGH_DUTY_CYCLE,
DEFAULT_LINK_WHITE_LIST,
addrType, peerAddr );

LCD_WRITE_STRING( "Connecting", HAL_LCD_LINE_1 );
LCD_WRITE_STRING( bdAddr2Str( peerAddr ), HAL_LCD_LINE_2 );
}
}
else if ( simpleBLEState == BLE_STATE_CONNECTING ||
simpleBLEState == BLE_STATE_CONNECTED )
{
// disconnect
simpleBLEState = BLE_STATE_DISCONNECTING;

gStatus = GAPCentralRole_TerminateLink( simpleBLEConnHandle );

LCD_WRITE_STRING( "Disconnecting", HAL_LCD_LINE_1 );
}
}

但是我这样做,不能和peripheral connect。需要把标红的两句改为

peerAddr = simpleBLEDevList[simpleBLEScanIdx-1].addr;
addrType = simpleBLEDevList[simpleBLEScanIdx-1].addrType;

我保证别的地方都没有改。从simpleBLEAddDeviceInfo函数可以看出simpleBLEScanRes是发现设备的个数,simpleBLEScanIdx = simpleBLEScanRes。

所以应该-1才对啊。为什么ti的没有减一。求解释。

杰克,

在 if ( keys & HAL_KEY_LEFT ) 中,随着按左键选择搜索到的设备,simpleBLEScanIdx会自加。

但是如果你不按左键,simpleBLEScanIdx应该是默认的 simpleBLEScanIdx = simpleBLEScanRes;,最后一个搜索到的设备在列表中的位置。

hi,yan。

    确实如你所说,我用的mini的板子,不需要左键。所以也就没有这一项了。

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

网站地图

Top