#stack #mesh #bluetooth #full-stack #pdu #cross-platform #implemented

no-std bluetooth_mesh

跨平台,全蓝牙网状栈,在Rust中实现。遵循SIG的蓝牙网状规范核心v1.0。设计用于与几乎任何BLE无线发射器一起工作(使用https://github.com/AndrewGi/btle/进行平台相关的蓝牙驱动程序)。虽然库提供了堆栈,但还提供了所有用于自定义和创建您自己的堆栈的原始数据和对象。更多信息请参见https://github.com/AndrewGi/BluetoothMeshRust。

4个版本

0.1.4 2020年2月22日
0.1.2 2020年1月13日
0.1.1 2020年1月12日
0.1.0 2019年8月19日

#1212 in 硬件支持

GPL-3.0-only

1MB
12K SLoC

蓝牙网状Rust

文档

Crates.io

!! WIP 和 API 在 1.0 版本前不稳定 !!

跨平台,全蓝牙网状栈,在Rust中实现。遵循SIG的蓝牙网状规范核心v1.0。设计用于与几乎任何BLE无线发射器一起工作(使用https://github.com/AndrewGi/btle/进行平台相关的蓝牙驱动程序)。虽然库提供了堆栈,但还提供了所有用于自定义和创建您自己的堆栈的原始数据和对象。

本库考虑了#![no_std]。然而,由于蓝牙网状栈的复杂性,std对于使用异步tokio进行消息处理和处理的full_stack是必需的。#![no_std]目前已被禁用,直到https://github.com/rust-lang/rust/pull/69033达到nightly/stable。

处理消息期间唯一的堆分配是在访问层分配消息的内存。大多数网状PDU小于31字节(以适应单个BLE广告),因此网络和底层传输层将数据静态存储在堆栈上。上层PDU及以上允许在堆栈之外进行分配(上层传输PDU最多可达380字节!)但可以为PDU提供一个通用的自定义分配器/存储。

示例

请参见Mesh CLI以获取应用程序示例。

堆栈的工作方式

The flowchart of the full mesh stack

依赖项

~2–3.5MB
~64K SLoC