This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LAUNCHXL-CC2650:观测器不会每次捕获广播

Guru**** 2581345 points
Other Parts Discussed in Thread: CC2650

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/593154/launchxl-cc2650-observer-does-not-capture-advertisement-everytime

器件型号:LAUNCHXL-CC2650
Thread 中讨论的其他器件:CC2650

您好!

我们将观测器与 CC2650 Launchpad 和具有 CC2650 5XD 的广播设备结合使用

广播设备以1秒广播间隔广播每个广播。

观测  器在每个 GAP_DEVICE_DISCOVERY 事件之后使用重复的 GAPObserverRole_StartDiscovery 持续扫描、但观测器不会每次捕获广播。有时会丢失广播。

default_scan_duration 为2000ms

我们喜欢在 Observer 上进行每一个广告宣传。  但它不会在我们的电路板中发生

这是我们的逻辑

案例 GAP_DEVICE_INFO_EVENT:
{
PIN_setOutputValue (hGpioPin、Board_RLED、Board_LED_ON);
PIN_setOutputValue (hGpioPin、Board_RLED、Board_LED_OFF);
uint8 * advdata;
SimpleBLEObserver addDeviceInfo (pEvent->deviceInfo.addr、
pEvent->deviceInfo.addrType);
advdata = pEvent->deviceInfo.pEvtData;
memcpy (AES1key、pEvent->deviceInfo.addr、6);
if (pEvent->deviceInfo.eventType!= 0x04)
{
找到= true;
memcpy (newbuffer、advdata、31);
}
否则
{

}
GAPObserverRole_CancelDiscovery();
// Util_startClock (wkupClock);
}
中断;

案例 GAP_DEVICE_DISCOVERING_EVENT:
{
//发现完成
扫描=错误;

//复制结果
scanRes = pEvent->disccmpl.numDevs;
memcpy (devList、pEvent->discCmpl.pDevList、
(sizeof (gapDevRec_t)* pEvent->discCmpl.numDevs));

PIN_setOutputValue (hGpioPin、Board_GLED、Board_LED_OFF);
如果(scanRes >0)
{
找到= true;
//Util_startClock (wkupClock);
}

Util_startClock (wkupClock);
// device_discovery();
}
中断; 

Util_constructClock (wkupClock、objserverHandler、
1、0、false、WKUP_EVENT);

if (事件和 WKUP_EVENT)
{
if (found=true)
{
PIN_setOutputValue (hGpioPin、Relay1、0);
PIN_setOutputValue (hGpioPin、Relay2、 0);
//delay_ms (观测器_re_time*100);
delay_ms (100);
PIN_setOutputValue (hGpioPin、Relay1、 1);
PIN_setOutputValue (hGpioPin、Relay2、1);
}
找到=false;
memset (newbuffer、0、31);
device_discovery();
Events &=~WKUP_EVENT;
} 

谢谢、

Santhanaraynan  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Santhanaraynan、

    根据您的逻辑,您只能检查您收到的广播 PDU 是否不是扫描响应(此处:if (pEvent->deviceInfo.eventType!= 0x04),其中 GAP_ADRPT_SCAN_RSP = 0x04。 对器件进行分类。

    您可能会从另一个器件获得广播、该器件的广播数据中没有您期望的数据。

    我建议您实际检查 bdaddr 是否来自您期望的器件、然后执行您需要的操作。 或者可能将扫描窗口设置为更小、并手动检查您是否仍然看到设备。

    希望这对您有所帮助、
    反叛分子