更新时间:2026-03-13 05:51:46下载pdf
本文主要介绍无边界割草机 SDK 的协议功能,帮忙开发者快速了解割草机 App 与设备之间的功能对接。
无边界割草机 SDK 的协议功能是完成云端下发的功能参数设置的协议解析,并将设置/查询命令及其参数通过回调接口交付业务应用。
| 功能 | 命令类型标识 |
|---|---|
| 割草任务 | IMMEDIATE_MOWING_TASK_REQUEST |
| 回充任务 | IMMEDIATE_CHARGE_TASK_REQUEST |
| 任务暂停 | IMMEDIATE_PAUSE_TASK_REQUEST |
| 遥控任务 | DEV_REMOTE_CONTROL_TASK_REQUEST |
| 订阅状态类型 | DEV_SUBSCRIBE_REQUEST |
| 矢量地图-编辑 | VECTOR_MAP_EDITING_REQUEST |
| 矢量地图-记录指令 | VECTOR_RECORD_ELEMENT_REQUEST |
| 矢量地图-删除矢量元素 | VECTOR_DELETE_ELEMENT_REQUEST |
| 矢量地图-撤销记录点 | VECTOR_UNDO_POINT_REQUEST |
| 矢量地图-开始自动采样模式 | VECTOR_SAMPLING_REQUEST |
| 获取地图详情 | VECTOR_GET_MAP_INFO_REQUEST |
| 获取割草记录 | VECTOR_GET_RECORD_INFO_REQUSET |
| 获取地图列表 | VECTOR_GET_MAP_LIST_REQUSET |
| 删除地图 | VECTOR_MAP_DELETE_REQUSET |
| 获取割草记录列表 | MOW_RECORD_INFO_LIST_REQUEST |
| 获取错误记录列表 | ERROR_RECORD_INFO_LIST_REQUEST |
| 日历定时获取完整排程列表 | SCHEDULE_QUERY_REQUEST |
| 新增排程 | SCHEDULE_CREATE_REQUEST |
| 更新排程 | SCHEDULE_UPDATE_REQUEST |
| 删除特定时间段 | SCHEDULE_DELETE_PERIOD_REQUEST |
| 启用定时 | SCHEDULE_ENABLE_REQUEST |
| 禁用定时 | SCHEDULE_DISABLE_REQUEST |
| 机器人获取配置 | CONFIGURATION_GET_REQUEST |
| 机器人设置雨天模式(预留) | CONFIGURATION_SET_RAINY_DAY_MODE_REQUEST |
| 机器人设置割草开关(预留) | CONFIGURATION_SET_CUT_SWITCH_REQUEST |
| 机器人设置手动速度(预留) | CONFIGURATION_SET_SPEED_REQUEST |
| 机器人设置基准源 | CONFIGURATION_SET_BASE_REQUEST |
| 机器人设置密码 | CONFIGURATION_SET_PASSWORD_REQUEST |
| 获取草坪任务设置 | TASK_SETTINGS_GET_REQUEST |
| 草坪任务配置 | TASK_SETTINGS_SET_REQUEST |
| 获取规划路径 | PLANNED_PATH_GET_REQUEST |
| 获取割草路径 | MOWING_PATH_GET_REQUEST |
SDK 通过注册的回调函数向应用传递命令,命令触发分为以下三种场景:
触发场景:用户在 App 面板上进行操作时触发。
| 用户操作 | 触发命令 | 触发时机 |
|---|---|---|
| 在首页点击 开始割草 | IMMEDIATE_MOWING_TASK_REQUEST |
用户确认开始后 |
| 在首页点击 回充 | IMMEDIATE_CHARGE_TASK_REQUEST |
用户确认回充后 |
| 在首页点击 暂停/继续 | IMMEDIATE_PAUSE_TASK_REQUEST |
用户点击按钮后 |
| 进入遥控页面操作方向 | DEV_REMOTE_CONTROL_TASK_REQUEST |
用户持续操作时持续下发 |
| 进入面板 | DEV_SUBSCRIBE_REQUEST |
面板主动订阅发起 |
| 进入地图编辑(开始/结束编辑态) | VECTOR_MAP_EDITING_REQUEST |
用户进入/退出编辑并确认后 |
| 记录矢量元素(例如围栏/边界等) | VECTOR_RECORD_ELEMENT_REQUEST |
用户完成绘制并确认后 |
| 删除矢量元素 | VECTOR_DELETE_ELEMENT_REQUEST |
用户选择元素并确认删除后 |
| 撤销记录点 | VECTOR_UNDO_POINT_REQUEST |
用户点击撤销后 |
| 开始自动采样模式 | VECTOR_SAMPLING_REQUEST |
用户点击开始采样后 |
| 删除地图 | VECTOR_MAP_DELETE_REQUSET |
用户确认重置地图后 |
| 新增排程 | SCHEDULE_CREATE_REQUEST |
用户保存排程后 |
| 更新排程 | SCHEDULE_UPDATE_REQUEST |
用户保存修改后 |
| 删除特定时间段 | SCHEDULE_DELETE_PERIOD_REQUEST |
用户确认删除后 |
| 启用定时 | SCHEDULE_ENABLE_REQUEST |
用户启用后 |
| 禁用定时 | SCHEDULE_DISABLE_REQUEST |
用户禁用后 |
| 设置基准源 | CONFIGURATION_SET_BASE_REQUEST |
用户保存设置后 |
| 设置密码 | CONFIGURATION_SET_PASSWORD_REQUEST |
用户保存设置后 |
| 草坪任务配置 | TASK_SETTINGS_SET_REQUEST |
用户保存任务设置后 |
处理流程:
用户操作 → App 面板 → 云端 → SDK 解析 → FUNC_SET_CB 回调 → 应用处理 → 调用 Response 接口上报结果
触发场景:用户打开 App 面板或下拉刷新时触发。
| 查询命令 | 触发时机 | 预期响应 |
|---|---|---|
VECTOR_GET_MAP_INFO_REQUEST |
进入地图详情页 | 返回指定地图详情 |
VECTOR_GET_MAP_LIST_REQUSET |
进入地图页面 | 返回地图列表摘要 |
VECTOR_GET_RECORD_INFO_REQUSET |
进入割草记录详情页 | 返回指定记录详情 |
MOW_RECORD_INFO_LIST_REQUEST |
进入割草记录列表页或下拉刷新 | 返回割草记录列表 |
ERROR_RECORD_INFO_LIST_REQUEST |
进入错误记录列表页或下拉刷新 | 返回错误记录列表 |
SCHEDULE_QUERY_REQUEST |
打开定时任务页面 | 返回完整排程列表 |
CONFIGURATION_GET_REQUEST |
打开设备配置页 | 返回当前所有配置 |
TASK_SETTINGS_GET_REQUEST |
打开草坪任务设置页 | 返回当前任务设置 |
PLANNED_PATH_GET_REQUEST |
路径预览页进入 | 返回规划路径 |
MOWING_PATH_GET_REQUEST |
路径回放页进入 | 返回割草路径 |
处理流程:
面板刷新 → 云端 → SDK 解析 → FUNC_QUERY_CB 回调 → 应用查询数据 → 调用 Response 接口上报
| 接口名称 | 接口功能 | 备注 |
|---|---|---|
| ty_rlm_immediate_mowing_task_response | 割草任务回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_immediate_charge_task_response | 回充任务回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_immediate_pause_task_response | 任务暂停回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_subscribe_response | 割草机状态订阅回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_localization_push | 定位信息推送 | 设备端有相应数据变化时应主动调用该接口进行数据上报 |
| ty_rlm_battery_push | 电池信息推送 | 设备端有相应数据变化时应主动调用该接口进行数据上报 |
| ty_rlm_task_push | 任务状态推送 | 设备端有相应数据变化时应主动调用该接口进行数据上报 |
| ty_rlm_error_push | 错误信息推送 | 设备端有相应数据变化时应主动调用该接口进行数据上报 |
| ty_rlm_plannd_path_push | 割草路径信息推送 | 设备端有相应数据变化时应主动调用该接口进行数据上报 |
| ty_rlm_edit_status_response | 矢量地图编辑状态回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_deleted_elements_response | 矢量地图删除元素回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_sampled_point_response | 矢量地图采样点回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_undo_info_response | 矢量地图撤销信息回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_record_status_response | 矢量地图记录指令回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_planned_path_response | 规划路径信息回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_mowing_path_response | 割草路径信息回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_schedule_list_timer_response | 定时列表信息回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_schedule_status_timer_response | 定时状态回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_configuration_response | 割草机配置所有信息回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_base_station_config_response | 割草机基站编号信息回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_rainy_day_config_response(预留) | 割草机雨天模式开关信息回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_cutting_switch_config_response(预留) | 割草机割草开关信息回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_manual_speed_config_response(预留) | 割草机手动速度信息回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_password_config_response | 割草机密码信息回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_task_setting_response | 割草机任务设置信息回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_map_info_response | 割草机地图信息上报 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_record_info_response | 割草机割草记录信息上报 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_log_record_list_response | 割草机割草记录列表上报 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_error_log_record_list_response | 割草机错误记录列表上报 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_map_delete_response | 割草机删除地图信息回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
| ty_rlm_map_list_response | 割草机地图列表摘要信息回复 | 该功能仅用于设置命令执行后的结果回复,面板无设置命令下发时设备无需调用该接口进行数据同步 |
命令处理回调函数的注册接口。回调函数注册成功后,SDK 在收到云端下发的命令协议并成功解析后会调用注册的回调函数执行业务功能。需要注意的是回调函数中的 param 入参变量会在回调函数被调用后释放掉,如果回调函数有异步操作,需要将该入参的参数数据复制到应用自己申请的变量空间中。
回调函数注册
/**
* @brief RLM 复杂功能命令集合
*/
typedef enum {
IMMEDIATE_MOWING_TASK_REQUEST = 0, // 割草任务
IMMEDIATE_CHARGE_TASK_REQUEST, // 回充任务
IMMEDIATE_PAUSE_TASK_REQUEST, // 暂停/恢复任务
DEV_REMOTE_CONTROL_TASK_REQUEST, // 遥控任务
DEV_SUBSCRIBE_REQUEST, // 订阅状态类型
VECTOR_MAP_EDITING_REQUEST, // 矢量地图-编辑
VECTOR_RECORD_ELEMENT_REQUEST, // 矢量地图-记录指令
VECTOR_DELETE_ELEMENT_REQUEST, // 矢量地图-删除矢量元素
VECTOR_UNDO_POINT_REQUEST, // 矢量地图-撤销记录点
VECTOR_SAMPLING_REQUEST, // 矢量地图-进入自动采样模式
VECTOR_GET_MAP_INFO_REQUEST, // 获取地图详情
VECTOR_GET_RECORD_INFO_REQUSET, // 获取割草记录详情
VECTOR_GET_MAP_LIST_REQUSET, // 获取地图列表
VECTOR_MAP_DELETE_REQUSET, // 删除地图
MOW_RECORD_INFO_LIST_REQUEST, // 获取割草记录列表
ERROR_RECORD_INFO_LIST_REQUEST, // 获取错误记录列表
SCHEDULE_QUERY_REQUEST, // 日历定时(包含获取完整定时列表)
SCHEDULE_CREATE_REQUEST, // 创建定时
SCHEDULE_UPDATE_REQUEST, // 更新定时
SCHEDULE_DELETE_PERIOD_REQUEST, // 删除指定时间段(删除 period)
SCHEDULE_ENABLE_REQUEST, // 启用定时
SCHEDULE_DISABLE_REQUEST, // 禁用定时
CONFIGURATION_GET_REQUEST, // 设备获取配置
CONFIGURATION_SET_RAINY_DAY_MODE_REQUEST, // 设置雨天模式(预留)
CONFIGURATION_SET_CUT_SWITCH_REQUEST, // 设置割草开关(预留)
CONFIGURATION_SET_SPEED_REQUEST, // 设置手动速度(预留)
CONFIGURATION_SET_BASE_REQUEST, // 设置基准源/基站
CONFIGURATION_SET_PASSWORD_REQUEST, // 设置密码
TASK_SETTINGS_GET_REQUEST, // 获取草坪任务设置
TASK_SETTINGS_SET_REQUEST, // 草坪任务配置
PLANNED_PATH_GET_REQUEST, // 获取规划路径
MOWING_PATH_GET_REQUEST, // 获取割草路径
COMPLEX_RLM_CMD_MAX,
} COMPLEX_RLM_CMD_E;
/**
* @brief lrm complex function setting callback function pointer
* @param [COMPLEX_RLM_CMD_E] cmd, protocol command, the SDK uses this parameter to notify the application of the current setting command to be processed, see the list for setting commands, all ending with SET
* @param [void *] param, parameters corresponding to the command, the application converts the param parameter into the command corresponding parameter structure based on the cmd command field, the structure correspondence can refer to the accompanying demo
*/
typedef OPERATE_RET (*FUNC_SET_CB)(IN COMPLEX_RLM_CMD_E cmd, IN void* param);
/**
* @brief rlm complex function query callback function pointer
* @param [COMPLEX_RLM_CMD_E] cmd, protocol command, the SDK uses this parameter to notify the application of the current query command to be processed, see the list for query commands, all ending with QUERY
* @param [void *] param, parameters corresponding to the command, current query command, its parameters are meaningless and do not need to be processed
* @note When the application gets the corresponding command parameters in the query callback function and needs to report, please call the corresponding response reporting function
*/
typedef OPERATE_RET (*FUNC_QUERY_CB)(IN COMPLEX_RLM_CMD_E cmd, IN void* param);
/**
* @brief Register complex capability setting and query callback functions
* @param[in] sets_handler: Command setting callback function that the application needs to implement
* @param[in] query_handler: Command query callback function that the application needs to implement
* @return OPERATE_RET: 0 success, other error codes indicate failure
*/
OPERATE_RET ty_rlm_complex_func_register(IN FUNC_SET_CB sets_handler, IN FUNC_QUERY_CB query_handler);
参数说明
| 参数 | 说明 |
|---|---|
| sets_handler | 设置命令的处理回调函数,由业务应用实现。通过该接口注册到 SDK,回调函数的 param 入参为命令参数,应用应根据命令类型将该参数转换成对应的命令参数结构体,再进行使用 |
| query_handler | 查询命令的处理回调函数,由业务应用实现。通过该接口注册到 SDK,回调函数的 param 入参当前未使用,应用无需关心 |
| OPERATE_RET | 返回值,OPRT_OK 代表执行成功,其它值代表执行失败,错误码含义参见 TuyaOS_SDK 对应头文件定义 |
上报的 API 列表
/**
* @brief 割草任务回复接口
* @param[in] task_res 割草任务结果回复
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_immediate_mowing_task_response(IN RLM_IMMEDIATE_MOWING_TASK_R* task_res);
/**
* @brief 回充任务回复接口
* @param[in] task_res 回充任务结果回复
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_immediate_charge_task_response(IN RLM_IMMEDIATE_CHARGE_TASK_R* task_res);
/**
* @brief 暂停/恢复任务回复接口
* @param[in] task_res 暂停/恢复任务结果回复
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_immediate_pause_task_response(IN RLM_IMMEDIATE_PAUSE_TASK_R* task_res);
/**
* @brief 状态订阅回复接口
* @param[in] subscribe_res 状态订阅结果回复
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_subscribe_response(IN RLM_SUBSCRIBE_STATUS_R* subscribe_res);
/**
* @brief 定位信息推送接口
* @param[in] localization 定位信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_localization_push(IN RLM_LOCALIZATION_R* localization);
/**
* @brief 电池信息推送接口
* @param[in] battery 电池信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_battery_push(IN RLM_BATTERY_DATA_R* battery);
/**
* @brief 任务信息推送接口
* @param[in] task 任务信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_task_push(IN RLM_TASK_DATA_R* task);
/**
* @brief 错误信息推送接口
* @param[in] error 错误信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_error_push(IN RLM_ERROR_DATA_R* error);
/**
* @brief 规划路径信息推送接口
* @param[in] plannd_path 规划路径信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_plannd_path_push(IN RLM_PLANNED_PATH_DATA_R* plannd_path);
/**
* @brief 矢量地图编辑状态回复接口
* @param[in] edit_status 矢量地图编辑状态
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_edit_status_response(IN RLM_EDIT_STATUS_R* edit_status);
/**
* @brief 矢量地图删除元素回复接口
* @param[in] deleted_elements 矢量地图删除元素结果
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_deleted_elements_response(IN DELETE_ELEMENT_R* deleted_elements);
/**
* @brief 矢量地图采样点回复接口
* @param[in] sampled_point 矢量地图采样点信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_sampled_point_response(IN SAMPLED_POINT_R* sampled_point);
/**
* @brief 矢量地图撤销信息回复接口
* @param[in] undo_info 撤销信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_undo_info_response(IN RLM_REMAINING_POINTS_R* undo_info);
/**
* @brief 矢量地图记录指令回复接口
* @param[in] recording_status 状态回传
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_record_status_response(IN RLM_RECORDING_CONFIG_R *recording_status);
/**
* @brief 规划路径信息回复接口
* @param[in] planned_path 规划路径信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_planned_path_response(IN RLM_PLANNED_PATH_R* planned_path);
/**
* @brief 割草路径信息回复接口
* @param[in] mowing_path 割草路径信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_mowing_path_response(IN RLM_MOWING_PATHS_R* mowing_path);
/**
* @brief 定时列表信息回复接口
* @param[in] list_timer 定时列表信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_schedule_list_timer_response(IN RLM_SCHEDULE_LIST_TIMER_R* list_timer);
/**
* @brief 定时状态回复接口
* @param[in] status_timer 定时回复信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_schedule_status_timer_response(IN RLM_SCHEDULE_STATUS_PARAM_R* status_timer);
/**
* @brief 全量配置信息回复接口
* @param[in] config 配置信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_configuration_response(IN RLM_CONFIGURATION_R* config);
/**
* @brief 基站编号回复接口
* @param[in] config 配置信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_base_station_config_response(IN RLM_BASE_STATION_CONFIG_R* config);
/**
* @brief 雨天模式回复接口
* @param[in] config 配置信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_rainy_day_config_response(IN RLM_RAINY_DAY_CONFIG_R* config);
/**
* @brief 割草开关回复接口
* @param[in] config 配置信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_cutting_switch_config_response(IN RLM_CUTTING_SWITCH_CONFIG_R* config);
/**
* @brief 手动速度回复接口
* @param[in] config 配置信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_manual_speed_config_response(IN RLM_MANUAL_SPEED_CONFIG_R* config);
/**
* @brief 密码回复接口
* @param[in] config 配置信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_password_config_response(IN RLM_PASSWORD_CONFIG_R* config);
/**
* @brief 任务设置信息回复接口
* @param[in] task_setting 任务设置信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_task_setting_response(IN RLM_TASK_SETTING_R* task_setting);
/**
* @brief 地图信息上报接口
* @param[in] info_info 地图信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_map_info_response(IN RLM_MAP_INFO_R* info_info);
/**
* @brief 割草记录信息上报接口
* @param[in] record_info 割草记录信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_record_info_response(IN RLM_RECORD_INFO_R* record_info);
/**
* @brief 割草记录列表上报接口
* @param[in] record_list 割草记录列表信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_log_record_list_response(IN RLM_MOW_RECORD_LIST_R* record_list);
/**
* @brief 错误日志记录列表上报接口
* @param[in] error_log_record_list 错误日志记录列表信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_error_log_record_list_response(IN RLM_ERROR_LOG_RECORD_LIST_R* error_log_record_list);
/**
* @brief 删除地图信息回复接口
* @param[in] map_delete 删除地图信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_map_delete_response(IN RLM_MAP_DELETE_R* map_delete);
/**
* @brief 地图列表摘要信息回复接口
* @param[in] map_list 地图摘要信息
* @return OPERATE_RET 0 表示成功,其它错误码表示失败
*/
OPERATE_RET ty_rlm_map_list_response(IN RLM_MAP_LIST_INFO_R* map_list);
/*任务状态枚举*/
typedef enum {
// 标准状态(0-99)
TASK_STATUS_UNKNOWN = 0, // 未知
TASK_STATUS_STANDBY, // 待机
TASK_STATUS_CHARGING, // 充电中
TASK_STATUS_MOWING, // 割草中
TASK_STATUS_PAUSED, // 已暂停
TASK_STATUS_RETURNING, // 回充中
TASK_STATUS_UPDATING, // 升级中
TASK_STATUS_SELF_CHECKING, // 自检中
TASK_STATUS_MAPPING, // 建图中
// 自定义状态范围(100-255)
//
// 说明:Protobuf 的 enum 本质是整数,允许接收未在枚举中定义的整数值。
// 因此设备侧可以使用 100-255 范围内的任意整数作为自定义状态。
// 即使这些值未在枚举中定义,Protobuf 仍可正常解析。
//
// 使用规则:
// - 100-255 范围保留给设备侧自定义使用
// - 设备可按需定义这些状态的具体含义
// - 建议在设备文档中记录每个自定义状态值的含义
//
// 示例(只在设备文档中记录,不要修改本文件):
// 101 = 设备初始化
// 102 = 等待用户确认
// 103 = 传感器校准
// 104 = 网络连接中
// ...
TASK_STATUS_CUSTOM_START = 100, // 自定义状态起始值标记(约定范围:100-255)
TASK_STATUS_CUSTOM_END = 255, // 自定义状态结束值标记
} TASK_STATUS_E;
// 割草模式
typedef enum {
MODE_GLOBAL_MOWING = 0, // 全局割草
MODE_AREA_MOWING, // 区域割草
MODE_EDGE_MOWING, // 沿边割草
MODE_REMOTE_MOWING, // 遥控割草
} OPERATION_MOW_MODE_E;
/**
* @brief 割草记录的结束原因
*/
typedef enum {
MOWING_RESULT_OK = 0, // 正常结束
MOWING_RESULT_MANUAL_STOP, // 手动停止
MOWING_RESULT_LOW_BATTERY, // 低电量
MOWING_RESULT_RAIN_DETECTED, // 检测到雨水
MOWING_RESULT_OBSTACLE_BLOCKED, // 障碍物卡住
MOWING_RESULT_SYSTEM_ERROR, // 系统错误
MOWING_RESULT_SCHEDULED_RETURN, // 定时回充
MOWING_RESULT_MAX
} MOWING_RESULT_E;
// 地图编辑状态
typedef enum {
START_EDITING = 0, // 开始编辑
EXIT_EDITING, // 退出编辑
CANCEL_EDITING, // 取消编辑
} MAP_EDIT_STATUS_E;
/*地图元素类型*/
typedef enum {
ELEMENT_UNKNOWN = 0,
ELEMENT_BOUNDARY, // 工作区域边界
ELEMENT_OBSTACLE, // 障碍物
ELEMENT_CHARGING_PATH, // 回充路径
ELEMENT_TRANSFER_PATH, // 转场路径
} ELEMENT_TYPE_E;
// 记录工作状态
typedef enum {
START_RECORDING_STATUS = 0, // 开始记录
STOP_RECORDING_STATUS, // 停止记录
} MAP_RECORDING_WORK_STATUS_E;
// 记录模式
typedef enum {
MANUAL_SAMPLING = 0, // 手动记录点模式
AUTO_SAMPLING, // 自动采样模式
VISUAL_SAMPLING, // 视觉采样模式
} RECORD_MODE_E;
// 采样模式
typedef enum {
START_AUTO_SAMPLING = 0, // 开始自动采样
STOP_AUTO_SAMPLING, // 停止自动采样
MANUAL_SAMPLE_POINT, // 手动触发采样一个点
} MAP_SAMPLE_MODE_E;
// 撤销模式
typedef enum {
START_START_AUTO_UNDO = 0, // 开始自动撤销
STOP_START_AUTO_UNDO, // 停止自动撤销
LAST_POINT_UNDO, // 撤销上一个记录点
} MAP_UNDO_MODE_E;
/*路径类型*/
typedef enum {
PATH_TYPE_UNKNOWN = 0, // 未知
PATH_TYPE_STRAIGHT, // 直线
PATH_TYPE_CURVED, // 曲线
PATH_TYPE_SPIRAL, // 螺旋
} PATH_TYPE_E;
// 路径模式
typedef enum {
PATH_PATTERN_UNKNOWN = 0, // 未知模式
PATH_PATTERN_PARALLEL, // 平行模式
PATH_PATTERN_SPIRAL, // 螺旋模式
PATH_PATTERN_RANDOM // 随机模式
} PATH_PATTERN_E;
/*设备配置请求工作模式*/
typedef enum {
CONFIG_UNKNOWN = 0, // 未知类型:GET 时传该值,设备需返回全部配置
BASE_STATION, // 基准源/基站设置
RAINY_DAY_MODE, // 雨天模式设置
MANUAL_SPEED, // 手动速度设置
CUTTING_SWITCH, // 割草开关设置
PASSWORD, // 密码设置
} ROBOT_CONFIG_MODE_E;
// 手动速度
typedef enum {
SPEED_SLOW = 0, // 慢速
SPEED_NORMAL, // 正常
SPEED_QUICK, // 快速
} MANUAL_SPEED_E;
// 作业模式
typedef enum {
MODE_UNKNOWN = 0, // 未知模式
MODE_ECONOMY, // 经济模式
MODE_STANDARD, // 日常模式
MODE_INTENSIVE, // 强化模式
} TASK_SET_MODE_E;
// 星期枚举
typedef enum {
MONDAY = 0, // 星期一
TUESDAY, // 星期二
WEDNESDAY, // 星期三
THURSDAY, // 星期四
FRIDAY, // 星期五
SATURDAY, // 星期六
SUNDAY, // 星期日
ST_MAX_DAY, // 最大天数
} DAYOFWEEK_E;
/*日历操作类型*/
typedef enum {
TIMER_QUERY = 0, // 查询日历
TIMER_CREATE, // 创建定时记录
TIMER_UPDATE, // 更新定时记录
TIMER_DELETE, // 删除事件
TIMER_ENABLE, // 启用时间段
TIMER_DISABLE, // 禁用时间段
} CALENDAR_OPERATION_E;
// 方向切换周期
typedef enum {
PERIOD_WEEKLY, // 按周切换
PERIOD_DAILY, // 按天切换
PERIOD_MONTHLY // 按月切换
} DIRECTION_SWITCH_PERIOD_E;
// 订阅状态类型
typedef enum {
SUBSCRIBE_UNKNOWN = 0, // 未知
SUBSCRIBE_LOCALIZATION, // 定位状态
SUBSCRIBE_BATTERY, // 电池状态
SUBSCRIBE_TASK, // 任务状态
SUBSCRIBE_PLANNED_PATH, // 规划路径状态
SUBSCRIBE_ERROR, // 错误状态
SUBSCRIBE_MAX,
} ROBOT_SUBSCRIBE_STATUS_E;
// 严重性级别
typedef enum {
LEVEL_UNKNOWN = 0, // 未知
LEVEL_INFO, // 信息
LEVEL_WARNING, // 警告
LEVEL_ERROR, // 错误
LEVEL_CRITICAL, // 严重
} SEVERITY_LEVEL_E;
// 故障类型(设备侧固定故障码定义)
typedef enum {
FAULT_NONE = 0, // 无故障
FAULT_LEFT_MOTOR_STALL = 1, // 左电机堵转
FAULT_RIGHT_MOTOR_STALL = 2, // 右电机堵转
FAULT_CUTTER_MOTOR_STALL = 3, // 刀盘电机堵转
FAULT_LEFT_MOTOR_HALL_FAULT = 4, // 左电机霍尔故障
FAULT_RIGHT_MOTOR_HALL_FAULT = 5, // 右电机霍尔故障
FAULT_MOTOR_HALL_ERROR = 6, // 刀盘电机霍尔错误
FAULT_MOTOR_COMM_FAILURE = 7, // 电机驱动通信故障
FAULT_BATTERY_DISCHARGE_FAILURE = 8, // 电池放电通信故障
FAULT_BATTERY_LOW_POWER = 9, // 电池电压低
FAULT_BATTERY_DISCHARGE_OVER_CURRENT = 10, // 电池放电过流
FAULT_BATTERY_DAMAGED = 11, // 电池异常
FAULT_BATTERY_NEED_RESET = 12, // 电池异常,需要重启
FAULT_IMU_FAILURE = 13, // IMU 故障
FAULT_TILTING = 14, // 倾斜
FAULT_OUTSIDE = 15, // 越界
FAULT_LIFT = 16, // 抬起
FAULT_TRAPPED = 17, // 困住
FAULT_OVERTURNED = 18, // 翻倒
FAULT_AI_INVALID = 19, // AI 异常
FAULT_CROSS_FAILED = 20, // 跨区失败
FAULT_MAPPING_FAILED = 21, // 建图失败
FAULT_SOC_DISCONNECT = 22, // SOC 通信异常
FAULT_RETURN_CHARGE_POLE_CONNECT = 23, // 充电连接失败
} ROBOT_FAULT_TYPE_E;
用于传递可变长度字符串,需要设置字符串长度和内容指针。
/*字符串元素*/
typedef struct {
int len; // 字符串长度
char* name; // 字符串内存指针
} RLM_STR_ELEMENT_S;
统一的错误处理结构体,所有回复接口都包含此字段用于返回操作结果。
/*错误参数返回*/
typedef struct {
// 开发者定义的错误码分类如下:
// 0-999: 成功与通用错误
// 1000-1999: 参数校验错误
// 2000-2999: 业务逻辑错误
// 3000-3999: 设备状态错误
// 4000-4999: 网络通信错误
// 5000-5999: 系统内部错误
int code; // 错误码,固定使用 ROBOT_FAULT_TYPE_E 枚举,如有扩展,可与面板商定
SEVERITY_LEVEL_E level; // 错误等级
RLM_STR_ELEMENT_S message; // 错误原因
RLM_STR_ELEMENT_S solutions;// 解决方案
bool success; // 成功标志
} DEV_ERROR_STATUS;
// 二维点坐标
typedef struct {
float x; // X 轴坐标
float y; // Y 轴坐标
} RLM_POINT2D_S;
// 三维点坐标
typedef struct {
float x; // X 轴坐标
float y; // Y 轴坐标
float z; // Z 轴坐标
} RLM_POINT3D_S;
// 四元数定义
typedef struct {
float x; // X 轴坐标
float y; // Y 轴坐标
float z; // Z 轴坐标
float w; // 角度分量
} RLM_POINT4D_S;
// 地理坐标点
typedef struct {
float latitude; // 纬度,单位:弧度
float longitude; // 经度,单位:弧度
float height; // 高度,单位:米
} RLM_GEODETICPOINT_S;
不同场景下使用不同的坐标类型,二维坐标用于平面路径,三维坐标用于地图元素,地理坐标用于 GPS 定位。
// 割草任务设置
typedef struct {
bool ctrl_switch_go; // 开始/结束控制(TRUE = 开始,FALSE = 结束)
OPERATION_MOW_MODE_E mow_mode; // 割草模式
int area_num; // 区域个数
int *area_id; // 区域 ID 数组指针
} RLM_IMMEDIATE_MOWING_TASK_S;
// 割草任务回复
typedef struct {
bool ctrl_switch_go; // 开始/结束控制
OPERATION_MOW_MODE_E mow_mode; // 割草模式
int area_num; // 区域个数
int *area_id; // 区域 ID 数组指针
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_IMMEDIATE_MOWING_TASK_R;
使用说明:
ctrl_switch_go:TRUE 表示开始割草,FALSE 表示结束割草。mow_mode,支持模式如下:
MODE_GLOBAL_MOWINGMODE_AREA_MOWINGMODE_EDGE_MOWINGMODE_REMOTE_MOWINGarea_num:区域数量。area_id:当模式为区域割草时,需指定具体区域 ID 列表。// 回充任务设置
typedef struct {
bool ctrl_switch_charge; // 开始/结束回充(TRUE = 开始,FALSE = 结束)
} RLM_IMMEDIATE_CHARGE_TASK_S;
// 回充任务回复
typedef struct {
bool ctrl_switch_charge; // 开始/结束回充
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_IMMEDIATE_CHARGE_TASK_R;
// 暂停任务设置
typedef struct {
bool ctrl_pause; // 暂停/恢复(TRUE = 暂停,FALSE = 恢复)
} RLM_IMMEDIATE_PAUSE_TASK_S;
// 暂停任务回复
typedef struct {
bool ctrl_pause; // 暂停/恢复
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_IMMEDIATE_PAUSE_TASK_R;
/*割草机即时遥控任务控制结构体*/
typedef struct {
float linear_x; // 线速度比例系数,范围 [-1, 1],实际线速度 = 该值 × 配置的遥控行走速度
float angular_z; // 角速度,范围 [-1, 1],单位:rad/s
} RLM_REMOTE_CTRL_TASK_S;
使用说明:
linear_x > 0:前进;linear_x < 0:后退angular_z > 0:左转;angular_z < 0:右转// 订阅请求
typedef struct {
int num; // 订阅类型的数量
int* Subscribe_type; // 订阅类型数组(来自 ROBOT_SUBSCRIBE_STATUS_E 枚举)
int timeout_sec; // 订阅超时时间(秒)
} RLM_SUBSCRIBE_STATUS_S;
// 订阅回复
typedef struct {
bool status; // 回复状态(TRUE = 订阅成功,FALSE = 订阅失败)
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_SUBSCRIBE_STATUS_R;
使用说明:设备在收到订阅请求后,应在 timeout_sec 时间内推送相应类型的状态数据。
/*设备最新位姿*/
typedef struct {
RLM_POINT3D_S pose; // 机器人位置
RLM_POINT4D_S orientation; // 四元数姿态
} RLM_POSE_S;
/*充电桩最新位姿*/
typedef struct {
RLM_POINT3D_S pose; // 充电桩位置
RLM_POINT4D_S orientation; // 四元数姿态
} RLM_CHARGE_POSE_S;
/*定位状态推送结构体*/
typedef struct {
RLM_GEODETICPOINT_S position; // 机器人地理位置(GPS 坐标)
RLM_POSE_S robot_pose; // 机器人最新位置(局部坐标)
RLM_CHARGE_POSE_S charge_station; // 充电桩位置
bool ready; // 定位是否就绪
bool satellite_signal_detecting; // 是否正在检测卫星信号
} RLM_LOCALIZATION_R;
使用说明:定位信息上报需要控制频率,无变化不上报,有变化亦要间隔 2 秒上报一次。
/*电池状态数据*/
typedef struct {
float voltage; // 电压,单位:伏特(V)
float current; // 电流,单位:安培(A)
int battery_level; // 剩余电量百分比(0-100)
bool is_charging; // 是否在充电状态
} RLM_BATTERY_DATA_R;
使用说明:电池电量信息应该在有变化的时候,触发主动上报。
/*任务状态推送*/
typedef struct {
// 任务基础信息
TASK_STATUS_E state; // 任务状态
int task_id; // 任务唯一 ID
// 当前活跃区域列表
int n_active_areas;
int *active_areas;
int worked_boundary_uuid; // 已完成作业的区域 ID
// 作业顺序
int n_work_sequence;
int *work_sequence;
OPERATION_MOW_MODE_E mow_mode; // 割草模式
bool cutting_switch; // 割草开关状态
int progress; // 割草进度
int maparea; // 割草面积
int total_distance; // 总里程,单位:km
int total_time; // 总时长,单位:h
} RLM_TASK_DATA_R;
/*错误状态推送*/
typedef struct {
int num; // 错误码数量
DEV_ERROR_STATUS* code_error; // 错误信息数组
} RLM_ERROR_DATA_R;
/*规划路径状态推送*/
typedef struct {
int n_path_points; // 路径点数量
RLM_POINT2D_S *path_points; // 路径点坐标数组
int current_point_index; // 当前点索引
} RLM_PLANNED_PATH_DATA_R;
/*编辑会话参数结构体*/
typedef struct {
int map_id; // 编辑的地图 ID
MAP_EDIT_STATUS_E edit_status; // 编辑状态
} RLM_EDIT_SESSION_S;
/*矢量地图编辑状态回复结构体*/
typedef struct {
MAP_EDIT_STATUS_E edit_status; // 编辑状态
bool ready_to_sample; // 是否准备好采样
bool auto_sampling_active; // 自动采样是否激活
bool is_auto_sampling_complete; // 自动采样是否完成
int point_count; // 当前记录的点数
ELEMENT_TYPE_E current_element_type;// 当前记录的元素类型
bool is_editing; // 是否正在编辑
bool is_auto_undo_active; // 自动撤销是否激活
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_EDIT_STATUS_R;
/*记录配置参数结构体*/
typedef struct {
MAP_RECORDING_WORK_STATUS_E status; // 工作状态(开始/停止)
RECORD_MODE_E mode; // 记录模式(手动/自动/视觉)
ELEMENT_TYPE_E element_type; // 地图元素类型
} RLM_RECORDING_CONFIG_S;
/*记录配置参数回复结构体*/
typedef struct {
MAP_RECORDING_WORK_STATUS_E status; // 工作状态
RECORD_MODE_E mode; // 记录模式
ELEMENT_TYPE_E element_type; // 地图元素类型
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_RECORDING_CONFIG_R;
/*自动采集配置参数结构体*/
typedef struct {
MAP_SAMPLE_MODE_E mode; // 采样模式
} RLM_SAMPLING_CONFIG_S;
/*矢量地图采样点回复结构体*/
typedef struct {
MAP_SAMPLE_MODE_E mode; // 采样模式
RLM_POINT3D_S point; // 采样的点坐标
DEV_ERROR_STATUS code_error; // 错误信息
} SAMPLED_POINT_R;
/*地图操作-撤销记录点结构体*/
typedef struct {
MAP_UNDO_MODE_E undo_mode; // 撤销模式
} MAP_UNDO_POINT_S;
/*撤销信息回复结构体*/
typedef struct {
MAP_UNDO_MODE_E undo_mode; // 撤销模式
int remaining_points; // 撤销后剩余点数
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_REMAINING_POINTS_R;
/*删除元素参数结构体*/
typedef struct {
int n_element_ids; // 元素数量
int *element_ids; // 待删除元素 ID 列表
ELEMENT_TYPE_E element_type; // 元素类型
} DELETE_ELEMENT_S;
/*删除元素参数回复结构体*/
typedef struct {
int n_area_ids; // 元素数量
int *area_ids; // 删除后的区域/元素 ID 列表
DEV_ERROR_STATUS code_error; // 错误信息
} DELETE_ELEMENT_R;
/*地图元素属性结构体*/
typedef struct {
RLM_STR_ELEMENT_S key; // 属性键
RLM_STR_ELEMENT_S value; // 属性值
} PROPERTIES_ENTRY;
/*地图元素结构体*/
typedef struct {
int element_id; // 元素 ID
ELEMENT_TYPE_E element_type; // 地图元素类型
int n_points; // 点数量
RLM_POINT3D_S *points; // 采样点坐标集合
int n_properties; // 属性数量
PROPERTIES_ENTRY *properties; // 属性集合
} MAP_ELEMENT_S;
/*地图信息回复结构体*/
typedef struct {
int map_id; // 地图 ID
RLM_STR_ELEMENT_S map_name; // 地图名称
int element_num; // 地图元素数量
MAP_ELEMENT_S* elements; // 地图元素数组
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_MAP_INFO_R;
/*地图列表信息回复结构体*/
typedef struct {
int n_maps;
MAP_SUMMARY *maps; // 可用地图列表
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_MAP_LIST_INFO_R;
/*删除地图信息结构体*/
typedef struct {
int map_id; // 通过 map_id 删除对应地图
} RLM_MAP_DELETE_S;
/*删除地图信息回复结构体*/
typedef struct {
int map_id; // 地图 ID
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_MAP_DELETE_R;
/*规划路径分段结构体*/
typedef struct {
PATH_TYPE_E path_type; // 路径类型
int n_waypoints; // 路径点数量
RLM_POINT2D_S* waypoints; // 规划路径点坐标
} MOWER_PLANNED_PATH;
/*规划路径结构体*/
typedef struct {
int n_pathes; // 多段路径数量
MOWER_PLANNED_PATH* pathes; // 多段规划路径数据
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_PLANNED_PATH_R;
/*路径点参数结构体*/
typedef struct {
RLM_POINT3D_S position; // 位置坐标
} PATH_POINT_S;
/*路径点集合结构体*/
typedef struct {
int n_points; // 路径点数量
PATH_POINT_S* points; // 路径点参数
} RLM_MOWING_PATH_S;
/*区域割草路径结构体*/
typedef struct {
int area_id; // 区域 ID
int n_paths; // 路径数量
RLM_MOWING_PATH_S* paths; // 路径参数
} RLM_AREA_MOWING_PATH_S;
/*割草路径回复结构体*/
typedef struct {
int n_area_paths; // 区域路径数量
RLM_AREA_MOWING_PATH_S* area_paths;// 区域路径数据
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_MOWING_PATHS_R;
/*定时时间段结构体*/
typedef struct {
int start_minute; // 开始时间(0-1440 分钟)
int end_minute; // 结束时间(最大 1440 分钟)
bool enabled; // 是否启用
int period_id; // 设备自动生成的 ID
bool edge_mowing; // 是否沿边割草
int area_ids_count; // 区域 ID 数量
int* area_ids; // 区域 ID 列表
} SCHEDULE_TIMER_PERIOD;
/*单日定时列表结构体*/
typedef struct {
DAYOFWEEK_E week; // 星期
int time_num; // 时间段数量
SCHEDULE_TIMER_PERIOD* time_period; // 定时时间段数组
} SCHEDULE_ALONE_PARAM;
// 新增排程
typedef struct {
DAYOFWEEK_E week; // 星期
int start_minute; // 开始时间(0-1440 分钟)
int end_minute; // 结束时间(最大 1440 分钟)
bool enabled; // 是否启用
bool edge_mowing; // 是否沿边割草
int area_ids_count; // 区域 ID 数量
int* area_ids; // 区域 ID 列表
} RLM_SCHEDULE_CREATE_PARAM_S;
// 更新排程
typedef struct {
DAYOFWEEK_E week; // 星期
SCHEDULE_TIMER_PERIOD time_period; // 定时时间段
} RLM_SCHEDULE_UPDATE_PARAM_S;
// 删除排程
typedef struct {
int period_id; // 时间段 ID
DAYOFWEEK_E week; // 星期
} RLM_SCHEDULE_DELETE_PARAM_S;
// 定时开关
typedef struct {
int period_id; // 时间段 ID
DAYOFWEEK_E week; // 星期
bool switch_state; // 开关状态
} RLM_SCHEDULE_SWITCH_PARAM_S;
// 定时列表回复
typedef struct {
int dey_num; // 天数(通常为 7 天)
SCHEDULE_ALONE_PARAM* timer; // 所有天的定时参数
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_SCHEDULE_LIST_TIMER_R;
/*定时状态回复结构体*/
typedef struct {
CALENDAR_OPERATION_E op; // 操作类型
DAYOFWEEK_E week; // 星期
int period_id; // 设备自动生成的 ID
int start_minute; // 开始时间(0-1440 分钟)
int end_minute; // 结束时间(最大 1440 分钟)
bool enabled; // 是否启用
bool edge_mowing; // 是否沿边割草
int area_ids_count; // 区域 ID 数量
int* area_ids; // 区域 ID 列表
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_SCHEDULE_STATUS_PARAM_R;
// 基站编号设置
typedef struct {
RLM_STR_ELEMENT_S base_station_id; // 基站编号
} RLM_BASE_STATION_CONFIG_S;
// 基站编号回复
typedef struct {
RLM_STR_ELEMENT_S base_station_id; // 基站编号
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_BASE_STATION_CONFIG_R;
// 雨天模式设置(备用)
typedef struct {
bool rainy_day_enabled; // 雨天模式开关
} RLM_RAINY_DAY_CONFIG_S;
// 雨天模式回复(备用)
typedef struct {
bool rainy_day_enabled; // 雨天模式开关
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_RAINY_DAY_CONFIG_R;
// 割草开关设置(备用)
typedef struct {
bool cutting_switch; // 割草开关设置
} RLM_CUTTING_SWITCH_CONFIG_S;
// 割草开关回复(备用)
typedef struct {
bool cutting_switch; // 割草开关
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_CUTTING_SWITCH_CONFIG_R;
// 手动速度设置(备用)
typedef struct {
MANUAL_SPEED_E speed; // 手动速度设置
} RLM_MANUAL_SPEED_CONFIG_S;
// 手动速度回复(备用)
typedef struct {
MANUAL_SPEED_E speed; // 手动速度
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_MANUAL_SPEED_CONFIG_R;
// 密码设置
typedef struct {
bool password_enabled; // 密码设置使能
RLM_STR_ELEMENT_S password; // 密码
RLM_STR_ELEMENT_S password_hint; // 密码提示
} RLM_PASSWORD_CONFIG_S;
// 密码回复
typedef struct {
bool is_password_set; // 是否已设置密码
bool password_enabled; // 密码设置使能
RLM_STR_ELEMENT_S password; // 密码
RLM_STR_ELEMENT_S password_hint; // 密码提示
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_PASSWORD_CONFIG_R;
/*设备配置回复结构体*/
typedef struct {
RLM_STR_ELEMENT_S base_station_id; // 基站编号
bool rainy_day_enabled; // 雨天模式开关(备用)
bool cutting_switch; // 割草开关设置(备用)
MANUAL_SPEED_E speed; // 手动速度设置(备用)
bool is_password_set; // 是否已设置密码
bool password_enabled; // 密码设置使能
RLM_STR_ELEMENT_S password; // 密码
RLM_STR_ELEMENT_S password_hint; // 密码提示
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_CONFIGURATION_R;
使用说明:此结构体用于一次性查询所有配置信息时使用。
/*
* 割草方向切换配置
*/
typedef struct
{
bool enabled; // 是否启用方向切换
DIRECTION_SWITCH_PERIOD_E period; // 切换周期
int interval_value; // 间隔值(多少周/天/月)
}MOW_DIRECTIONSWITCH;
/*任务参数结构体*/
typedef struct {
int area_num; // 区域数量
int *area_id; // 区域 ID
TASK_SET_MODE_E mode; // 作业模式
PATH_PATTERN_E path_mode; // 路径模式
int cutting_height; // 工作宽度(mm)
bool edge_cutting; // 是否沿边
int direction; // 作业方向(0-360°)
int speed; // 速度(m/s)
int overlap_percentage; // 重叠比例(0-100)
MOW_DIRECTIONSWITCH direction_switch; // 方向切换配置
} TASK_SETTING_PARAM;
/*任务设置回复结构体*/
typedef struct {
REQUEST_TYPE_E request_type; // 请求类型(设置/获取)
int task_num; // 任务数量
TASK_SETTING_PARAM* param; // 任务设置参数数组
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_TASK_SETTING_R;
/*割草记录信息回复结构体*/
typedef struct {
int record_id; // 割草记录 ID
RLM_MAP_INFO_R map_info; // 地图信息
int n_pathes; // 路径段数量
MOWER_PLANNED_PATH* pathes; // 规划路径点数据
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_RECORD_INFO_R;
/*
* 割草记录摘要
*/
typedef struct
{
int record_id; // 记录 ID
int start_time; // 开始时间
int end_time; // 结束时间
OPERATION_MOW_MODE_E mow_mode; // 割草模式
MOWING_RESULT_E stop_reason; // 结束原因
int n_area_names; // 区域名称数量
RLM_STR_ELEMENT_S *area_names; // 区域名称列表
int mow_area; // 割草面积,单位:平方米
}MOW_RECORD_SUMMARY;
/*割草记录列表结构体*/
typedef struct {
int n_mow_records;
MOW_RECORD_SUMMARY *mow_records; // 割草记录列表
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_MOW_RECORD_LIST_R;
/*
* 错误记录摘要
*/
typedef struct
{
int record_id; // 记录 ID
int error_time; // 错误发生时间
RLM_STR_ELEMENT_S error_reason; // 错误原因
bool is_resolved; // 是否已解决
int error_code;// 错误码
RLM_STR_ELEMENT_S error_description;// 错误描述
}ERROR_LOG_RECORD_SUMMARY;
/*错误记录列表结构体*/
typedef struct {
int n_error_log_records;
ERROR_LOG_RECORD_SUMMARY *error_log_records; // 错误记录列表
DEV_ERROR_STATUS code_error; // 错误信息
} RLM_ERROR_LOG_RECORD_LIST_R;
流程说明
功能说明
*_response() 回复。IMMEDIATE_MOWING_TASK_REQUEST:割草任务控制(按 mow_mode 区分全局/区域/沿边/遥控等),支持开始/结束。IMMEDIATE_CHARGE_TASK_REQUEST:回充任务控制,支持开始/结束。IMMEDIATE_PAUSE_TASK_REQUEST:任务暂停/恢复。DEV_REMOTE_CONTROL_TASK_REQUEST:遥控任务控制,通常在建图/编辑等场景触发。ty_rlm_immediate_mowing_task_response() 返回结构体为 RLM_IMMEDIATE_MOWING_TASK_R:
code_error:错误信息(success=true 表示成功;失败时填写 code/level/message/solutions)ctrl_switch_go:开始/结束控制(TRUE = 开始,FALSE = 结束)mow_mode:割草模式(枚举,见 OPERATION_MOW_MODE_E)area_num:区域数量(区域割草时有效)area_id:区域 ID 列表指针(长度为 area_num)ty_rlm_immediate_charge_task_response() 返回结构体为 RLM_IMMEDIATE_CHARGE_TASK_R:
code_error:错误信息ctrl_switch_charge:开始/结束回(TRUE = 开始,FALSE = 结束)ty_rlm_immediate_pause_task_response() 返回结构体为 RLM_IMMEDIATE_PAUSE_TASK_R:
code_error:错误信息ctrl_pause:暂停/恢复(TRUE = 暂停,FALSE = 恢复)流程说明
功能说明
DEV_SUBSCRIBE_REQUEST(types, timeout_sec) 声明希望接收的推送类型。ty_rlm_subscribe_response() 回复为成功的 Type 才允许推送;未订阅/订阅失败的 Type 推送会被忽略或不上报。timeout_sec 由设备侧计时管理;超时后该订阅失效,后续对应推送不再成功。RLM_SUBSCRIBE_STATUS_R:
code_error:错误信息(订阅失败时填写失败原因)status:订阅结果(TRUE = 订阅成功,FALSE = 订阅失败)流程说明
功能说明
ty_rlm_localization_push() 上报结构体为 RLM_LOCALIZATION_R:
position:机器人地理位置(RLM_GEODETICPOINT_S),包含:latitude:纬度(弧度)longitude:经度(弧度)height:高度(米)robot_pose:机器人局部位姿(RLM_POSE_S),包含:
pose:位置(RLM_POINT3D_S:x/y/z)orientation:姿态(RLM_POINT4D_S:x/y/z/w)charge_station:充电桩位姿(RLM_CHARGE_POSE_S),包含:
pose:位置(RLM_POINT3D_S:x/y/z)orientation:姿态(RLM_POINT4D_S:x/y/z/w)ready:定位是否就绪。satellite_signal_detecting:是否正在检测卫星信号。ty_rlm_task_push() 上报结构体为 RLM_TASK_DATA_R:
state:任务状态(枚举,见 TASK_STATUS_E)task_id:任务唯一 IDn_active_areas:当前活跃区域数量active_areas:当前活跃区域 ID 数组(长度为 n_active_areas)worked_boundary_uuid:已完成作业的区域 IDn_work_sequence:作业顺序数量work_sequence:作业顺序数组(长度为 n_work_sequence)mow_mode:割草模式(枚举,见 OPERATION_MOW_MODE_E)cutting_switch:割草开关状态progress:割草进度maparea:割草面积total_distance:总里程(单位:km)total_time:总时长(单位:h)ty_rlm_error_push() 上报结构体为 RLM_ERROR_DATA_R:
num:错误码数量code_error:错误信息数组(DEV_ERROR_STATUS,长度为 num)ty_rlm_battery_push() 上报结构体为 RLM_BATTERY_DATA_R:
voltage:电压(单位:V)current:电流(单位:A)battery_level:剩余电量百分比(0-100)is_charging:是否在充电状态ty_rlm_plannd_path_push() 上报结构体为 RLM_PLANNED_PATH_DATA_R:
n_path_points:路径点数量path_points:路径点坐标数组(RLM_POINT2D_S,长度为 n_path_points)current_point_index:当前点索引业务流程
SDK 是将应用端的数据转发给 App,流程中的名称请参考如下功能说明。
状态变化图
功能说明
用途:说明矢量地图编辑/记录/采样/撤销/删除等交互过程中的关键状态字段、消息类型与典型流程。
接口映射(设备侧上报):
ty_rlm_edit_status_response()ty_rlm_record_status_response()ty_rlm_sampled_point_response()ty_rlm_undo_info_response()ty_rlm_deleted_elements_response()上报结构体说明(设备侧调用接口时携带):
ty_rlm_edit_status_response() 上报结构体为 RLM_EDIT_STATUS_R:
code_error:错误信息。edit_status:编辑状态(枚举,见 MAP_EDIT_STATUS_E)。ready_to_sample:是否准备好采样打点auto_sampling_active:自动采样是否激活is_auto_sampling_complete:自动采样是否完成(是否满足闭合条件)point_count:当前记录的点数。current_element_type:当前记录的元素类型(枚举,见 ELEMENT_TYPE_E)。is_editing:是否正在编辑。is_auto_undo_active:自动撤销是否激活。ty_rlm_record_status_response() 上报结构体为 RLM_RECORDING_CONFIG_R:
code_error:错误信息status:工作状态(开始/停止,枚举见 MAP_RECORDING_WORK_STATUS_E)mode:记录模式(手动/自动/视觉,枚举见 RECORD_MODE_E)element_type:地图元素类型(枚举,见 ELEMENT_TYPE_E)ty_rlm_sampled_point_response() 上报结构体为 SAMPLED_POINT_R:
code_error:错误信息mode:采样模式(枚举,见 MAP_SAMPLE_MODE_E)point:采样点坐标(RLM_POINT3D_S:x/y/z)ty_rlm_undo_info_response() 上报结构体为 RLM_REMAINING_POINTS_R:
code_error:错误信息undo_mode:撤销模式(枚举,见 MAP_UNDO_MODE_E)remaining_points:撤销后剩余点数ty_rlm_deleted_elements_response() 上报结构体为 DELETE_ELEMENT_R:
code_error:错误信息n_area_ids:删除后的区域/元素 ID 数量area_ids:删除后的区域/元素 ID 列表指针(长度为 n_area_ids)关键状态字段说明
| 状态字段 | 初始值 | 变化时机 | 说明 |
|---|---|---|---|
| is_active | false | START_EDITING 后 | 编辑会话是否活跃 |
| ready_to_sample | false | 设备准备完成后 | 是否准备好进行采样打点 |
| auto_sampling_active | false | 开始自动采样后 | 自动采样是否激活 |
| point_count | 0 | 每次打点后 | 当前记录的点数 |
| is_auto_sampling_complete | false | 满足闭合条件后 | 是否支持自动闭合区域 |
消息类型说明
START_EDITING:进入编辑模式。RECORD_ELEMENT:开始记录元素并启用自动采样。EditStatus:编辑状态更新SampledPoint:采样点数据(接口:ty_rlm_sampled_point_response)完整流程步骤
START_EDITING,设备进入编辑模式。RECORD_ELEMENT,设备进入记录模式。ready_to_sample = true,可开始遥控。SampledPoint。EditStatus 更新 point_count。is_auto_sampling_complete = trueUNDO_LAST_POINT,设备返回 remaining_points。START_AUTO_UNDO,设备自动后撤并持续推送状态。StatusPush 更新定位坐标。SampledPoint。STOP_AUTO_SAMPLING 与 FINISH_RECORD。RECORD_ELEMENT 开始新区域绘制。撤销操作说明
START_AUTO_UNDO 启动自动撤销。EditStatus 更新点数。StatusPush 更新定位坐标。STOP_AUTO_UNDO 结束自动撤销。多区域绘制流程
STOP_AUTO_SAMPLING。FINISH_RECORD。RECORD_ELEMENT 设置新的元素类型。流程说明
功能说明
SCHEDULE_QUERY_REQUEST:查询完整排程列表,设备调用 ty_rlm_schedule_list_timer_response() 回复。SCHEDULE_CREATE _REQUEST:新增排程,设备调用 ty_rlm_schedule_status_timer_response() 回复创建结果。SCHEDULE_UPDATE_REQUEST:更新排程,设备调用 ty_rlm_schedule_status_timer_response() 回复更新结果。SCHEDULE_DELETE_PERIOD_REQUEST:删除指定时间段,设备调用 ty_rlm_schedule_status_timer_response() 回复删除结果。SCHEDULE_ENABLE_REQUEST/SCHEDULE_DISABLE_REQUEST:启用/禁用排程,设备调用 ty_rlm_schedule_status_timer_response() 回复开关结果。week、period_id 与时间段信息,并在有效时段触发本地排程任务。SCHEDULE_QUERY_REQUEST 回复接口 ty_rlm_schedule_list_timer_response() 返回结构体为 RLM_SCHEDULE_LIST_TIMER_R:
code_error:错误信息(0 表示成功;非 0 表示失败)dey_num:天数(通常为 7 天)timer:单日定时列表数组(SCHEDULE_ALONE_PARAM,长度为 dey_num),每个包含:
week:星期(枚举,见 DAYOFWEEK_E)time_num:时间段数量time_period:时间段数组(SCHEDULE_TIMER_PERIOD),每段包含:
start_minute:开始时间(0-1440 分钟)end_minute:结束时间(最大 1440 分钟)enabled:是否启用period_id:设备自动生成的 IDedge_mowing:是否沿边割草area_ids_count:区域 ID 数量area_ids:区域 ID 列表指针(长度为 area_ids_count)SCHEDULE_CREATE_REQUEST/SCHEDULE_UPDATE_REQUEST/SCHEDULE_DELETE_PERIOD_REQUEST/SCHEDULE_ENABLE_REQUEST/SCHEDULE_DISABLE_REQUEST 回复接口 ty_rlm_schedule_status_timer_response() 返回结构体为 RLM_SCHEDULE_STATUS_PARAM_R:
code_error:错误信息(0 表示成功;非 0 表示失败)op:操作类型(枚举,见 CALENDAR_OPERATION_E)week:星期(枚举,见 DAYOFWEEK_E)period_id:设备自动生成的 IDstart_minute:开始时间(0-1440 分钟)end_minute:结束时间(最大 1440 分钟)enabled:是否启用edge_mowing:是否沿边割草area_ids_count:区域 ID 数量area_ids:区域 ID 列表指针(长度为 area_ids_count)流程说明
功能说明
TaskSettingsRequest(GET/SET),SDK 解析后转为以下命令交付应用处理:
TASK_SETTINGS_GET_REQUEST:查询草坪任务设置。TASK_SETTINGS_SET_REQUEST:配置草坪任务设置。ty_rlm_task_setting_response() 回传当前设置/结果。RLM_TASK_SETTING_R:
code_error:错误信息(0 表示成功;非 0 表示失败,失败时 task_num 可能为 0)request_type:请求类型(枚举,区分设置/获取,见 REQUEST_TYPE_E)task_num:任务数量param:任务设置参数数组(TASK_SETTING_PARAM),每条包含:
area_num:区域数量area_id:区域 ID 列表mode:作业模式(枚举,见 TASK_SET_MODE_E)path_mode:路径模式(枚举,见 PATH_PATTERN_E)cutting_height:工作宽度,单位:mmedge_cutting:是否沿边direction:作业方向,范围:0-360°speed:速度(单位以面板约定为准)overlap_percentage:重叠比例,范围:0-100direction_switch:方向切换配置(MOW_DIRECTIONSWITCH),包含:
enabled:是否启用方向切换period:切换周期(枚举,见 DIRECTION_SWITCH_PERIOD_E)interval_value:间隔值(多少周/天/月)流程说明
功能说明
ty_rlm_configuration_response() 返回。CONFIGURATION_GET_REQUEST:获取配置。CONFIGURATION_SET_BASE_REQUEST:设置基准源/基站。CONFIGURATION_SET_PASSWORD_REQUEST:设置密码。CONFIGURATION_SET_RAINY_DAY_MODE_REQUEST:雨天模式(预留)。CONFIGURATION_SET_CUT_SWITCH_REQUEST:割草开关(预留)。CONFIGURATION_SET_SPEED_REQUEST:手动速度(预留)。RLM_CONFIGURATION_R:
code_error:错误信息(0 表示成功;非 0 表示失败)base_station_id:基站编号(RLM_STR_ELEMENT_S,包含 len + name)rainy_day_enabled:雨天模式开关(预留)cutting_switch:割草开关(预留)speed:手动速度(枚举,见 MANUAL_SPEED_E,预留)is_password_set:是否已设置密码password_enabled:密码设置使能password:密码(RLM_STR_ELEMENT_S)password_hint:密码提示(RLM_STR_ELEMENT_S)流程说明
功能说明
VECTOR_GET_MAP_INFO_REQUEST。ty_rlm_map_info_response() 回复。RLM_MAP_INFO_R:
code_error:错误信息(0 表示成功;非 0 表示失败,失败时 element_num 可能为 0)map_id:地图 IDmap_name:地图名称(RLM_STR_ELEMENT_S)element_num:地图元素数量elements:地图元素数组(MAP_ELEMENT_S),每个元素包含:
element_id:元素 IDelement_type:元素类型(枚举,见 ELEMENT_TYPE_E)n_points:点数量points:点坐标数组(RLM_POINT3D_S)n_properties:属性数量properties:属性数组(PROPERTIES_ENTRY,包含 key/value,均为 RLM_STR_ELEMENT_S)流程说明
功能说明
VECTOR_GET_MAP_LIST_REQUSET。ty_rlm_map_list_response() 回复。RLM_MAP_LIST_INFO_R:
code_error:错误信息(0 表示成功;非 0 表示失败,失败时 n_maps 可能为 0)n_maps:地图数量maps:地图摘要数组(MAP_SUMMARY),每条包含:
map_id:地图 IDlast_modified:最后修改时间(UTC 时间戳,秒)element_count:地图元素数量is_editing:是否处于编辑中version:地图版本(RLM_STR_ELEMENT_S)流程说明
功能说明
VECTOR_GET_RECORD_INFO_REQUSET(record_id)。ty_rlm_record_info_response() 回复。RLM_RECORD_INFO_R:
code_error:错误信息(0 表示成功;非 0 表示失败)record_id:割草记录 ID(对应请求的 record_id)map_info:地图信息(RLM_MAP_INFO_R)n_pathes:路径段数量pathes:规划路径段数组(MOWER_PLANNED_PATH),每段包含:
path_type:路径类型(枚举,见 PATH_TYPE_E)n_waypoints:路径点数量waypoints:路径点数组(RLM_POINT2D_S)流程说明
功能说明
MOW_RECORD_INFO_LIST_REQUEST 后,设备侧组织列表数据并调用 ty_rlm_log_record_list_response() 回复。RLM_MOW_RECORD_LIST_R:
code_error:错误信息(0 表示成功;非 0 表示失败,失败时 n_mow_records 可能为 0)n_mow_records:割草记录条数mow_records:割草记录摘要数组(MOW_RECORD_SUMMARY),每条包含:
record_id:记录 ID(可用于后续 VECTOR_GET_RECORD_INFO_REQUSET 拉取该条记录详情)start_time:开始时间(Unix 时间戳)end_time:结束时间(Unix 时间戳)mow_mode:割草模式(枚举,见 OPERATION_MOW_MODE_E)stop_reason:停止原因(枚举,见 MOWING_RESULT_E)n_area_names:区域名称数量area_names:区域名称列表(RLM_STR_ELEMENT_S 数组,包含 len + name)mow_area:割草面积,单位:平方米流程说明
功能说明
ERROR_RECORD_INFO_LIST_REQUEST 后,设备侧组织列表数据并调用 ty_rlm_error_log_record_list_response() 回复。RLM_ERROR_LOG_RECORD_LIST_R:
code_error:错误信息(0 表示成功;非 0 表示失败,失败时 n_error_log_records 可能为 0)n_error_log_records:错误记录条数error_log_records:错误记录摘要数组(ERROR_LOG_RECORD_SUMMARY),每条包含:
record_id:记录 IDerror_time:错误发生时间(Unix 时间戳)error_reason:错误原因(RLM_STR_ELEMENT_S,包含 len + name)is_resolved:是否已解决error_code:错误码error_description:错误描述(RLM_STR_ELEMENT_S,包含 len + name)/**
* @brief 割草机协议功能设置回调函数指针
*/
OPERATE_RET rlm_advance_function_set(IN COMPLEX_RLM_CMD_E cmd, IN void* param)
{
OPERATE_RET ret = OPRT_OK;
switch (cmd) {
case VECTOR_DELETE_ELEMENT_REQUEST: { //矢量地图-删除矢量元素
DELETE_ELEMENT_S *trans_data = (DELETE_ELEMENT_S*)param;
PR_DEBUG("rlm delete area num:%d", trans_data->n_area_ids);
for(int i = 0; i < trans_data->n_area_ids; i++) {
PR_DEBUG("rlm delete area id:%d", trans_data->area_ids[i]);
}
DELETE_ELEMENT_R deleted_elements = { 0 };
int deleted_ids [10] = { 1,2,3,4,5,6,7,8,9,10}; //测试数据
deleted_elements.n_area_ids = 10;
deleted_elements.area_ids = deleted_ids;
deleted_elements.code_error.success = TRUE;
ty_rlm_deleted_elements_response(&deleted_elements);
} break;
...
default: {
break;
}
}
return 0;
}
/**
* @brief 割草机协议功能查询回调函数指针
*/
OPERATE_RET rlm_advance_function_query(IN COMPLEX_RLM_CMD_E cmd, IN void* param)
{
OPERATE_RET ret = OPRT_OK;
switch (cmd) {
case CONFIGURATION_GET_REQUEST: { // 机器人获取配置
PR_DEBUG("config request");
int *trans_data = (int*)param;
if(trans_data[0] == CONFIG_UNKNOWN) { //查询所有配置项
RLM_CONFIGURATION_R config_result = {0};
config_result.speed = robot_param.configuration.speed;
config_result.rainy_day_enabled = robot_param.configuration.rainy_day_enabled;
config_result.cutting_switch = robot_param.configuration.cutting_switch;
config_result.base_station_id.name = robot_param.configuration.base_station_id;
config_result.base_station_id.len = strlen(robot_param.configuration.base_station_id);
config_result.is_password_set = robot_param.configuration.is_password_set;
config_result.password_enabled = robot_param.configuration.password_enabled;
if (robot_param.configuration.is_password_set && robot_param.configuration.password[0] != '\0') {
config_result.password.name = robot_param.configuration.password;
config_result.password.len = strlen(robot_param.configuration.password);
} else {
config_result.password.name = "1234";
config_result.password.len = 4;
config_result.is_password_set = TRUE;
}
config_result.password_hint.name = robot_param.configuration.password_hint;
config_result.password_hint.len = strlen(robot_param.configuration.password_hint);
config_result.code_error.success = TRUE;
ty_rlm_configuration_response(&config_result);
} else if(trans_data[0] == RAINY_DAY_MODE){ //查询雨天模式设置
RLM_RAINY_DAY_CONFIG_R config_result = {0};
config_result.rainy_day_enabled = robot_param.configuration.rainy_day_enabled;
config_result.code_error.success = TRUE;
ty_rlm_rainy_day_config_response(&config_result);
} else if(trans_data[0] == MANUAL_SPEED){ //查询手动速度设置
RLM_MANUAL_SPEED_CONFIG_R config_result = {0};
config_result.speed = robot_param.configuration.speed;
config_result.code_error.success = TRUE;
ty_rlm_manual_speed_config_response(&config_result);
} else if(trans_data[0] == BASE_STATION){ //查询基准源设置
RLM_BASE_STATION_CONFIG_R config_result = {0};
config_result.base_station_id.name = robot_param.configuration.base_station_id;
config_result.base_station_id.len = strlen(robot_param.configuration.base_station_id);
config_result.code_error.success = TRUE;
ty_rlm_base_station_config_response(&config_result);
} else if(trans_data[0] == CUTTING_SWITCH){ //查询割草开关设置
RLM_CUTTING_SWITCH_CONFIG_R config_result = {0};
config_result.cutting_switch = robot_param.configuration.cutting_switch;
config_result.code_error.success = TRUE;
ty_rlm_cutting_switch_config_response(&config_result);
} else if(trans_data[0] == PASSWORD){ //查询密码设置
RLM_PASSWORD_CONFIG_R config_result = {0};
config_result.is_password_set = robot_param.configuration.is_password_set;
config_result.password_enabled = robot_param.configuration.password_enabled;
if (robot_param.configuration.is_password_set && robot_param.configuration.password[0] != '\0') {
config_result.password.name = robot_param.configuration.password;
config_result.password.len = strlen(robot_param.configuration.password);
} else {
config_result.password.name = "1234";
config_result.password.len = 4;
config_result.is_password_set = TRUE;
}
config_result.password_hint.name = robot_param.configuration.password_hint;
config_result.password_hint.len = strlen(robot_param.configuration.password_hint);
config_result.code_error.success = TRUE;
ty_rlm_password_config_response(&config_result);
}
} break;
default: {
PR_ERR("cmd data query not support now:%d", cmd);
ret = OPRT_NOT_SUPPORTED;
} break;
}
return ret;
}
// 上电主流程
int main(int argc, char* argv[])
{
OPERATE_RET ret = 0;
ret = ty_sys_start();
if (ret != OPRT_OK) {
PR_ERR("[%s, %d] sys start failed", __FUNCTION__, __LINE__);
return ret;
}
ty_rlm_complex_func_register(rlm_advance_function_set, rlm_advance_function_query); //注册割草机高级协议回调
}
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