Vendor Model的使用

转载于: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()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值