1.从错误码可以看出 你这个属于入参错误。错误码的定义在tuya_error_code.h
2.根据你提供的代码截图也可看得出,raw型dp上报接口框起来的入参应该是指针,目前是值传。
3.tuya_upload_alloc_space / tuya_upload_dp_enum_frame /tuya_upload_delete_space 这三个接口不是SDK提供的,是应用上自己封装的,仅用于obj类型的dp 组合上报。raw型dp上报无需调用。
1.从错误码可以看出 你这个属于入参错误。错误码的定义在tuya_error_code.h
2.根据你提供的代码截图也可看得出,raw型dp上报接口框起来的入参应该是指针,目前是值传。
3.tuya_upload_alloc_space / tuya_upload_dp_enum_frame /tuya_upload_delete_space 这三个接口不是SDK提供的,是应用上自己封装的,仅用于obj类型的dp 组合上报。raw型dp上报无需调用。
不用这么复杂,构造数据准备好,直接调用dev_report_dp_raw_sync接口上报,成功就把data给释放掉。失败的话做一下异常处理。推荐使用我们最新的tuyaos版本,你需要的这些都有例程。
Code: Select all
/**
* @brief Output the received raw type data and reply to the cloud
*
* @param[in] raw_dp: received raw type data
*
* @return none
*/
VOID dp_raw_process(TY_RECV_RAW_DP_S *raw_dp)
{
OPERATE_RET rt = OPRT_OK;
TAL_PR_NOTICE("raw dp id: %s", raw_dp->dpid);
for (int i=0; i<raw_dp->len; i++) {
TAL_PR_DEBUG("0x%02x ", raw_dp->data[i]);
}
memcpy(light.power_memory, raw_dp->data, 12);
TUYA_CALL_ERR_LOG(dev_report_dp_raw_sync(raw_dp->cid, raw_dp->dpid, raw_dp->data, raw_dp->len, 0));
return;
}