syntax = "proto3";
package aimdk.protocol;

import public "aimdk/protocol/common/rpc.proto";
import public "aimdk/protocol/common/header.proto";
import public "aimdk/protocol/hal/hand/inspire.proto";
import public "aimdk/protocol/hal/hand/jodell.proto";
import public "aimdk/protocol/hal/hand/agi_claw.proto";
import public "aimdk/protocol/hal/hand/agi_hand.proto";
import public "aimdk/protocol/hal/hand/agi_o10_hand.proto";

message SingleHandState {
  oneof hand {
    InspireHand inspire = 1;              // 因时手
    ClawHand claw = 2;                    // jodell夹爪手
    AgiClawHandState agi_claw_state = 3;  // agi自研夹爪状态
    AgibotHandState agi_hand = 4;
    AgibotO10HandState agi_o10_hand = 5;
  }
}

message SingleHandCommand {
  oneof hand {
    InspireHand inspire = 1;              // 因时手
    ClawHand claw = 2;                    // jodell夹爪手
    AgiClawHandCommand agi_claw_cmd = 3;  // agi自研夹爪命令
    AgibotHandCommand agi_hand = 4;
    AgibotO10HandCommand agi_o10_hand = 5;
  }
}

message HandState {
  SingleHandState left = 1;   // 左手状态
  SingleHandState right = 2;  // 右手状态
}

message HandCommand {
  SingleHandCommand left = 1;   // 左手指令
  SingleHandCommand right = 2;  // 右手指令
}

// 获取机器人手部状态响应
message HandStateResponse {
  ResponseHeader header = 1;  // 响应头
  HandState data = 2;         // 手部状态
}

// 设置机器人手部控制请求
message HandCommandRequest {
  RequestHeader header = 1;  // 请求头
  HandCommand data = 2;      // 手部控制
}
