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.

[参考译文] CC2541:扫描时可接收的最大数据包数

Guru**** 2796425 points

Other Parts Discussed in Thread: CC2541

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1051987/cc2541-maximum-number-of-packets-that-could-be-received-while-scanning

器件型号:CC2541

我对扫描有一些疑问、如果有人可以这样评论、我会很感激。

假设系统 每隔90秒通告大约30个传感器、并且我的控制器  CC2541配置为外设观察器角色。 在扫描和外设期间观察以与移动 应用进行通信。

1.理想的扫描窗口、扫描间隔和扫描持续时间是多少、以便从传感器捕获所有数据包? (没有大量丢失的数据包)

理想情况下、CC2541可以使用此处的最佳扫描参数值处理的最大数据包数。  

3. 如果我将超时设置为12分钟,是否可以使用 CC2541很好地捕获所有数据包?

最棒的

瓦伦

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

    尊敬的 Varun:

    [引用 userid="492310" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1051987/cc2541-maximum-number-of-packets-that-could-be-received-while-scanning "]

    1.理想的扫描窗口、扫描间隔和扫描持续时间是多少、以便从传感器捕获所有数据包? (没有大量丢失的数据包)

    [/报价]

    为了降低丢包的可能性、我们建议您将扫描 持续时间设置 为设备广播间隔长度的两倍。 不过、在这里、您将需要在响应方面进行权衡。 您需要停止扫描才能解析扫描结果。

    [引用 userid="492310" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1051987/cc2541-maximum-number-of-packets-that-could-be-received-while-scanning "]

    理想情况下、CC2541可以使用此处的最佳扫描参数值处理的最大数据包数。  

    [/报价]

    这将取决于堆大小。 相反、我建议频繁扫描并频繁重新启动、而不是永久扫描。

    [引用 userid="492310" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1051987/cc2541-maximum-number-of-packets-that-could-be-received-while-scanning "]

    3. 如果我将超时设置为12分钟,是否可以使用 CC2541很好地捕获所有数据包?

    [/报价]

    如果您询问是否应将扫描持续时间设置为12分钟、我建议您不要这样做、因为您可能会耗尽存储空间、甚至在扫描完成之前无法处理结果。

    最棒的

    不需要

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

    你好、Nate、

    一如既往,非常感谢你的准确和明确答复。 解析数据包时、我没有停止扫描。 现在、我正在这样做、结果会更好。

    我将通过以下跟进步骤来关闭此主题:

    在未连接 到设备时、让扫描持续并重新启动的最佳方式是什么? 假设外围设备以500ms 的间隔进行广播、并且广播 持续时间为2s。

    这是一种好方法吗?

    将 DEFAULT_SCAN_DURATION 设置为0 (以完全启用扫描)

    GAP_SetParamValue (TGAP_GEN_DISC_SCAN、DEFAULT_SCAN_DURATION);

    GAP_SetParamValue (TGAP_LIM_DISC_SCAN、DEFAULT_SCAN_DURATION);

    GAPCentralRole_StartDiscovery( DEVDISC_MODE_ALL,true,false );

    case GAP_DEVICE_INFO_EVENT:
    
    GAPCentralRole_CancelDiscovery(); // cancels scan, resets the scan buffer related to scanRes ? 
    OnDeviceDiscovered(&event->deviceInfo);
    
    GAPCentralRole_StartDiscovery( DEVDISC_MODE_ALL, TRUE, FALSE );
    
    
    break;
    
    case GAP_LINK_ESTABLISHED_EVENT:
    if (event->linkCmpl.hdr.status == SUCCESS)
    {
    
    GAPCentralRole_CancelDiscovery();
    currentConnection = event->linkCmpl.connectionHandle;
    filteredRssi = -80;
    Status_t result = GAPCentralRole_StartRssi(event->linkCmpl.connectionHandle, RSSI_PERIOD);
    Debug_AssertExtra(result == SUCCESS, __FILE__, __LINE__);
    }
    else
    {
    currentConnection = INVALID_CONNHANDLE;
    }
    break;
    
    case GAP_LINK_TERMINATED_EVENT:
    
    GAPCentralRole_StartDiscovery( DEVDISC_MODE_ALL, TRUE, FALSE );
    currentConnection = INVALID_CONNHANDLE;
    break;

     GPCentralRole_CancelDiscovery()是否清除 与 scanRes 相关的扫描缓冲区?  

    展望未来。

    最棒的

    瓦伦

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

    您好、Varun、

    将扫描持续时间设置为0会将器件设置为无限期扫描。 您可以尝试此操作、看看它是否适合您。 我建议尝试将持续时间设置为0、然后添加应用程序计时器以按照您需要的时间间隔启动/停止扫描。

    在调用  GPCentralRole_CancelDiscovery()之前和之后,我将通过打印 scanRes 缓冲区来执行快速测试。 这样、您就可以知道它是否被清除。 我认为是这样、否则如果每次扫描都不清除堆栈中的堆、您会很快就会耗尽堆栈。 扫描时、应由应用程序保留相关设备。