实时地图与路径传输

更新时间:2024-12-06 09:18:52下载pdf

基于 TuyaOS SDK,本文详细介绍激光扫地机的实时地图与路径传输的业务流程及 API 接口。

业务介绍

目前,实时地图与路径传输业务支持 2 种文件操作:

  • 下载扫地机地图
  • 取消下载扫地机地图

对于激光扫地机的地图,支持 2 种固定的文件:

  • 全量地图
  • 清扫路径图

对于激光扫地机的地图,还支持自定义文件,例如 AI 识别文件 ai.bin.stream

自定义文件一般在面板定制的产品中使用,命名规则需与面板端对齐。

流程说明

主业务流程

应用TuyaOS SDKSTUN 服务器涂鸦 App判断会话数量是否超过-限制,超过则关闭会话发送鉴权信息鉴权,若失败,则关闭-会话查询设备支持的文件名返回查询结果下发下载事件返回已接收到下载命令回调下载事件调用发送数据接口发送地图与路径文件数据取消下载地图文件回调取消下载事件返回文件传输停止返回取消下载结果应用TuyaOS SDKSTUN 服务器涂鸦 App

扫地机实时地图及路径下载

涂鸦 AppTuyaOS SDK应用下发文件下载事件返回已接收到下载命令异步数据发送,根据回-调中不同的会话ID,循序发送到不同的App 客户端通过 tuya_sweeper_event_cb回调,传递下载事件及会话 ID获取本地地图文件,并通过tuya_sweeper_send_map_data_w-ith_buff 异步发送地图数据发送数据获取本地路径文件,并通过tuya_sweeper_send_cleanpath_da-ta_with_buff 异步发送路径数据发送数据获取本地自定义文件,并通过tuya_sweeper_send_customize_da-ta_with_buff 异步发送自定义数据发送数据设备可以异步循环调用tuya_sweeper_p2p_alone_stream-_close 接口,主动断开与不同的App 客户端的连接通知不同的 App 客户端断开链路涂鸦 AppTuyaOS SDK应用
  • App 收到 tuya_sweeper_event_cb 下载事件和连接的会话 ID 号回调后,需要异步处理该事件,原因是实时地图及路径的传输接口都是阻塞模式上报。
  • App 需要保存会话 ID 号,异步处理事件要根据不同的会话 ID 号进行循环传输数据。
  • 如果收到多个下载事件,可周期性循序调用数据发送接口,传输数据。
  • App 可以通过 tuya_sweeper_p2p_alone_stream_close 接口,主动断开与 App 的连接会话。一般在设备或者 App 端网络出现异常,长时间发送数据失败的情况下使用,可以清除本地的发送缓存及参数,等待网络恢复后快速与 App 建立连接。
  • 如果多路出现发送数据异常,可循序调用 tuya_sweeper_p2p_alone_stream_close 接口,主动断开与 App 的连接会话。

在流媒体服务初始化时,您可以根据自己的需要设定同时支持的连接会话数量(一般建议 3~5 路为宜),默认 5 路。若超过以上限制,新建连接会被强制关闭。

取消扫地机实时地图及路径下载

涂鸦 AppTuyaOS SDK应用下发取消文件下载事件通过 tuya_sweeper_event_cb回调,传递取消下载事件及会话ID根据回调中不同的会话ID,异步循环调用tuya_sweeper_stop_send_data_to-_app,告知不同的 App客户端文件传输停止消息发送给不同的 App 客户端给不用的 App客户端返回已接收到取消下载命令涂鸦 AppTuyaOS SDK应用
  • 业务上收到 tuya_sweeper_event_cb 取消下载事件和连接的会话 ID 号回调后,需要异步处理该事件。如收到多个取消下载事件,可循序调用 tuya_sweeper_stop_send_data_to_app 接口,告知不同的 App 客户端文件传输停止。

API 接口

tuya_media_server_customize_init

/**
 * @brief  Initialize media streaming service
 * @param  [in] max_client_num   range: 0 to 5
 * @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h 
 */
OPERATE_RET tuya_media_server_customize_init(int max_client_num);

以上接口是初始化媒体流服务。

参数 说明
max_client_num 客户端数量,目前支持的最大客户端数量为 5 路

tuya_sweeper_send_map_data_with_buff

