MultiRole 问题
您好:
我在使用 ble-sdk-210-extra-master 工程时, 在 链接扫描设备的按键里修改了如下
if (keys & KEY_SELECT) {
....
if (scanRes > 0) {
//peerAddr = devList[scanIdx].addr;
//addrType = devList[scanIdx].addrType;
//GAPRole_EstablishLink(DEFAULT_LINK_HIGH_DUTY_CYCLE, DEFAULT_LINK_WHITE_LIST, addrType, peerAddr);
uint8 i;
for(i=0; i<scanRes; i++) {
peerAddr = devList[i].addr;
addrType = devList[i].addrType;
GAPRole_EstablishLink(DEFAULT_LINK_HIGH_DUTY_CYCLE, DEFAULT_LINK_WHITE_LIST, addrType, peerAddr);
}
connecting_state = 1;
但是从现象来看还是只链接了一台从机设备。而设置断点和打印出来的设备发现 确定是有2个的。
还有,在
if (keys & KEY_SELECT) {
if (selectKey == DISCOVERED_DEVICES) {
uint8_t addrType;
uint8_t *peerAddr;
// if already attempting to connect, cancel connection
if (connecting_state == 1) {
GAPRole_TerminateConnection(0xFFFE);
//LCD_WRITE_STRING("Connecting stopped.", LCD_PAGE3);
connecting_state = 0;
}
这里我怎么运行 GAPRole_TerminateConnection(0xFFFE); 都没有跟从机设备断开?难道这个链接句柄不对吗?请问此链接句柄再哪里获取的?
还有一点,就是我在 static void simpleTopology_processRoleEvent(gapMultiRoleEvent_t *pEvent) 函数里
case GAP_DEVICE_INFO_EVENT: {
。。。
simpleTopology_addDeviceInfo(pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType);
添加发现设备时 增加了 打印设备名称的 存储,但是加了此段函数
memcpy(BleParam[k].BleScanName, &pEvent->deviceInfo.pEvtData[i+1], (pEvent->deviceInfo.pEvtData[i-1]-1));
就发现 按键功能工作异常,第一次按下可以,第二次按键则无任何动作,按键顺序先后都一样。
请问这是什么原因?请大侠们指点,谢谢!
请问是从什么现象来判断只连接到了一个设备?
if (keys & KEY_SELECT) {
if (selectKey == DISCOVERED_DEVICES) {
uint8_t addrType;
uint8_t *peerAddr;
// if already attempting to connect, cancel connection
if (connecting_state == 1) {
GAPRole_TerminateConnection(0xFFFE);
//LCD_WRITE_STRING("Connecting stopped.", LCD_PAGE3);
connecting_state = 0;
}
这段逻辑里面是在避免connecting中间又一次发起connect的动作,不是断开已有的连接
memcpy(BleParam[k].BleScanName, &pEvent->deviceInfo.pEvtData[i+1], (pEvent->deviceInfo.pEvtData[i-1]-1));
这个函函数最后的参数应该是数据长度,这里输入的似乎并不对