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.

[参考译文] RTOS/CC2640:simple_peripheral_observer _cc2650lp_app 未收到任何 BLE Discovery 回调

Guru**** 2595800 points
Other Parts Discussed in Thread: CC2650STK

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/609105/rtos-cc2640-simple_peripheral_observer_cc2650lp_app-not-receiving-any-of-ble-discovery-callbacks

器件型号:CC2640
主题中讨论的其他器件:CC2650STK

工具/软件:TI-RTOS

我在定制电路板设置上运行 simple_peripheral_ob观测 器_cc2650lp_app、尝试测试 BLE Discovery、代码运行正常、但我没有收到 BLE 相关事件或回调

1.我调用下面的按钮、返回0、我可以看到我的调试行"scanning on"

UINT8状态= 0;

   状态= GAPObserverRole_StartDiscovery (default_discovery_mode、
                                     default_discovery_active_scan、
                            default_discovery_white_list);

   if (status ==成功)
   {
    scanningStarted = true;
    Tag_Debug ("正在扫描");
    //lcd_write_string ("扫描打开"、lcd_page4);
   }
   其他
   {
     Tag_Debug ("扫描失败:");
      Tag_DebugInt (status);
    //lcd_write_string_value ("扫描失败"、(状态)、10、lcd_page4);
   }

2.此处的第二次回调:"SimpleBLEPeripheral_ObserverStateChangeCB"从未调用。 (是-定义了 plus_observer)

// GAP 角色回调
静态 gapRolesCBs_t SimpleBLEPeripheral_gapRoleCBs =

 SimpleBLEPeripheral_stateChangeCB    //配置文件状态更改回调
#ifdef plus_observer
 ,SimpleBLEPeripheral_ObserverStateChangeCB
#endif

};

3.我的设置未修改,如初始示例 proj 中所示,但禁用 ACTIVE_SCAN 并将其设置为 false 除外

#ifdef plus_observer
//扫描响应的最大数量
#define DEFAULT_MAX_SCAN_RES                 50//8

//扫描持续时间(以 ms 为单位)
#define DEFAULT_SCAN_DURATION                5000

//扫描间隔(以毫秒为单位)
#define DEFAULT_SCAN_INTERVAL                10.

//扫描间隔(以毫秒为单位)
#define DEFAULT_SCAN_WINDOW                  5.

//调查模式(有限、通用、全部)
#define DEFAULT_DISCOVERY_MODE               DEVDISC_MODE_ALL

// true 使用活动扫描
#define default_discovery_active_scan        false

// true 在发现过程中使用白色列表
#define DEFAULT_DISCOVERY_WHICE_LIST         FALSE

#endif //#ifdef plus_observer

4.可以将同一个项目设置为广播,并且我正在使用此模式覆盖广播数据等 我看到一些用户在广告时遇到扫描问题、而这对其他用户来说很有用。 为了安全起见、我已禁用广播、因此我知道 BLE 不是广播。

5.其他观察结果-如果我尝试第二次单击该按钮,启动发现,则第二次出现错误,错误= 17...

 感谢您的任何帮助/反馈!

Sy

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

    您正在尝试发现什么? (例如、您是否有一个正在广播的简单外设?)

    当您开始发现时、您收到的错误为0x11、bleAlreadyInRequestedMode (0x11):设备发现已开始。 您的设备似乎仍在扫描。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    玛丽、

    是的、我们有广播设备。 我可以使用手机标准的双扫描仪看到它们。

    后续调用返回0x11、这段代码确实是"已扫描"、因为我们第一次调用 StartDiscovery 时没有错误、但同时没有任何事件会触发任何检测到的问题...

    我们知道确实有广播设备。

    当我在 STK 开发硬件和我们自己的板上运行时、我会得到相同的结果、因此这似乎是一个软件问题...

    感谢您的帮助!

    Sy

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

    您的 peripheral_observer 是否正在广播?

    您能否使用断点来查看是否布置了任何 GAP_DEVICE_INFO_EVENT 或 GAP_DEVICE_DISCOVERY 事件?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1."您的 peripheral_observer 是否在广播?" 不,不是。 广播已被禁用、其理念是不会干扰扫描(不确定是否可以同时启用广播和扫描-可以吗?)

    2.断点-代码完全不会命中 SimpleBLEPeripheral_ObserverChangeStateCB、在这里应该处理这些事件、并最终进入主应用程序循环队列以处理和运行应用程序特定的逻辑。

    根据默认示例代码、此回调会进行注册(例如、定义了 PLUS_observer):

    // GAP 角色回调
    静态 gapRolesCBs_t SimpleBLEPeripheral_gapRoleCBs =

    SimpleBLEPeripheral_stateChangeCB //配置文件状态更改回调
    #ifdef plus_observer
    ,SimpleBLEPeripheral_ObserverStateChangeCB
    #endif

    };


    感谢您的跟进和帮助!

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

    (可以同时启用扫描和广播、但设备一次只能执行其中一项任务、因此当您开始扫描时、设备将停止广播。)

    您能告诉我您对项目进行了哪些更改、使其在 CC2650STK 上运行吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Marie、

    我已完成以下步骤:

    1.定义 CC2650STK

    2.未定义 CC2650DK_5XD

    3.定义 HEAPMGR_SIZE=1700 (之前为 HEAPMGR_SIZE=0)

    4.

    #ifndef GAPROLE_TASK_STACK_SIZE
    #define GAPROLE_TASK_STACK_SIZE      720//440
    #endif

    运行 simple_peripheral_obier_cc2650lp_stack、将其加载到开发板上

    6.确保定义了 PLUS_observer,同时也定义了 DEFAULT_DISCOVERY ACTIVE_SCAN = false

    7.按下按钮时调用我们在中添加的 StartDicovering 函数

    空 StartDiscovery()

    #ifdef plus_observer
       UINT8状态= 0;

       状态= GAPObserverRole_StartDiscovery (default_discovery_mode、
                                         default_discovery_active_scan、
                                default_discovery_white_list);

       if (status ==成功)
       {
        scanningStarted = true;
        Tag_Debug ("正在扫描");
        //lcd_write_string ("扫描打开"、lcd_page4);
       }
       其他
       {
          Tag_Debug ("扫描失败:");
          Xpert_Tag_DebugInt (status);
        //lcd_write_string_value ("扫描失败"、(状态)、10、lcd_page4);
       }

    #endif

    7.运行 simple_peripheral_observer cc2650lp_app

    Sy