自己学习的笔记,如有不正确的地方,望各读者指出,谢谢。

在provision过程中,如果发送方在发送完第一条消息之后,30秒内没有收到一个交易应答消息,那么这个发送方就必须取消交互,取消provisioning的进程,并关闭链路。如果是分段消息,则在接收完所有的段后,接收方验证FCS无误后要给发送方发送一个交易应答PDU。

Provisioning由五个步骤来完成:beaconing,邀请,交换公共密钥,认证,分发provisioning数据。

当provisioner确认一个设备可以被provision后,就发送一个Provisioning Start PDU出去。Provisioner只能从新设备的Provisioning Capability PDU里提供的算法中选择一个算法来使用。

PB-ADV PDU格式:

Field

Size(octets)

Description

Link ID

4

一个链接ID

Transaction Number

1

用来识别不同交互的号码

Generic Provisioning PDU

1 - 24

将要被传送的Generic Provisioning PDU

Transaction Start PDU 的GenericProvisioning Control Field

Field

Size(bits)

Description

SegN

6

最后一个分段消息段号

GPCF

2

0b00 = Transaction Start

TotalLength

16

Provisioning PDU的字节数

FCS

8

Provisioning PDU的帧检查

Provisioning PDU格式

Field

Size(bits)

Description

Padding

2

0b00.不能为其它值

Type

6

Provisioning PDU类型值(具体见下面PDU类型表)

Parameters

variable

消息参数

Provisioning PDU类型

Type

Name

Description

0x00

Provisioning Invite

邀请一个设备加入mesh网络

0x01

Provisioning Capabilities

指示设备的能力

0x02

Provisioning Start

指示provisioner基于设备的能力所选择的provisioning方式

0x03

Provisioning Public Key

包含设备的或者prvisioner的Public Key

0x04

Provisioning Input Complete

指示用户已经完成值输入

0x05

Provisioning Confirmation

包含provisioner的或者设备的provisioning确认值

0x06

Provisioning Random

包含设备的或者provisioner的provisioning随机值

0x07

Provisioning Data

包括分配给主元素的unicast地址,一个网络密钥(network key),NetKey索引,标志(Flags)和IV索引

0x08

Provisioning Complete

指示provisioning完成

0x09

Provisioning Failed

指示provisioning失败

0x0A-0xFF

RFU

为将来使用保留

以发送公共密钥为例,展示provisioning时PDU的正确组合:

Provisioning Start

Public Key :2c31a47b5779809ef44cb5eaaf5c3e43d5f8faad4a8794cb987e9b03745c78dd

919512183898dfbecd52e2408e43871fd021109117bd3ed4eaf8437743715d4f

Message :  032c31a47b5779809ef44cb5eaaf5c3e43d5f8faad4a8794cb987e9b03745c78

dd919512183898dfbecd52e2408e43871fd021109117bd3ed4eaf8437743715d

4f

(此处把publickey当成provisioning PDU发送出去,所以把它组成一个PDU时,按照provisioningPDU格式的要求,在PDU最前面加上了padding和Type(如前面“Provisioning PDU格式“所示),合起来就是0x03。)

LinkID :     23af5850

Transaction : 02

Segment0 : 032c31a47b5779809ef44cb5eaaf5c3e43d5f8fa

Segment1 :  ad4a8794cb987e9b03745c78dd919512183898dfbecd52

Segment2 :  e2408e43871fd021109117bd3ed4eaf8437743715d4f

SegN :          02

PDU Length : 0041

FCS :            d1

Message0 :  23af585002080041d1032c31a47b5779809ef44cb5eaaf5c3e43d5f8fa

Message1 :  23af58500206ad4a8794cb987e9b03745c78dd919512183898dfbecd52

Message2 :  23af5850020ae2408e43871fd021109117bd3ed4eaf8437743715d4f

message0分解对应下图:


由于message0是第一分段消息,属于Transaction Start PDU,所以GPCF为0b00。所以此段第一个字节为0x08。

messag1和message2分解对应下图:

message1和message2两段PDU属Transaction Continuation PDU,所以GPCF是0b10,与相应的段号合并起来就是0x06和0x0a。每个Provisioning PDU都当成一个单独的事务来传送,一个事务可能由一个或多个段组成。段号从0 到63,段0 必须用Transaction Start PDU来发送。其它段要用Transaction Continuation PDU来发送。Provisioning PDU的每个段都被放在PB-ADV的GenericProvisioning PDU里发送。

附上两种类型PDU的格式:

