syntax = "proto3";
package cmvr.config;

message Ti5MotorConfig {
  int32 id = 1;
  string joint_name = 2;
  double limit_q_lb = 3;
  double limit_q_ub = 4;
  double limit_qd = 5;
}

message SocketCanConfig {
  string dev_id = 1;
  int32 channel_id = 2;
}

message EtherCATConfig {
  string master_id = 1;
  int32 cycle_us = 2;
}

enum MotorBusType {
  MOTOR_BUS_UNKNOWN = 0;
  MOTOR_BUS_CAN = 1;
  MOTOR_BUS_ETHERCAT = 2;
  MOTOR_BUS_MUJOCO = 3;
}

message MotorGroupConfig {
  string id = 1;
  MotorBusType bus_type = 2;
  string tool_frame = 3;

  oneof bus_config {
    SocketCanConfig can = 10;
    EtherCATConfig ethercat = 11;
  }

  repeated Ti5MotorConfig motors = 20;
}

message MotorConfig {
  string id = 1;
  repeated MotorGroupConfig motor_groups = 2;
}
message MotorRootConfig {
  MotorConfig motor = 1;
}
