cc2541可以同时扮演观察者和外围设备的角色吗?



我想使用 cc2541 先接收 ibeacon 包,然后将其传输到其他 Central 设备。但是cc2541如何同时扮演观察者(或中心)和外围的角色呢?谁能给我一个海盗解决方案?谢谢!

使用 Bluegiga

BLE113 或 BLE121LR 模块(它们都由内部的 CC2541 芯片组提供支持),可以使用 Bluegiga BLE 堆栈和 SDK 作为外设和观察者运行模块。以下 BGScript 代码段演示了如何使模块可连接并在观察模式下同时扫描:

# system boot occurs at power-on and reset
event system_boot(major, minor, patch, build, ll_version, protocol, hw)
    call gap_set_mode(gap_general_discoverable, gap_undirected_connectable)
    call gap_discover(gap_discover_observation)
end
# catch new or updated connection
event connection_status(connection, flags, address, address_type, conn_interval, timeout, latency, bonding)
    # new connection will terminate scan, so re-start here to keep it going
    call gap_discover(gap_discover_observation)
end
# catch scan response during discovery
event gap_scan_response(rssi, packet_type, sender, address_type, bond, data_len, data_data)
    # ad payload data will be in "data_data(0:data_len)" buffer
    # one "gap_scan_response" event per observed ad packet
end

这是一个非常基本的实现来演示这个概念,你需要一些其他的项目定义文件来配合它,如Bluegiga文档中的描述(例如 project.bgprojgatt.xmlhardware.xml),但这至少证明了这是可能的。您还需要实现其他逻辑来处理将该数据传递到连接的中央设备(此处未显示)。有关这些设备和 SDK 的更多信息,请参阅此处:

  • https://bluegiga.zendesk.com/entries/97485833-Bluegiga-Module-Documentation-Map#ble

我不熟悉如何使用其他堆栈(例如 TI)来执行此操作,但它与 Bluegiga 的最新 SDK 及其 CC2540/CC2541 驱动的模块开箱即用。

相关内容

  • 没有找到相关文章

最新更新