Zephyr OS。通用BLE API

问题描述 投票:1回答:1

我正试图编写一个小的Zephyr OS运行时系统,使用BLE在我的两块nrf52840dk板之间进行通信。在过去的几天里,我一直在阅读BLE的相关知识,并且已经熟悉了GATT serversclients。

我希望的API是这样的。

/* Send a message to conn */
void send(struct bt_conn *conn, void* data, u16_t len);

/* Callback which is invoked when a message is received from conn */
void recv(struct bt_conn *conn, void* data, u16_t len);

我所做的是将系统限制在两个设备上 一个是GATT服务器 一个是GATT客户端

服务器公开一个属性,客户端扫描并订阅。服务器可以通过通知客户机属性的变化来 "发送 "消息给客户机,也可以通过客户机向属性发出写请求来发送消息。

客户端可以通过向属性写入来向服务器发送消息,同时它也可以通过服务器通知它订阅属性的更新来接收消息。

我在想,像这些基元一定存在于GATT层之下(在HCI层?),但Zephyr的文档在大多数地方都相当稀少。继而,我有两个问题。

  • 我对BLE的理解是否正确,BLE设备之间的大部分通信是通过这样的GATT服务器和客户端关系发生的,还是通过BLE网状网络?
  • 任何关于我可以在哪里读到我上面所描述的更通用的API的信息指针(或者如果它已经存在,那么指向它的指针)将是有帮助的。

edit: 我已经接受了 Youssifs 的回答。他的回答和下面的评论已经充分回答了我的问题。

bluetooth bluetooth-lowenergy gatt zephyr-rtos
1个回答
0
投票

我对BLE的理解是正确的吗,BLE设备之间的大部分通信都是通过这种GATT服务器和客户端的关系发生的,还是通过BLE网状网络发生的?

你说的没错,大部分的应用都会使用GATT serverclient关系。这是因为当蓝牙低能在2010年推出时(后来在2011年通过CoreBluetooth与iPhone 4s一起推出),这是唯一的通信方式。从那时起,BLE的后续版本引入了更新的通信方式:-。

  • LE L2CAP(在BT v4.1,2013年推出),其中低级通信通道被用于快速和直接的数据传输。
  • LE Mesh(2017年推出),其中大部分的通信都是基于BLE广告,因此理论上只要是v4.0的设备都可以支持。

这两种方法的问题是相对复杂,而且厂商采用的速度较慢。因此,我的建议是继续使用GATT示例应用,直到你更熟悉BLE,然后再继续使用其他通信方法。

任何关于我可以在哪里读到我上面描述的更通用的API的编写信息的指针(或者如果它已经存在,那么指向它的指针)都将是有帮助的。

你可能已经看过了,但是这个 入门古迪 的Zephyr相当有用。然后您可以使用 中央人力资源部门的例子 一板和 周边人力资源实例 以获得双向通信。一旦完成,你就可以开始定制你的应用程序,以满足你的需求。所有蓝牙示例的列表可以在下面找到 此处.

以下是关于Zephyr中BLE开发的更多资源:-。

希望对大家有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.