syntax = "proto3";
package aimdk.protocol;

import public "aimdk/protocol/common/rpc.proto";

/**
 * @brief 电源重置请求
 */
message PowerResetReq {
  // 消息头
  RequestHeader header = 1;

  // 延迟关机时间:0-255s
  uint32 delay_shutdown_time = 2;
}

enum DeviceType {
  wheel = 0;
  steer = 1;
  waist = 2;
  lift = 3;
  jaka = 4;
  upper = 5;
}

/**
 * @brief 下电请求
 */
 message ShutDownReq {
  // 消息头
  RequestHeader header = 1;
  //下电设备
  DeviceType device_type = 2;
  // 延迟关机时间:5-255s
  uint32 delay_shutdown_time = 3;
}

/**
 * @brief 设备供电状态请求
 */
 message GetDevicePowerStateReq {
  // 消息头
  RequestHeader header = 1;
  //设备
  DeviceType device_type = 2;
}

/**
 * @brief 获取设备供电状态请求
 */
 message GetDevicePowerStateResp {
  // 消息头
  RequestHeader header = 1;
  //设备
  DeviceType device_type = 2;
  //供电状态
  uint32 is_power = 3;
}


/**
 * @brief 由 aimrt_hal 中提供的电源重置服务
 * 目前仅提供a2w的重置
 */
service HalPowerService {
  /**
   * @brief 获取当前BMS状态信息。
   * @param PowerResetReq: 重置电源请求
   * @return CommonResponse
   */
  rpc ResetPower(PowerResetReq) returns (CommonResponse);
  /**
   * @brief 电机下电接口
   * @param ShutDownReq: 下电请求
   * @return CommonResponse
   */
  rpc ShutDownDevice(ShutDownReq) returns (CommonResponse);
  /**
   * @brief 获取电机供电状态
   * @param GetDevicePowerStateReq: 请求
   * @return GetDevicePowerStateResp: 响应
   */
  rpc GetDevicePowerState(GetDevicePowerStateReq) returns (GetDevicePowerStateResp);
}