【蓝牙mesh】PB-ADV-procision过程中的一种provisioning bearers(配置广播载体)

31 篇文章 3 订阅
11 篇文章 1 订阅

provisioning bearer layer实现了在provision过程中provisioning PDUs的传输。mesh协议中定义了两种provisioning bearers

  • PB_ADV
  • PB_GATT(今日不做讲)

未配网设备可以支持PB_ADV或是PB_GATT,建议在未配网设备同时实现两种bearer。provisioner至少支持一种,强烈建议provisioner支持PB-ADV。

PB-ADV

PB-ADV是一个provisioning bearer,是用来在advertising channel上使用Generic Provision PDUs来进行provision的。provision机制是基于对话(session)的。一个未配网设备一次只能支持一个对话(session),而对于provisioner则无此限制。

PB-ADV用来传输Generic Provisioning PDUs,PB-ADV bearer最大的传输单元(Maximum Transmission Unit, MTU)是24个字节。

支持PB-ADV的设备应该以占空比100%的频率扫描消息,以免丢失Generic Provision PDUs

PB-ADV PDU 消息包的格式如下:

FeildSizeDescription
Length1length of the pb-adv PDU
AD type1PB_ADV
contents可变PDB-ADV PDU

其中PB-ADV PDU格式如下:

FieldSizeDescription
LInk ID4一个link的标识符
Transaction Number1The number for identifying a transaction
Generic Provisioning PDU1-24Generic Provisioning PDU being transferred

LinkID 用来表示两个设备之间的一个连接。

Transaction Number 包含一个1-byte的值,用来表示每个Generic Provisioning PDU, 如果Generic Provisioning PDU经过了分段,则每个分片的Transaction Number 都是相同的。而且当Generic Provisioning PDU重发时,该值也是不变的。

在实现时还需要遵循以下几条规则:

  • 当PB-ADV PDU包含Provisioning Bearer Control PDU时, Transaction Number应该设置为0.
  • 当一个Provisioner通过一个打开的provision link,首次发送Provisioning PDU时,Transaction Number 的值应该从0x00开始,每发送一个Provisioning PDU该值累加。当到达0x7F时,返回的0.
  • 当未配网设备通过一个打开的provisin link首次发送PDU时,Transaction Number的值应该从0x80开始,每发送一个provisioning PDU累加1.当到达0xFF时,返回到0x80.
  • 当一个设备收到provisioning PDU时,将会根据收到包的Transaction Number值来设置该值。
  • 当一个设备发送Transaction响应PDU时, Transaction Number 值应该设置为其响应的那条消息的 Transaction Number 值。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值