事件断点续传

更新时间:2025-07-11 06:41:25下载pdf

功能说明

在设备上报事件过程中,可能会出现网络异常等情况,导致事件上报失败的问题。为尽可能解决此类问题,新的版本(v3.10.12)中增加了断点续传功能。

功能原理

续传功能的核心原理是通过监控事件上传流程、获取事件的上报状态,在上报出现异常时,录入到续传模块。在网络正常时,逐个找到这些失败的记录,并尝试上传,直至上传成功。在续传成功后删除记录。

  • 因需要记录数据,开启此功能后需要占用额外的存储空间(TF 卡等),占用大小与实际上传失败的事件的数量正相关。
  • 此功能保存的数据只有在同一设备下才可以正常使用。

开发指导

头文件

tuya_ipc_breakpoint_resume.h

API 说明

  • 初始化

    typedef struct {
        INT_T breakpoint_resume_enable;                         ///< 1: breakpoint resume enable
        INT_T pic_event_enable;                                 ///< 1: pic & event resume enable
        CHAR_T folder_path[BREAKPOINT_RESUME_BASE_PATH_LEN];    ///< Node of storage card is mounted
        FLOAT_T max_record_hours;                               ///< Maximum record hours for breakpoint events(0:default 12 hours)
        INT_T data_file_need_backup;                            ///< Whether to enable a backup policy
        UINT_T max_record_num;                                  ///< max number of offline records(0:default 4000 records)
        INT_T enable_intelli_resume;                            ///< According to the upload network status intelligent control of upload
        UINT_T max_time_for_upload_to_cloud;                    ///< max time for upload single video to cloud(0:default 10 seconds)
        BREAKPOINT_RESUME_UPLOAD_SPEED_CTRL_E speed_control_upload_enable;     ///< Speed control upload
        BREAKPOINT_RESUME_CHECK_UPLOAD_CONDITIONS_CB check_upload_cb;          ///< Check whether the start conditions for uploading data are met; 0:ok/other:not ok
        BREAKPOINT_RESUME_IS_NETWORK_NORMAL_CB network_normal_cb;              ///< whether network status is normal; 0:ok/other:not ok
        BREAKPOINT_RESUME_UPLOAD_CLOUD_DATA_CB cloud_data_upload_cb;           ///< Upload cloud storage
        BREAKPOINT_RESUME_GET_OTHER_CLIENT_USER_NUM_CB get_other_client_num_cb;
    } TUYA_IPC_BREAKPOINT_RESUME_T;
    
    /**
    * \brief initialize tuya ipc breakpoint resume
    * \param[in] pbreakpoint_resume_var: init para
    * \return OPERATE_RET
    */
    OPERATE_RET tuya_ipc_breakpoint_resume_init(IN TUYA_IPC_BREAKPOINT_RESUME_T *pbreakpoint_resume_var);
    
    参数 说明
    breakpoint_resume_enable 模块整体使能
    pic_event_enable 使能事件 & 图片的续传
    folder_path 续传数据表存储路径
    max_record_hours 此为预留参数,后续版本开放设置
    data_file_need_backup 是否使能续传表的备份功能,使能后会额外提升 CPU 占用率;默认可不使能
    max_record_num 最大记录续传数据的数量
    enable_intelli_resume 使能智能续传模式;根据当前上传情况,自动控制上传速率;默认可不使能
    max_time_for_upload_to_cloud 单条上传时长;在 enable_intelli_resume 使能后,上传数据超过此限制时,会被判断为网络异常,自动暂停上传
    speed_control_upload_enable 使能后,在上传时期,会根据是否有其他拉流或者上传任务,自动暂停上传
    check_upload_cb 该回调检查当前是否能执行续传任务
    network_normal_cb 网络状态获取回调(较重要,建议开发者实现)
    cloud_data_upload_cb 云存录像上传回调;暂时可不实现
    get_other_client_num_cb 获取其他拉流任务数量的回调(如:RTSP 等),需要开发者自行决定是否实现

    初始化后使能后,SDK 内部自动监控并添加离线记录,外部无需感知记录添加流程。

  • 反初始化

    /**
    * \brief uinit tuya ipc breakpoint resume
    * \return OPERATE_RET
    */
    OPERATE_RET tuya_ipc_breakpoint_resume_uninit();
    
  • 暂停续传

    /**
    * @brief suspen breakpoint resume service
    * 
    * @param
    * @return OPRT_OK on success. Others on error
    */
    OPERATE_RET tuya_ipc_breakpoint_resume_suspend();
    

    此功能可用于在格式化或低功耗休眠等场景,会暂停续传模块的所有任务,并将缓存数据快速写入到存储器中。

  • 恢复续传

    /**
    * @brief recovery breakpoint resume service
    * 
    * @param
    * @return OPRT_OK on success. Others on error
    */
    OPERATE_RET tuya_ipc_breakpoint_resume_recovery();
    

    需与 tuya_ipc_breakpoint_resume_suspend 搭配使用。

注意事项

  • 此功能是在设备遇到网络异常、上传事件失败时的补救措施,网络恢复正常后会尽最大能力上传至云端;如设备长期处于网络异常状态时,仍然会影响整体的体验。
  • 功能开启后,会略微增加存储卡的读写压力。
  • 此功能同样受制于存储器的状态。如出现存储卡异常等情况,数据的完整性将无法保证。

FAQ

如果断点数据超过设置数量,会导致什么问题?

断点记录数量超过后,会覆盖最旧的数据记录。