/**
 * @file agv_service.proto
 * @brief 定义AGV服务的gRPC接口，聚合所有AGV相关命令。
 *        服务端实现类为 gRPCAGVServiceImpl。
 */
syntax = "proto3";

import "cmvr/api/agv_command.proto";

package cmvr.api;

service AgvService {
  // 基本控制
  rpc GetStatusInfo(GetAgvStatusInfoCommand.Request) returns (GetAgvStatusInfoCommand.Feedback);

  rpc GetBatteryStatus(RobotStatusBatteryCommand.Request) returns (RobotStatusBatteryCommand.Feedback);

  rpc GetRobotLocation(RobotStatusLocCommand.Request) returns (RobotStatusLocCommand.Feedback);

  rpc RobotConfigDownloadMap(RobotConfigDownloadMapCommand.Request) returns (RobotConfigDownloadMapCommand.Feedback);


  rpc GetMapStatus(RobotStatusMapCommand.Request) returns (RobotStatusMapCommand.Feedback);


  rpc RobotConfigUploadMap(RobotConfigUploadMapCommand.Request) returns (RobotConfigUploadMapCommand.Feedback);

  // 抢占机器人控制权
  rpc RobotConfigLock(RobotConfigLockCommand.Request) returns (RobotConfigLockCommand.Feedback);

  // 查询当前控制权所有者
  rpc GetCurrentLockStatus(RobotStatusCurrentLockCommand.Request) returns (RobotStatusCurrentLockCommand.Feedback);

  // 开环速度运动控制
  rpc RobotMotionControl(RobotMotionControlCommand.Request) returns (RobotMotionControlCommand.Feedback);

  // 切换载入地图 命令码2022
  rpc RobotLoadMap(RobotLoadMapCommand.Request) returns (RobotLoadMapCommand.Feedback);


  // 查询地图载入状态 命令码1022
  rpc QueryLoadMapStatus(RobotQueryLoadMapStatusCommand.Request) returns (RobotQueryLoadMapStatusCommand.Feedback);


  // 查询当前地图站点列表 命令码1301
  rpc QueryStationList(QueryStationListCommand.Request) returns (QueryStationListCommand.Feedback);


  // 指定路径导航 命令码3066
  rpc RobotGoTargetList(RobotGoTargetListCommand.Request) returns (RobotGoTargetListCommand.Feedback);

  // 查询当前导航状态 1020 robot_status_task_req
  // 1020 查询当前实时导航 robot_status_task_req
  rpc RobotStatusTaskCurrent(RobotStatusTaskCurrentCommand.Request) returns (RobotStatusTaskCurrentCommand.Feedback);

  // 批量查询任务状态 1110 robot_status_task_status_package_req
  rpc RobotStatusTaskPackage(RobotStatusTaskPackageCommand.Request) returns (RobotStatusTaskPackageCommand.Feedback);


  // 3051 单点站点自动规划导航 robot_task_gotarget_req 0x0BEB
  rpc RobotGoTarget(RobotGoTargetCommand.Request) returns (RobotGoTargetCommand.Feedback);



  // 0x07D0 停止开环运动
  rpc RobotControlStop(RobotControlStopCommand.Request) returns (RobotControlStopCommand.Feedback);

  // 暂停当前导航任务 命令码 3001 (0x0BB9)
  rpc RobotTaskPause(RobotTaskPauseCommand.Request) returns (RobotTaskPauseCommand.Feedback);
  // 继续当前导航任务 命令码 3002 (0x0BBA)
  rpc RobotTaskResume(RobotTaskResumeCommand.Request) returns (RobotTaskResumeCommand.Feedback);
  // 取消当前导航任务 命令码 3003 (0x0BBB)
  rpc RobotTaskCancel(RobotTaskCancelCommand.Request) returns (RobotTaskCancelCommand.Feedback);
}