/**
 * \fn tuya_sweeper_send_map_data_with_buff
 * \brief send file to app by P2P
 * \param[in] client: client handle
 * \param[in] fileLen: file len
 * \param[in] fileBuff: file buff
 * \param[in] timeout_ms: timeout, in ms
 * @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
 */
OPERATE_RET tuya_sweeper_send_map_data_with_buff(IN INT_T client, IN INT_T fileLen, IN CHAR_T* fileBuff, IN INT_T timeout_ms);

该接口是将实时地图数据发送给 App。

参数 说明
client 数据传输通道的会话句柄,在下载地图时,从回调函数中获取
fileLen 实时地图文件的长度
fileBuff 实时地图文件的内容
timeout_ms 实时地图文件的通道超时时间

当开发者需要清空 App 端显示的地图时,调用该接口上报空地图,空地图的格式如下:
fileLen 设置为 10 字节,fileBuff 都填 0 即可。

tuya_sweeper_send_cleanpath_data_with_buff

/**
 * \fn tuya_sweeper_send_cleanpath_data_with_buff
 * \brief send file to app by P2P
 * \param[in] client: client handle
 * \param[in] fileLen: file len
 * \param[in] fileBuff: file buff
 * \param[in] timeout_ms: timeout, in ms
 * @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
 */
OPERATE_RET tuya_sweeper_send_cleanpath_data_with_buff(IN INT_T client, IN INT_T fileLen, IN CHAR_T* fileBuff, IN INT_T timeout_ms);

该接口是将实时路径数据发送给 App。

参数 说明
client 数据传输通道的会话句柄,在下载地图时,从回调函数中获取
fileLen 实时路径文件的长度
fileBuff 实时路径文件的内容
timeout_ms 实时路径文件的通道超时时间

当开发者需要清空 App 端显示的路径时,调用该接口上报空路径,空路径的格式如下:
fileLen 设置为 13 字节, fileBuff 中的路径类型填普通模式即 1 ,其余都填 0 即可。

tuya_sweeper_send_customize_data_with_buff

/**
 * \fn tuya_sweeper_send_customize_data_with_buff
 * \brief send file to app by P2P
 * \param[in] client: client handle
 * \param[in] name: file name
 * \param[in] fileLen: file len
 * \param[in] fileBuff: file buff
 * \param[in] timeout_ms: timeout, in ms
 * @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
 */
OPERATE_RET tuya_sweeper_send_customize_data_with_buff(IN INT_T client, IN CHAR_T* name , IN INT_T fileLen, IN CHAR_T* fileBuff,IN INT_T timeout_ms);

该接口是将自定义文件数据发送给 App。

参数 说明
client 数据传输通道的会话句柄,在下载地图时,从回调函数中获取
name 自定义文件名
fileLen 自定义文件的长度
fileBuff 自定义文件的内容
timeout_ms 自定义文件的通道超时时间

tuya_sweeper_set_customize_name

/**
 * \fn tuya_sweeper_set_customize_name
 * \brief send file to app by P2P
 * \param[in] name_info: file name
 * @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
 */
OPERATE_RET tuya_sweeper_set_customize_name(IN TUYA_SWEEPER_CUSTOMIZE_FILEINFO* name_info);

该接口是将自定义文件传递给 TuyaOS SDK,需要在 TuyaOS SDK 初始化之后调用。入参请参考 TUYA_SWEEPER_CUSTOMIZE_FILEINFO 结构体说明。

tuya_sweeper_stop_send_data_to_app

/**
 * \fn tuya_sweeper_stop_send_data_to_app
 * \brief send file to app by P2P
 * \param[in] client: client handle
 * \return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
 */
OPERATE_RET tuya_sweeper_stop_send_data_to_app(IN INT_T client);

该接口是设备通知 App 文件传输结束。

参数 说明
client 数据传输通道的会话句柄,在下载地图时,从回调函数中获取

tuya_sweeper_p2p_alone_stream_close

/**
 * \fn tuya_sweeper_p2p_alone_stream_close
 * \brief One link is closed on the device
 * \param[in] client: client handle
 * @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
 */
OPERATE_RET tuya_sweeper_p2p_alone_stream_close(IN INT_T client);

该接口是设备主动断开传输通道。

参数 说明
client 数据传输通道的会话句柄,在下载地图时,从回调函数中获取