转载于:https://www.yuque.com/u2144260/ydsnkg/vgp0r8

Vendor Model的使用
MESH_USER_DEFINE_MODE选择MESH_NORMAL_MODE时,
telink预留32个op code即0xC0-0xDF,客户使用32个即0xE0-0xFF。

注册vendor model请参考 vendor_model.c的 mesh_cmd_sig_func_t mesh_cmd_vd_func[]
#if 0 // DEBUG_VENDOR_CMD_EN // just for sample, default disable,
{VD_GROUP_G_SET, 0, VENDOR_MD_LIGHT_C, VENDOR_MD_LIGHT_S, cb_vd_group_g_set, VD_GROUP_G_STATUS},
{VD_GROUP_G_GET, 0, VENDOR_MD_LIGHT_C, VENDOR_MD_LIGHT_S, cb_vd_group_g_get, VD_GROUP_G_STATUS},
{VD_GROUP_G_SET_NOACK, 0, VENDOR_MD_LIGHT_C, VENDOR_MD_LIGHT_S, cb_vd_group_g_set, STATUS_NONE},
{VD_GROUP_G_STATUS, 1, VENDOR_MD_LIGHT_S, VENDOR_MD_LIGHT_C, cb_vd_group_g_status, STATUS_NONE},
#endif
typedef struct{
u16 op;
u16 status_cmd; // receive status message even though there is not server model // u16 for align
u32 model_id_tx;
u32 model_id_rx;
cb_cmd_sig2_t cb;
u32 op_rsp; // -1 for no rsp and ensure 4BYTE align
}mesh_cmd_sig_func_t;
op:新增的op code
status cmd:标志位,表明该op code是某一acknowledge request command的status command
model_id_tx:发送命令时的model id
model_id_rx:接收命令时的model id,若节点的composition data没有相对应的model id,会自动忽略命令
cb:接收到命令时调用的回调函数
op_rsp:标志位,需要status回复则为对应的status command,否则为STATUS_NONE

增加acknowledge command(即request command with status response):
例子:添加VD_LIGHT_ONOFF_SET
1)在mesh_cmd_vd_func[]中添加
{VD_LIGHT_ONOFF_SET,0,VENDOR_MD_LIGHT_C,VENDOR_MD_LIGHT_S,
&cb_vd_light_onoff_set,VD_LIGHT_ONOFF_STATUS}
2)该命令需要TID,需要在is_cmd_with_tid_vendor()添加对应分支
TID主要用于避免命令的重复执行
3)编写cb_vd_light_onoff_set(),调用light_onoff_idx()执行开关灯
4)由于该命令需要ack回复,所以编写vd_light_onoff_st_rsp()并且调用在里面调用mesh_tx_cmd(VD_LIGHT_ONOFF_STATUS,。。。)
5)封装发送VD_LIGHT_ONOFF_SET的命令接口vd_cmd_onoff()

增加unacknowledge command
1)mesh_cmd_vd_func[]中添加
{VD_LIGHT_ONOFF_SET_NOACK,0,VENDOR_MD_LIGHT_C,VENDOR_MD_LIGHT_S,
&cb_vd_light_onoff_set,STATUS_NONE}
2)添加TID
3)编写cb_vd_light_onoff_set()与VD_LIGHT_ONOFF_SET共用
4)不需要ack
5)封装发送VD_LIGHT_ONOFF_SET命令的接口vd_cmd_onoff()

