syntax = "proto3";

import "cmvr/api/common.proto";

package cmvr.api;

enum DeviceType {
    AGV = 0;
    Battery = 1;
    Camera = 2;
    DexHand = 3;
    Gripper = 4;
    Microphone = 5;
    Robot = 6;
    Speaker = 7;
    Unknown = 20;
}

message DeviceList {
    string device_id = 1;
    DeviceType device_type = 2;
}

message GetSystemInfoCommand {
    message Request {}

    message Feedback {
        CommandHeader.Feedback header = 1;
        string system_name = 2;
        string version = 3;
        string description = 4;
        string os = 5;
        string kernel_version = 6;
        string architecture = 7;
    }
}

message GetSystemStatusCommand {
    message Request {}

    message Feedback {
        CommandHeader.Feedback header = 1;
        float cpu_usage = 2;
        float mem_total_mb = 3;
        float mem_used_mb = 4;
        float disk_total_gb = 5;
        float disk_used_gb = 6;
        repeated DeviceList device_list = 7;
    }
}

message UpdateParamsCommand {
    message Request {
        CommandHeader.Request header = 1;
        repeated ConfigParam params = 2;
    }

    message Feedback {
        CommandHeader.Feedback header = 1;
    }
}


message StopAllCommand {
    message Request {
        CommandHeader.Request header = 1;
    }

    message Feedback {
        CommandHeader.Feedback header = 1;
    }
}