bluetooth mesh provisioning PDU学习笔记相关推荐

  1. ESP32_WIFI MESH学习笔记4 MESH网WIFI桥接

    ESP32_WIFI MESH学习笔记4 MESH网与WIFI桥接 前言 在PlainlessMEH库的帮助下,我们很容易就建立了一个WIFI_MESH网络,但只是一个单一网络.本文计录使用WIFI ...

  2. ESP32 WIFI MESH学习笔记7-物联网与控制(ESP32部分)

    ESP32 WIFI MESH学习笔记 文章目录 前言 一.服务器部分 二.ESP32部分 1.引入例子 2.修改用户名称及密码 3.初始化IOT登陆信息 4.初始化 5.侦听函数 6.主函数 7.子 ...

  3. PMBOK(第六版) 学习笔记 ——《考试、成绩、PDU》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

  4. Unity学习笔记——Mesh

    Unity学习笔记--Mesh Unity中的Mesh组件是一个很好玩的东西,这次的目标是根据高程图创建出一个平面. 1.用脚本创建一个简单的三角形 新建空的物体,挂上MeshFilter.MeshR ...

  5. ESP32_WIFI Mesh学习笔记1---Ardino IDE 环境配置

    ESP_WIFI MESH学习笔记1-Ardino IDE 环境配置 文章目录 ESP_WIFI MESH学习笔记1---Ardino IDE 环境配置 前言 一.Arduino IDE配置问题 二. ...

  6. nrf52832 学习笔记(五)蓝牙主从机连接和连接参数更新

    nrf52832 学习笔记(五)蓝牙主从机连接和连接参数更新 主机连接 nrf52832 SDK中主机连接从机需要使用 sd_ble_gap_connect(ble_gap_addr_t const ...

  7. nrf52832 学习笔记(三)蓝牙从机广播

    nrf52832 学习笔记(三)蓝牙从机广播 蓝牙从机要想被主机连接,首先需要发送广播信息,周围主机通过扫描广播信号,根据从机的广播信息,判断是否连接. 蓝牙协议栈初始化 不管是主机还是从机,要想使用 ...

  8. EFR32BG22 Thunderboard Kit 学习笔记总结

    EFR32BG22 Thunderboard Kit 学习笔记总结 Thunderboard™ BG22 开发套件是Silicon Labs提供的一个小型原型平台,适用于电池供电的蓝牙应用. 上面搭载 ...

  9. nrf52832 学习笔记(七)蓝牙协议层级理解

    nrf52832 学习笔记(七)蓝牙协议层级理解 本文主要由一下几篇文档摘录汇总而成 ,如有错误欢迎斧正 da14531 蓝牙协议文档 深入浅出低功耗蓝牙(BLE)协议栈 低功耗蓝牙ATT/GATT/ ...

最新文章

  1. LeetCode刷题记录7——824. Goat Latin(easy)
  2. 清华 CVer 对自监督学习的一些思考
  3. eclipse Plugin execution not covered by lifecycle configuration:maven.***.plugin
  4. array sort - 2 : quick sort
  5. SpringCloud注册中心高可用搭建
  6. 【万字长文】创业公司就应该技术选型 Spring Cloud Alibaba , 开箱即用
  7. 标准exception类层次图
  8. drupal 使用补丁_使用Drupal解决大学需求
  9. 页面文件太小无法完成操作_PPT操作界面基础解析
  10. python函数表格_python 6.7 编写printTable()函数表格打印(完整代码)
  11. matlab三角波发生器精度改为定点型,关于matlab simulink中三角波模块的问题!
  12. java中如何生成对外的接口_Java利用Swagger2自动生成对外接口的文档
  13. html 页面加载中 请稍候,html 提示“数据在加载中,请稍后……”
  14. vecm模型怎么写系数_时变秩和时变系数VECM模型与“费雪效应”机制检验
  15. Educational Codeforces Round 118 (Rated for Div. 2)
  16. esp8266WIFI模块教程:正点原子ATK-ESP8266进行网络通信,单片机与电脑,单片机与手机发送数据
  17. 上海电信光猫超级管理员密码后门
  18. ps抠头发丝详细教程,去除人像中的杂乱头发
  19. php三D立体模拟,CSS3使用3D环境实现立体魔方效果的实例代码分享
  20. linux怎么创建牡蛎_牡蛎的意思

热门文章

  1. 电梯媒体吵架再升级,江南春张继学隔空喊话!
  2. 《炬丰科技-半导体工艺》硅片超声清洗方法及配置
  3. Digicert SSL证书与Symantec SSL证书的对照
  4. 向“微软”宣战?Salesforce将以277亿美元并购Slack
  5. rstudio拉格朗日插值法_拉格朗日插值法学习笔记
  6. 用PageOffice实现最简单的在线打开保存PPT文件
  7. 洛谷P3961 图的遍历
  8. 《Android游戏编程之从零开始(配光盘)》
  9. 首页创业 不想一直做普工,去学这5个技术,好找工作,赚钱也容易点
  10. itext word模板替换_【极简Python 自动化办公】Python写入Word文档