dp指令下发
dp下发数据结构说明(obj类型)
数据结构 | 成员 | 说明 |
TY_RECV_OBJ_DP_S | cmd_tp | 指令类型 [√] 0-DP_CMD_LAN, 局域网控制 [√] 1-DP_CMD_MQ, 云端指令 [√] 2-DP_CMD_TIMER, 设备定时 [√] 3-DP_CMD_SCENE_LINKAGE, 场景联动 [√] 4-DP_CMD_RELIABLE_TRANSFER, |
dtt_tp | / | |
cid |
cid = NULL, 为网关dp下发; cid != NULL,为子设备dp,cid为子设备id; |
|
mb_id | 群组ID | |
dps_cnt | 下发的dp值数量 | |
dps | dp值缓存首地址 |
dp值数据结构说明 见头文件 tuya_cloud_com_defs.h TY_OBJ_DP_S数据结构
__gw_dev_obj_dp_cmd_cb
/***********************************************************
* @Function:__gw_dev_obj_dp_cmd_cb
* @Desc: dp指令下发入口(obj类型)
* @Param: dp, dp下发数据结构 缓存首地址
* @Return: OPRT_OK: success Other: fail
***********************************************************/
VOID __gw_dev_obj_dp_cmd_cb(IN CONST TY_RECV_OBJ_DP_S *dp)
{
PR_DEBUG("Rev DP Obj Cmd t1:%d t2:%d CNT:%u Cid:%s", dp->cmd_tp, dp->dtt_tp, dp->dps_cnt, dp->cid);
if(dp->cid == NULL){
// UserTODO, 网关的dp指令下发
}
else{
// UserTODO, 子设备的dp指令下发
// sub_device_id = cid;
}
// 用户处理完成之后需要主动上报最新状态,这里简单起见,直接返回收到的数据,认为处理全部成功。
OPERATE_RET op_ret = dev_report_dp_json_async(dp->cid,dp->dps,dp->dps_cnt);
if(OPRT_OK != op_ret) {
PR_ERR("dev_report_dp_json_async op_ret:%d",op_ret);
}
}
dp下发数据结构说明(raw类型)
数据结构 | 成员 | 说明 |
TY_RECV_RAW_DP_S | cmd_tp | 指令类型 [√] DP_CMD_LAN, 局域网控制 [√] DP_CMD_MQ, 云端指令 [√] DP_CMD_TIMER, 设备定时 [√] DP_CMD_SCENE_LINKAGE, 场景联动 [√] DP_CMD_RELIABLE_TRANSFER, |
dtt_tp | / | |
cid |
cid = NULL, 为网关dp下发; cid != NULL,为子设备dp,cid为子设备id; |
|
dp_id | 功能点编号 | |
mb_id | 群组ID | |
len | 下发的raw数据长度 | |
data | raw数据缓存首地址 |
__gw_dev_raw_dp_cmd_cb
/***********************************************************
* @Function:__gw_dev_raw_dp_cmd_cb
* @Desc: dp指令下发入口(raw类型)
* @Param: dp, dp下发数据结构 缓存首地址
* @Return: OPRT_OK: success Other: fail
***********************************************************/
VOID __gw_dev_raw_dp_cmd_cb(IN CONST TY_RECV_RAW_DP_S *dp)
{
PR_DEBUG("SOC Rev DP Raw Cmd t1:%d t2:%d dpid:%d len:%u Cid:%s", dp->cmd_tp, dp->dtt_tp, dp->dpid, dp->len, dp->cid);
if(dp->cid == NULL){
// UserTODO, 网关的dp指令下发
}
else{
// UserTODO, 子设备的dp指令下发
// sub_device_id = cid;
}
// UserTODO
// 用户处理完成之后需要主动上报最新状态,这里简单起见,直接返回收到的数据,认为处理全部成功。
OPERATE_RET op_ret = dev_report_dp_raw_sync(dp->cid,dp->dpid,dp->data,dp->len,0);
if(OPRT_OK != op_ret) {
PR_ERR("dev_report_dp_json_async op_ret:%d",op_ret);
}
}