syntax = "proto3";

option csharp_namespace = "Leica.Spider.LoggingServer.Logging";

package spider.loggingserver.logging;

message CreateNetworkServerRequest {
    string host_name = 1;
    string password = 2;
    bool is_enabled = 3;
}
message CreateNetworkServerResponse {
    int32 network_server_id = 1;
}

message UpdateNetworkServerRequest {
    int32 network_server_id = 1;
    string host_name = 2;
    string password = 3;
    bool is_enabled = 4;
}
message UpdateNetworkServerResponse {
}

message DeleteNetworkServerRequest {
    int32 network_server_id = 1;
}
message DeleteNetworkServerResponse {
}

message ReconnectNetworkServersRequest {
}
message ReconnectNetworkServersResponse {
}

service NetworkServerManagement {
    rpc CreateNetworkServer (CreateNetworkServerRequest) returns (CreateNetworkServerResponse);
    rpc UpdateNetworkServer (UpdateNetworkServerRequest) returns (UpdateNetworkServerResponse);
    rpc DeleteNetworkServer (DeleteNetworkServerRequest) returns (DeleteNetworkServerResponse);
    rpc ReconnectNetworkServers (ReconnectNetworkServersRequest) returns (ReconnectNetworkServersResponse);
}

enum DisconnectReason {
    NONE = 0;

    // Those status codes here are a 1:1 copy of the ones in the SpiderRtkRoverStatus.StatusCode in Spider
    // but only list out the disconnect variants
    CONNECTION_ENDED_BY_USER = 3;
    CONNECTION_ENDED_BY_OPERATOR = 4;
    CONNECTION_ENDED_BY_ACCIDENT = 5;

    ROVER_REJECTED_DUE_TO_DISTANCE = 14;
    CONNECTION_ENDED_BY_HEARTBEAT_CHECK = 19;

    REJECTED_NOT_AUTHORIZED = 1000;
    REJECTED_AUTH_MODE_NOT_SUPPORTED = 1001;
    REJECTED_GPUID = 1002;
    REJECTED_INCORRECT_PASSWORD = 1003;
    REJECTED_INVALID_COORDINATE = 1004;
    REJECTED_NO_COORDINATE = 1005;
    REJECTED_NO_HOST_AND_USER_INFO_RECEIVED = 1006;
    REJECTED_NO_HOST_INFO_RECEIVED = 1007;
    REJECTED_NO_AUTHENTICATION_OR_MOUNTPOINT_RECEIVED = 1008;
    REJECTED_NO_MOUNTPOINT_RECEIVED = 1009;
    REJECTED_NO_PHONE_NUMBER_RECEIVED = 1010;
    REJECTED_OUTSIDE_REGION = 1011;
    REJECTED_SBC_FALLBACK = 1012;
    REJECTED_TOO_MANY_AUTHORIZATION_REQUESTS = 1013;
    REJECTED_TOO_MANY_CONCURRENT_CONNECTION_REQUESTS = 1014;
    REJECTED_TOO_MANY_CONCURRENT_CONNECTIONS = 1015;
    REJECTED_UNKNOWN_USER = 1016;
    REJECTED_USER_EXPIRED = 1017;
    REJECTED_USER_NAME_NOT_RECEIVED = 1018;
    REJECTED_SMART_ROVER_INVALID_HANDSHAKE_DATA = 1019;
    REJECTED_SMART_ROVER_NO_SMART_NET = 1020;
    REJECTED_SMART_ROVER_NOT_AUTHORIZED = 1021;
    REJECTED_TOO_MANY_CONCURRENT_SUBSCRIPTION_CONNECTIONS = 1022;
    REJECTED_GPUID_OR_GPGGA = 1023;
    REJECTED_INVALID_OR_OUT_OF_RANGE_COORDINATE = 1024;
    REJECTED_CONNECTION_OVERLOAD = 1025;
    REJECTED_DENIAL_OF_SERVICE = 1026;
    REJECTED_TCP_ACCEPT_FAILED = 1027;
    REJECTED_DEVICE_AUTH_CODE_INVALID_HANDSHAKE_DATA = 1028;
    REJECTED_DEVICE_AUTH_CODE_UNKNOWN_SENSOR_ID = 1029;
    REJECTED_INVALID_SENSOR_CODE = 1030;
    REJECTED_INVALID_SENSOR_FORMAT = 1031;
    REJECTED_INVALID_SENSOR_HANDSHAKE_DATA = 1032;
}
