/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

syntax = "proto3";

option java_package = "com.android.server.adb.protos";
option java_outer_classname = "DevicesProto";

package adb.proto;

// This mirrors adb.h's "enum ConnectionState"
enum ConnectionState {
    ANY = 0;
    CONNECTING = 1;
    AUTHORIZING = 2;
    UNAUTHORIZED = 3;
    NOPERMISSION = 4;
    DETACHED = 5;
    OFFLINE = 6;
    BOOTLOADER = 7;
    DEVICE = 8;
    HOST = 9;
    RECOVERY = 10;
    SIDELOAD = 11;
    RESCUE = 12;
}

enum ConnectionType {
    UNKNOWN = 0;
    USB = 1;
    SOCKET = 2;
}

message Device {
    string serial = 1;
    ConnectionState state = 2;
    string bus_address = 3;
    string product = 4;
    string model = 5;
    string device = 6;
    ConnectionType connection_type = 7;
    int64 negotiated_speed = 8;
    int64 max_speed = 9;
    int64 transport_id = 10;
}

message Devices {
    repeated Device device = 1;
}
