• [蓝牙 Mesh & Zephyr]-[004]- 基础 Model


    [蓝牙 Mesh & Zephyr]-[004]-Model

    1. 基础 Model

    规范中定义了 4 个 基础 Model,如下表:
    在这里插入图片描述
    一个 Eement 可以包含多个 Model,一个 Model 有多个 State。
    一个 State 有时候需要用多个 opcode(Message) 来维护,一般是 Set, Get, Status 分别使用一个opcode。
    Client 是用来配置 Server 的,一般使用带 “Set” 的 Message 对 Server 的 State 进行配置,用带 “Get” 的 Message 获取对应的 State 数据。
    一般 Client 发送 “xxx Set” 或者 “xxx Get” Message 给 Server 后,Server 会发送一个带 “Status” 的 Message 给 Client。

    1. Configuration Server model(0x0000)

    在这里插入图片描述
    由上表可知,Mesh 中的 Configuration Server 有很多个 State,其中 GATT Proxy 又包含了一个子 “Configuration Server”,并且只有一个 State(Node Identity)。

    2. Configuration Client model(0x0001)

    用于配置 Configuration Server model 中的State,或者获取 State 内容。

    3. Health Server model(0x0002)

    在这里插入图片描述
    Health Server model 只有4个State。

    4. Health Client model(0x0003)

    用于配置 Health Server model 中的State,或者获取 State 内容。

    5. Alphabetical summary of opcodes

    Message NameOpcode
    Config AppKey Add0x00
    Config AppKey Delete0x80 0x00
    Config AppKey Get0x80 0x01
    Config AppKey List0x80 0x02
    Config AppKey Status0x80 0x03
    Config AppKey Update0x01
    Config Beacon Get0x80 0x09
    Config Beacon Set0x80 0x0A
    Config Beacon Status0x80 0x0B
    Config Composition Data Get0x80 0x08
    Config Composition Data Status0x02
    Config Config Model Publication Set0x03
    Config Default TTL Get0x80 0x0C
    Config Default TTL Set0x80 0x0D
    Config Default TTL Status0x80 0x0E
    Config Friend Get0x80 0x0F
    Config Friend Set0x80 0x10
    Config Friend Status0x80 0x11
    Config GATT Proxy Get0x80 0x12
    Config GATT Proxy Set0x80 0x13
    Config GATT Proxy Status0x80 0x14
    Config Heartbeat Publication Get0x80 0x38
    Config Heartbeat Publication Set0x80 0x39
    Config Heartbeat Publication Status0x06
    Config Heartbeat Subscription Get0x80 0x3A
    Config Heartbeat Subscription Set0x80 0x3B
    Config Heartbeat Subscription Status0x80 0x3C
    Config Key Refresh Phase Get0x80 0x15
    Config Key Refresh Phase Set0x80 0x16
    Config Key Refresh Phase Status0x80 0x17
    Config Low Power Node PollTimeout Get0x80 0x2D
    Config Low Power Node PollTimeout Status0x80 0x2E
    Config Model App Bind0x80 0x3D
    Config Model App Status0x80 0x3E
    Config Model App Unbind0x80 0x3F
    Config Model Publication Get0x80 0x18
    Config Model Publication Status0x80 0x19
    Config Model Publication Virtual Address Set0x80 0x1A
    Config Model Subscription Add0x80 0x1B
    Config Model Subscription Delete0x80 0x1C
    Config Model Subscription Delete All0x80 0x1D
    Config Model Subscription Overwrite0x80 0x1E
    Config Model Subscription Status0x80 0x1F
    Config Model Subscription Virtual Address Add0x80 0x20
    Config Model Subscription Virtual Address Delete0x80 0x21
    Config Model Subscription Virtual Address Overwrite0x80 0x22
    Config NetKey Add0x80 0x40
    Config NetKey Delete0x80 0x41
    Config NetKey Get0x80 0x42
    Config NetKey List0x80 0x43
    Config NetKey Status0x80 0x44
    Config NetKey Update0x80 0x45
    Config Network Transmit Get0x80 0x23
    Config Network Transmit Set0x80 0x24
    Config Network Transmit Status0x80 0x25
    Config Node Identity Get0x80 0x46
    Config Node Identity Set0x80 0x47
    Config Node Identity Status0x80 0x48
    Config Node Reset0x80 0x49
    Config Node Reset Status0x80 0x4A
    Config Relay Get0x80 0x26
    Config Relay Set0x80 0x27
    Config Relay Status0x80 0x28
    Config SIG Model App Get0x80 0x4B
    Config SIG Model App List0x80 0x4C
    Config SIG Model Subscription Get0x80 0x29
    Config SIG Model Subscription List0x80 0x2A
    Config Vendor Model App Get0x80 0x4D
    Config Vendor Model App List0x80 0x4E
    Config Vendor Model Subscription Get0x80 0x2B
    Config Vendor Model Subscription List0x80 0x2C
    Health Attention Get0x80 0x04
    Health Attention Set0x80 0x05
    Health Attention Set Unacknowledged0x80 0x06
    Health Attention Status0x80 0x07
    Health Current Status0x04
    Health Fault Clear0x80 0x2F
    Health Fault Clear Unacknowledged0x80 0x30
    Health Fault Get0x80 0x31
    Health Fault Status0x05
    Health Fault Test0x80 0x32
    Health Fault Test Unacknowledged0x80 0x33
    Health Period Get0x80 0x34
    Health Period Set0x80 0x35
    Health Period Set Unacknowledged0x80 0x36
    Health Period Status0x80 0x37

    6. Opcode

    Opcode 分为 1, 2, 3 字节,如下表:

    Opcode FormatNotes
    0xxxxxxx (excluding 01111111)1-otect Opcode
    01111111Reserved for Future Use
    10xxxxxx xxxxxxxx2-otect Opcode
    11xxxxxx zzzzzzzz zzzzzzzz3-otect Opcode
    1. 1 字节的操作码是 Bluetooth SIG 定义的应用操作码(application opcodes),一共 127 个。 0x7F 保留以后扩展使用。

    2. 2 字节的操作码是 Bluetooth SIG 定义的应用操作码(application opcodes),一共 16384 个。

    3. 3 字节操作码是厂商自定义的,每个公司可以定义 64 个,使用上表中的 “x”,如果有需要,公司可以进一步使用子类操作码(在应用负载中定义?)。公司标识符是由蓝牙SIG定义的16位值,并被编码为3个八位字节操作码的第二个和第三个八位比特,使用表3.43中的“z”标识,使用第3.7.1节中定义的字节序。公司特定的操作码由与标识符关联的公司管理。
      例子:厂商指定的操作码为 0x23,公司识别码为 0x0136 [6],那么 3 字节操作码为 0xE3 0x36 0x01。

    2. 应用 Model

    每个 Model 都有唯一的识别码,Bluetooth SIG 的识别码为 16 bits (SIG Model ID),供应商的识别码为 32 bits(Vendor Model ID),SIG Model IDs 请看 4.4.5 章节。
    供应商识别码包含两个部分:16 bits Bluetooth 分配的公司识别码 [6],16bits 厂商自定义 model 识别码。格式如下表:
    在这里插入图片描述
    一个 Model 可以绑定到多个 AppKey(主账号和访客的 AppKey 可以是不一样的)。

    3. Model 例子

    在这里插入图片描述
    这是官方给出的双路插座设备 Model 模型。

    Socket numberModel
    1Health Server,Generic Power Level,Sensor Server,Configuration Server
    2Health Server,Generic Power Level,Sensor Server
  • 相关阅读:
    北大同宿舍三人毕业后分别去外企、国企、创业,10年后都后悔什么
    【mac 解决eclipse意外退出】
    51单片机STC89C52RC——2.2 独立按键控制LED亮灭Plus
    华为云发布拉美互联网战略,携手客户与伙伴迈向云原生2.0新时代
    android app 仿小米全面屏手势返回UI样式
    element plus之el-table行融合+列融合+小计行+自定义控件+样式自定义方案
    【225. 用队列实现栈】三种方法
    挂钩函数——让接口接收函数而不是类的实例
    DDD的简单落地实现
    《动手学深度学习 Pytorch版》 10.5 多头注意力
  • 原文地址:https://blog.csdn.net/qq_21352095/article/details/127831993