Vendor Model的使用相关推荐

  1. Sig Mesh第一课:基于Generic OnOff Model的Mesh点灯应用

    前言 该文字教程主要是讲解如何通过Nordic官方的Mesh SDK包,创建一个标准的Generic OnOff模型.目前网络上对于关于SIG MESH相关的实战文字教程很少,截至目前小编写这篇文章时 ...

  2. Ble Mesh的Generic Model IDOpcode

    MODEL ID 标准的为16为,自定义的Vendor Model ID为32位 Model Group Model Name SIG Model ID Generic Generic OnOff S ...

  3. l-lsblk查看设备可用块设备

    lsblk命令(列出块设备)用于列出所有可用的块设备的信息,但是, 它并没有列出有关的RAM磁盘的信息.块设备的例子是硬盘,闪存驱动器,CD-ROM等等,一般可以和blkid命令搭配,blkid可以查 ...

  4. PHP PSR-1 基本代码规范(中文版)

    基本代码规范 本篇规范制定了代码基本元素的相关标准, 以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 "必须"("MUST")."一定不可 ...

  5. 在LVM中恢复已删除的物理卷

    本文中将详细介绍如何从已删除的物理卷或故障磁盘场景中恢复. 系统环境 Centos8 现有的文件系统 下面使用了/dev/sd[a-c]三块磁盘,将他们划入一个卷组,创建两个逻辑卷: # Create ...

  6. zabbix文档3.4-7配置

    zabbix文档3.4-7配置 1 主机和主机组 典型的Zabbix主机是您希望监视的设备(服务器,工作站,交换机等). 创建主机是Zabbix中首个监控任务之一.例如,如果要监视服务器"x ...

  7. PHP 的一些开发规范

    长篇慎入 分以下几点说明 一些编码的经验 PSR-1 PSR-2 PSR-3 PSR-4 一些编码的经验 变量命名 不用拼音 驼峰或下划线风格要一致 单词要有意义 不用关键字 常量全大写用下划线连接 ...

  8. 拿来主义——老外写的系统统计脚本

    附件里下载该脚本. [root@TestSizeServer ~]# ./system_summary # Aspersa System Summary Report ################ ...

  9. php代码规范的书籍,php基本代码规范——PSR-1

    基本代码规范 本节我们将会讨论一些基本的代码规范问题,以此作为将来讨论更高级别的代码分享和技术互用的基础. RFC 2119中的必须(MUST),不可(MUST NOT),建议(SHOULD),不建议 ...

  10. 思科UCS服务器怎么安装系统,安装Redhat/CentOS操作系统在UCS M系列服务器

    简介 本文描述如何安装Redhat企业Linux (RHEL)或在思科统一计算系统(UCS)使用局部存储器, M系列服务器的CentOS Linux. Cisco 建议您了解以下主题: Cisco U ...

最新文章

  1. VLC SDK在VS2010中的配置及简单使用举例
  2. 【总结整理】数据可视化
  3. Filter若不写chain.doFilter(request,response)原Servlet路径代码不会被执行
  4. 基于Flask开发企业级REST API应用(一)
  5. 【script】lambda的使用
  6. 什么叫内部银团_MOS管和IGBT管有什么区别?
  7. boot jndi数据源 spring_使用Spring Boot配置JNDI数据源 -Roy教程
  8. 萌新的Python练习菜鸟100例(十八)一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
  9. 今日恐慌与贪婪指数为72 贪婪程度有所缓解
  10. maven 项目 missing jdk.tools.jar
  11. GridView网格控件
  12. 关于python提交spark以及在spark环境中使用本地包的方法--针对于集群无法在线下包以及python版本和spark绑定的问题解决
  13. 【数据库】SQL建表
  14. android系统签名及修改
  15. 一阶惯性加纯滞后模型matlab代码,基于西门子工业软件的仿真系统设计-一阶惯性加纯滞后对象 - 百度(精)...
  16. Spring Bean生命周期
  17. 控制物体沿椭圆轨迹运动
  18. android 玩pc游戏,如何在您的Android设备上玩经典PC游戏 | MOS86
  19. U盘如何使用量产工具格式化
  20. 团队作业——团队项目Alpha版本发布

热门文章

  1. 要装系统就装WINDOWSXPSP3VL正式版操作系统
  2. C++核心编程-5 文件操作
  3. 最网最全python框架--scrapy(体系学习,爬取全站校花图片),学完显著提高爬虫能力(附源代码),突破各种反爬
  4. 网卡配置里NM_CONTROLLED的意思
  5. MySQL工作有多努力--了解MySQL Threads Running
  6. 关于黑客,你了解多少?----黑客入门学习(常用术语+DOS操作)
  7. 开源运维管理平台(ows) damo版本源码发布
  8. windows7 内部版本7601 此windows副本不是正版 ---解决方案
  9. torch.Longtensor是什么?和torch.Tensor有什么区别?
  10. 金融企业如何构建有效的数据分析体系?1000+案例经验汇总