设备控制

设备指令下发链路图

说明

  1. 如上图为TuyaApp处于打开情况下,

设备指令下发回调

dp下发数据结构说明(obj类型)

数据结构 成员 说明
TY_RECV_OBJ_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, 为网关或soc设备dp下发;
cid != NULL,为子设备dp,cid为子设备id;
mb_id 群组ID
dps_cnt 下发的dp值数量
dps dp值缓存首地址,为TY_OBJ_DP_S数据结构

dp值数据结构说明 见头文件 tuya_cloud_com_defs.h TY_OBJ_DP_S数据结构

__soc_dev_obj_dp_cmd_cb

/***********************************************************
 * @Function:__soc_dev_obj_dp_cmd_cb
 * @Desc:   dp指令下发入口(obj类型)
 * @Param:  dp,    dp下发数据结构 缓存首地址
 * @Return: OPRT_OK: success  Other: fail
***********************************************************/
VOID __soc_dev_obj_dp_cmd_cb(IN CONST TY_RECV_OBJ_DP_S *dp)
{
    PR_DEBUG("SOC Rev DP Obj Cmd t1:%d t2:%d CNT:%u", dp->cmd_tp, dp->dtt_tp, dp->dps_cnt);
    if(dp->cid != NULL) PR_ERR("soc not have cid.%s", dp->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, 为网关或soc设备dp下发;
cid != NULL,为子设备dp,cid为子设备id;
dp_id 功能点编号
mb_id 群组ID
len 下发的raw数据长度
data raw数据缓存首地址

__soc_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 __soc_dev_raw_dp_cmd_cb(IN CONST TY_RECV_RAW_DP_S *dp)
{
    PR_NOTICE("SOC Rev DP Raw Cmd t1:%d t2:%d dpid:%d len:%u", dp->cmd_tp, dp->dtt_tp, dp->dpid, dp->len);
    if(dp->cid != NULL) PR_ERR("soc not have cid.%s", dp->cid);

    //User TODO

    //用户处理完成之后需要主动上报最新状态,这里简单起见,直接返回收到的数据,认为处理全部成功。
    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);
    }
}

results matching ""

    No results matching ""